[js] clean up front-end assets and fix test
diff --git a/.gitignore b/.gitignore
index 1c5e235..b7d80e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,6 @@
 *.sw*
 
 # Created by Builder
-examples/build
 web-entry
 test/build
 weex_tmp
@@ -26,22 +25,6 @@
 *.pid
 *.seed
 
-# e2e test
-html5/test/e2e/reports
-html5/test/e2e/screenshots
-html5/test/e2e/logs
-
-# render test
-html5/test/render/vue/data/build
-examples/vue/test/
-
-# Created by Weex Web Packer
-html5/browser/extend/packer.js
-html5/render/browser/extend/packer.js
-
-# Created by weex-vue-bundle-util
-weex-vue-plugins.js
-
 android/playground/app/gradlew
 android/playground/app/gradlew.bat
 android/playground/app/gradle/wrapper/gradle-wrapper.jar
diff --git a/build/rollup.browser.common.config.js b/build/rollup.browser.common.config.js
deleted file mode 100644
index dd8c41c..0000000
--- a/build/rollup.browser.common.config.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-import { rollup } from 'rollup'
-import postcss from 'rollup-plugin-postcss'
-import json from 'rollup-plugin-json'
-import eslint from 'rollup-plugin-eslint'
-import nodeResolve from 'rollup-plugin-node-resolve'
-import commonjs from 'rollup-plugin-commonjs'
-import buble from 'rollup-plugin-buble'
-
-const pkg = require('../package.json')
-const version = pkg.subversion.browser
-const date = new Date().toISOString().split('T')[0].replace(/\-/g, '')
-const banner = `\
-console.log('START WEEX HTML5: ${version} Build ${date}');
-`
-
-export default {
-  entry: './html5/render/browser/index.js',
-  dest: './dist/browser.common.js',
-  banner,
-  format: 'cjs',
-  plugins: [
-    postcss(),
-    json(),
-    eslint({
-      exclude: ['./package.json', '**/*.css']
-    }),
-    nodeResolve({
-      jsnext: true,
-      main: true,
-      browser: true
-    }),
-    commonjs(),
-    buble()
-  ]
-}
diff --git a/build/webpack.examples.config.js b/build/webpack.examples.config.js
deleted file mode 100644
index 5d8b25d..0000000
--- a/build/webpack.examples.config.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-var path = require('path');
-var fs = require('fs');
-var webpack = require('webpack');
-// var bannerWebpackPlugin = require('./examples-banner-plugin')
-
-var entry = {};
-var bannerExcludeFiles = [];
-
-function walk(dir) {
-  dir = dir || '.'
-  var directory = path.join(__dirname, '../examples', dir);
-  fs.readdirSync(directory)
-    .forEach(function(file) {
-      var fullpath = path.join(directory, file);
-      var stat = fs.statSync(fullpath);
-      var extname = path.extname(fullpath);
-      if (stat.isFile() && (extname === '.we' || extname === '.vue')) {
-        var name = path.join('examples', 'build', dir, path.basename(file, extname));
-        entry[name] = fullpath + '?entry=true';
-        if (extname === '.we') {
-          bannerExcludeFiles.push(name + '.js')
-        }
-      } else if (stat.isDirectory() && file !== 'build' && file !== 'include') {
-        var subdir = path.join(dir, file);
-        walk(subdir);
-      }
-    });
-}
-
-walk();
-
-var banner = '// { "framework": "Vue" }\n'
-
-var bannerPlugin = new webpack.BannerPlugin(banner, {
-  raw: true,
-  exclude: bannerExcludeFiles
-})
-
-module.exports = {
-  entry: entry,
-  output : {
-    path: '.',
-    filename: '[name].js'
-  },
-  module: {
-    loaders: [
-      {
-        test: /\.(we|vue)(\?[^?]+)?$/,
-        loader: 'weex'
-      }
-    ]
-  },
-  plugins: [bannerPlugin]
-}
diff --git a/build/webpack.examples.web.config.js b/build/webpack.examples.web.config.js
deleted file mode 100644
index c28db57..0000000
--- a/build/webpack.examples.web.config.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var path = require('path');
-var fs = require('fs-extra');
-var webpack = require('webpack');
-
-var entry = {};
-var bannerExcludeFiles = [];
-var webSrcDirectory = path.join(__dirname, '../examples/web-entry');
-
-function getEntryFileContent (entryPath, vueFilePath) {
-  const relativePath = path.relative(path.join(entryPath, '../'), vueFilePath);
-  return 'var App = require(\'' + relativePath + '\')\n'
-    + 'App.el = \'#root\'\n'
-    + 'new Vue(App)\n'
-}
-
-function walk(dir) {
-  dir = dir || '.';
-  var directory = path.join(__dirname, '../examples', dir);
-  var entryDirectory = path.join(webSrcDirectory, dir);
-  fs.readdirSync(directory)
-    .forEach(function(file) {
-      var fullpath = path.join(directory, file);
-      var stat = fs.statSync(fullpath);
-      var extname = path.extname(fullpath);
-      if (stat.isFile() && extname === '.vue') {
-        var entryFile = path.join(entryDirectory, path.basename(file, extname) + '.js');
-        fs.outputFileSync(entryFile, getEntryFileContent(entryFile, fullpath));
-        var name = path.join('examples', 'build/vue-web', /*path.relative('vue', dir)*/dir, path.basename(file, extname));
-        entry[name] = entryFile + '?entry=true';
-      } else if (stat.isDirectory() && file !== 'build' && file !== 'include') {
-        var subdir = path.join(dir, file);
-        walk(subdir);
-      }
-    });
-}
-
-walk();
-
-var banner = '// NOTE: for vue2.0 and platform:web only.\n'
-
-var bannerPlugin = new webpack.BannerPlugin(banner, {
-  raw: true,
-  exclude: bannerExcludeFiles
-})
-
-module.exports = {
-  entry: entry,
-  output: {
-    path: '.',
-    filename: '[name].js'
-  },
-  module: {
-    loaders: [
-      {
-        test: /\.js$/,
-        loaders: ['babel-loader'],
-        exclude: /node_modules/
-      }, {
-        test: /\.vue(\?[^?]+)?$/,
-        loaders: ['vue-loader']
-      }
-    ]
-  },
-  vue: {
-    optimizeSSR: false,
-    /**
-     * important! should use postTransformNode to add $processStyle for
-     * inline style prefixing.
-     */
-    compilerModules: [
-      {
-        postTransformNode: el => {
-          el.staticStyle = `$processStyle(${el.staticStyle})`
-          el.styleBinding = `$processStyle(${el.styleBinding})`
-        }
-      }
-    ],
-  },
-  plugins: [bannerPlugin]
-}
diff --git a/examples/.gitignore b/examples/.gitignore
deleted file mode 100644
index 2642f80..0000000
--- a/examples/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-local-*
-archive/
\ No newline at end of file
diff --git a/examples/README.md b/examples/README.md
deleted file mode 100644
index 6df102f..0000000
--- a/examples/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Example Guide
-
-## Add an example
-
-* Add a file `newExample.we` copied from [template](./template.we) with [UI Gallery](#ui-gallery) (recommended).
-* In [index.we](./index.we), add an item `{name: 'newExample', title: 'New Example'}` for array `data.cases`
-
-## Rule
-
-0. File name is dash (`-`) separated words, and each word is lower case, e.g. `index.we`, `style-demo.we`
-0. ***DO NOT*** use [builtin components](../doc/components) name as file name, it may fail to run. 
-
-## UI Gallery
-
-> Inspired by Bootstrap.
-
-We import a simple UI Gallery for a consistent UI style. See [UI Gallery Example](./showcase/ui.we) for details.
-
-<img src="http://gtms04.alicdn.com/tps/i4/TB1_v6FMpXXXXXfXXXX7XWpVpXX-278-519.gif" width="160" /> <img src="http://gtms03.alicdn.com/tps/i3/TB13LTOMpXXXXceXXXXIxc4RpXX-944-1316.png" width="214" />
-
-Reference: https://www.npmjs.com/package/weex-components
diff --git a/examples/vanilla/index.js b/examples/vanilla/index.js
deleted file mode 100644
index 6ab399f..0000000
--- a/examples/vanilla/index.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// { "framework": "Vanilla" }
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var body = document.createElement('div', {
-  classStyle: { alignItems: 'center', marginTop: 120 }
-})
-
-var image = document.createElement('image', {
-  attr: { src: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png' },
-  classStyle: { width: 360, height: 82 }
-})
-
-var text = document.createElement('text', {
-  attr: { value: 'Hello World' },
-  classStyle: { fontSize: 48 }
-})
-
-body.appendChild(image)
-body.appendChild(text)
-document.documentElement.appendChild(body)
-
-body.addEvent('click', function () {
-  text.setAttr('value', 'Hello Weex')
-})
diff --git a/examples/vue/animation.vue b/examples/vue/animation.vue
deleted file mode 100644
index ef6afcf..0000000
--- a/examples/vue/animation.vue
+++ /dev/null
@@ -1,149 +0,0 @@
-<template>
-  <div>
-    <panel title="Transform" type="primary">
-      <button value="Rotate" @click.native="rotate" type="primary" size="middle"></button>
-      <button value="Scale" @click.native="scale" type="primary" size="middle" style="margin-top:12px;"></button>
-      <button value="Translate" @click.native="translate" type="primary" size="middle"
-                 style="margin-top:12px;"></button>
-      <button value="Transform" @click.native="transform" type="success" size="middle"
-                 style="margin-top:12px;"></button>
-    </panel>
-
-    <panel title="Others" type="primary">
-      <button value="BgColor" @click.native="color" type="primary" size="middle"></button>
-      <button value="Opacity" @click.native="opacity" type="primary" size="middle"
-                 style="margin-top:12px;"></button>
-      <button value="All" @click.native="composite" type="success" size="middle" style="margin-top:12px;"></button>
-    </panel>
-
-    <div ref="block" class="block" :style="{ transformOrigin: transformOrigin }">
-      <text class="block-txt">Anim</text>
-    </div>
-  </div>
-</template>
-
-<script>
-  var animation = weex.requireModule('animation')
-  module.exports = {
-    data: function () {
-      return {
-        transformOrigin: 'center center',
-        current_rotate: 0,
-        current_scale: 1,
-        current_color: '#FF0000',
-        current_opacity: 1,
-        current_translate: '',
-        current_transform: '',
-        isStop: true
-      }
-    },
-    components: {
-      panel: require('./include/panel.vue'),
-      button: require('./include/button.vue')
-    },
-    methods: {
-      anim: function(styles, timingFunction, duration, callback) {
-        animation.transition(this.$refs.block, {
-          styles: styles,
-          timingFunction: timingFunction,
-          duration: duration
-        }, callback);
-      },
-      rotate: function() {
-        var self = this;
-        self.current_rotate += 90;
-        self.anim({
-          transform: 'rotate(' + self.current_rotate + 'deg)'
-        }, 'ease-in-out', 500, function() {
-          if (self.current_rotate === 360) {
-            self.current_rotate = 0;
-          }
-          else {
-            self.rotate();
-          }
-        });
-      },
-      translate: function() {
-        this.current_translate = this.current_translate ? '' : 'translate(50%, 50%)';
-        this.anim({
-          transform: this.current_translate
-        }, 'ease-in', 500, function() {
-        });
-      },
-      scale: function() {
-        var self = this;
-        self.current_scale = self.current_scale === 2 ? .5 : 2
-        self.anim({
-          transform: 'scale(' + self.current_scale + ')'
-        }, 'linear', 500, function() {
-        });
-      },
-      transform: function() {
-        var self = this;
-        this.current_transform = this.current_transform ? '' : 'rotate(45deg) scale(1.5)';
-        this.anim({
-          transform: this.current_transform,
-          transformOrigin: 'left top'
-        }, 'ease-out', 500, function() {
-          if (self.current_transform !== '') {
-            self.anim({
-              transform: 'rotate(-90deg) scale(1.2)',
-              transformOrigin: 'left top'
-            }, 'ease-out', 500, function() {
-            })
-          }
-          else {
-
-          }
-        });
-      },
-      composite: function() {
-        var self = this;
-        self.current_transform = self.current_transform ? '' : 'rotate(45deg) scale(1.5) translate(50%, 50%)';
-        self.current_color = self.current_color === '#F0AD4E' ? '#D9534F' : '#F0AD4E';
-        self.current_opacity = self.current_opacity === 1 ? 0.1 : 1;
-        this.anim({
-          transform: this.current_transform,
-          transformOrigin: 'left top',
-          backgroundColor: self.current_color,
-          opacity: self.current_opacity
-        }, 'ease-out', 1000, function() {
-        });
-      },
-      color: function() {
-        var self = this;
-        self.current_color = self.current_color === '#F0AD4E' ? '#D9534F' : '#F0AD4E';
-        self.anim({
-          backgroundColor: self.current_color
-        }, 'linear', 500, function() {
-        });
-      },
-      opacity: function() {
-        var self = this;
-        self.current_opacity = self.current_opacity === 1 ? 0.1 : 1;
-        self.anim({
-          opacity: self.current_opacity
-        }, 'linear', 500, function() {
-        });
-      }
-    }
-  };
-</script>
-
-<style scoped>
-  .block {
-    position: absolute;
-    width: 250px;
-    height: 250px;
-    top: 300px;
-    left: 400px;
-    background-color: #F0AD4E;
-    align-items: center;
-    justify-content: center;
-  }
-
-  .block-txt {
-    color: #FFFFFF;
-    font-size: 70px;
-  }
-</style>
diff --git a/examples/vue/components/a.vue b/examples/vue/components/a.vue
deleted file mode 100644
index ff0149b..0000000
--- a/examples/vue/components/a.vue
+++ /dev/null
@@ -1,24 +0,0 @@
-<template>
-  <scroller>
-    <panel title="Hyperlink" type="primary">
-      <a href="http://alibaba.github.io/weex/index.html">
-        <tip type="info" style="margin-bottom: 20px;"
-          value="Click me to see how 'A' element opens a new world."></tip>
-      </a>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      tip: require('../include/tip.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/components/countdown.vue b/examples/vue/components/countdown.vue
deleted file mode 100644
index 487d1c4..0000000
--- a/examples/vue/components/countdown.vue
+++ /dev/null
@@ -1,88 +0,0 @@
-<template>
-  <scroller>
-    <panel title="Countdown" type="primary">
-      <countdown
-        @tick="tick($event, 'countdown1')"
-        :remain="countdown1.remain"
-        style="width: 750; margin-top: 20; margin-bottom: 20;">
-        <text class="ctno1">{{countdown1.time.D}}</text>
-        <text class="ctno1" style="background-color: #FFFFFF; color: #AAAAAA;">day(s)</text>
-        <text class="ctno1">{{countdown1.time.hh}}</text>
-        <text class="ctno1" style="background-color: #FFFFFF; color: #AAAAAA;">hour(s)</text>
-        <text class="ctno1">{{countdown1.time.mm}}</text>
-        <text class="ctno1" style="background-color: #FFFFFF; color: #AAAAAA;">minute(s)</text>
-        <text class="ctno1">{{countdown1.time.ss}}</text>
-        <text class="ctno1" style="background-color: #FFFFFF; color: #AAAAAA;">second(s)</text>
-      </countdown>
-
-      <countdown
-        @tick="tick($event, 'countdown2')"
-        :remain="countdown2.remain"
-        style="width: 600;">
-        <text class="ctno2">{{countdown2.time.MM}}</text>
-        <text class="ctno2" style="background-color: #FFFFFF; color: #AAAAAA;">:</text>
-        <text class="ctno2">{{countdown2.time.ss}}</text>
-      </countdown>
-    </panel>
-  </scroller>
-</template>
-
-<style scoped>
-  .ctno1 {
-    border-radius: 8;
-    padding-top: 6;
-    padding-bottom: 6;
-    padding-right: 4;
-    padding-left: 4;
-    margin-left: 2;
-    margin-right: 2;
-    background-color: rgb(242, 222, 222);
-    color: rgb(169, 68, 66);
-  }
-
-  .ctno2 {
-    border-radius: 8;
-    padding-top: 30;
-    padding-bottom: 30;
-    padding-left: 16;
-    padding-right: 16;
-    background-color: rgb(217, 237, 247);
-    color: rgb(49, 112, 143);
-    text-align: center;
-    font-size: 40;
-  }
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        countdown1: {
-          remain: 5000,
-          time: {
-            D: '0',
-            hh: '00',
-            mm: '00',
-            ss: '00'
-          }
-        },
-        countdown2: {
-          remain: 5000,
-          time: {
-            MM: '0',
-            ss: '0'
-          }
-        }
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      countdown: require('../include/countdown.vue')
-    },
-    methods: {
-      tick: function (e, k) {
-        this[k].time = JSON.parse(JSON.stringify(e))
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/components/image.vue b/examples/vue/components/image.vue
deleted file mode 100644
index 74b7430..0000000
--- a/examples/vue/components/image.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-<template>
-  <scroller>
-    <panel title="width x height" type="primary">
-      <tip type="warning" value="Weex screen width is 750" style="margin-bottom: 20px;"></tip>
-      <div style="flex-direction:row">
-        <image class="img" style="width: 300px; height: 300px;" :src="img"></image>
-        <image class="img" style="width: 200px; height: 200px;" :src="img"></image>
-        <image class="img" style="width: 50px; height: 50px;" :src="img"></image>
-      </div>
-    </panel>
-    <panel title="GIF Animation" type="primary">
-      <tip type="warning" value="Depanding on Native ImageSDK" style="margin-bottom: 20px;"></tip>
-      <div style="flex-direction:row">
-        <image class="img" style="width: 96px; height: 96px;" src="https://gtd.alicdn.com/tps/i4/T1HcvHXd4nXXb6ROYh-48-48.gif"></image>
-        <image class="img" style="width: 68px; height: 68px;margin-left:20px;" src="https://gw.alicdn.com/tps/TB1El.mKXXXXXXyapXXXXXXXXXX-34-34.gif"></image>
-      </div>
-    </panel>
-    <panel title="Base64" type="primary">
-      <tip type="warning" value="Depanding on Native ImageSDK" style="margin-bottom: 20px;"></tip>
-      <div style="flex-direction:row">
-        <image class="img" style="width: 96px; height: 96px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAMAAABgOjJdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1QTFRFhomSb3J8XGBrdnqDgYWNlJefV1tmfoGKU1diT1NfgISNgoWOYmZwio2Vi4+Wc3eAkJObZGhzUlZiaGt2U1djfYCKZGdyhYiQeHyFio6VgYWOVVllbHB6XWFsY2ZxaWx3jZCYXmFsfYCJcnZ/UVVham54V1tng4aPb3N8WV1pX2JtZWl0YWVvVlpmiYyUWVxohomRd3uEdHiBeX2GZ2t1hIeQVFhkf4OMbnJ8fYGKdnqEb3N9kJScY2dycnaAjpKZdHeBjpKajI+Yc3eBhYiRf4KLXmFtio6Wi4+XjZCZkJSbkZScjI+XlJifTlJe+rAZcwAAAZBJREFUeNp0lOeWgjAQhSdUBQRRbFjX7tpW3XUt23tL3v9xNigJIHh/zRk+5iR3ZgIkULWmwgv+A7VWDWWBR/nSt2gLUzIVbLH1lo8RRW1wEfqxPtCKUaKTMUhURuUhTIi6Q07l6LuAEFdpEld6tWNEx00CKKJ3jsR1xSHJcj4bB+LmkpxT49Yj8mqQUVBBciUk8ITepESJ+5AqY1+uwny5IjDPcADoN0BIwjLOsjKZOewtbi/9fvi338a44CetIai2H/cokPLj9tfEj2wVzD4rIWMlfpu+CXc5Pw4qh5X7AUw4gZIswUENGT8lAN1fMBVeAxIIxYR3Nin0imOe52emdxkyP8aY+0S9Y2d63cNoxvACRTaeI70slst+cjYCAnXmuuS1RKKmy1hKBX0hzaC3KOsxsmz2Ir2NzMcEbVCo+cf5oDOWOzNAucpxxoglnZlT1+KzXk4kymKwL4ttN+73dhHeuWV85zLL073Vw3v7MdDuE3a/JRrCmqwFQ2yV8gmvg/d+aPCMH0GLvB//AgwAo1MTpxsaxVoAAAAASUVORK5CYII="></image>
-        <image class="img" style="width: 68px; height: 68px;margin-left:20px;" src="data:image/gif;base64,R0lGODlhIgAiANU7AMvLy83Nzdra2srKysnJyejo6MbGxtzc3M7Ozuzs7NTU1N3d3fz8/NfX1/j4+Ovr6+/v79DQ0Obm5v39/d/f3/f398/Pz9vb2+np6fn5+f7+/tXV1fX19dnZ2erq6tHR0fb29sjIyMfHx+Li4vLy8u7u7ufn5/r6+uPj49bW1tPT09LS0sTExPT09ODg4O3t7eHh4eTk5MXFxd7e3vHx8fPz8/Dw8OXl5djY2P///8zMzP///wAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Q0QxODlDNENEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Q0QxODlDNUNEOEQxMUUzOEIzM0I1ODVGNjU1MjBBQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDRDE4OUMyQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDRDE4OUMzQ0Q4RDExRTM4QjMzQjU4NUY2NTUyMEFCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQAAOwAsAAAAACIAIgAABv/AnXBIFDIEnxmoyGw6hw6LTrdKPK9PhmI6lWC/xQN3agWDMWNdhDTJmZ+gS1oXUDUoD8dbOHk05oAIHS8aYDRbgIlTDTVXGiiKkVwFTgwdkpg6GE1ymZIRJUUjnpkURBCkmQJDDBueAQGJACEAOqtCCaQhBgOAAxEAAAtCGQKeBAAIyGkiFzk3Ii64UpghCg45EstTAAYQOS0DMUKjmLMPOTkVAQRc3d8cAZQ7YpgDAzbpHDrt3AYlOTggeCDEmL0B3wLyc+ctBwgEHgpmupdwXz8dAGTAC2BCCIWJBACqYzfGwIEcHkSM21EgFiYRC9I9uDcm2IoAAGAIaYFIEgBkAh8UBJvTbUCAYUIkkDLAwiggWLagREiF6ZaQAlQlIR3SKeucAJuITLjkNc2CE0yOlOWiIsOTAgjKNnB7pYKLuKQimJhgxkEBJC7nWFBwwAPaPTs0kJBwIMWGDSkaHECRoMKTIAAh+QQFAAA7ACwPAA0AEgAJAAAGRMCdUKcTGo3E4jF5RDKHSaUzCdtFn9ar5IrVBUQsA+JBDBkMISuSIJAsdgkAgFIojHaDpm3nOJKEFQFpTTsgUi+EiUJBACH5BAUAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZRwJ1wSBwCAMVdYJkMhGSiYYDAYhmSIVyJQnDtCApTYXY0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEk7d0MlkpdBACH5BAUAADsALBAADQAQAAQAAAYmwN0uEBAajyGAMWQYHIW6QQQA0O0ACILyKLrkbqLQzpGTEJ6GYxAAIfkEBQAAOwAsEAANABAABAAABiTA3U6nExqPgKIwQDwuQzKRLrBjsQxKYwhXohAIO9ODAnDKjkEAIfkEBQAAOwAsDwANABIACQAABkPAnXBIHOp0xR0yqTwum86k8wiDTo1TnSQbFeoCIpYB8TiGDIaQ0kgQSBa7BABAKRRGu0HRtnMQSUIVAWpJIE8vTIlBACH5BAUAADsALA8AEQASAAgAAAYfQJ1wSCzqEA+jcmh5LZeWxFOJ8EyVkqsRpi0uukRBEAAh+QQFAAA7ACwPABEAEgAIAAAGWcCdcEgUBkQsAzFkMISKO4JAskAkAABKoTDaDYYAgy3nQHgGA1IuVwk8hQAZJAfSmQaE17pNIBoOOR4iMTsiC2sPaERYKwEAcAQfClhQYQMBfiyXUDsBmDtBACH5BAUAADsALA8ADQASAAkAAAZQwJ1wSBwCAMVdICkMhGSiYYDAYhmSIVyJQnDtCArTg3I0yiC51iAGCD1yucrUaEBzAoXBwAbnfOklOX4PemiCf0QQOyCJQhw6BEx3QyVMlkEAIfkEBWQAOwAsEAANABAABAAABibA3S4QEBqPIYAxZBgchbpBBADQ7QAIgvIouuRuotDOkZMQnoZjEAA7"></image>
-      </div>
-    </panel>
-    <panel title="resize" type="primary">
-      <panel title="resize=stretch(default) 600 x 200 ">
-        <image class="img" style=" width: 600px; height: 200px;border-style: solid;border-width: 1px;border-color: #333;" :src="img" resize="stretch"></image>
-      </panel>
-      <panel title="resize=contain 600 x 200 ">
-        <image class="img" style=" width: 600px; height: 200px;border-style: solid;border-width: 1px;border-color: #333;" :src="img" resize="contain"></image>
-      </panel>
-      <panel title="resize=cover 600 x 200">
-        <image class="img" style=" width: 600px; height: 200px;border-style: solid;border-width: 1px;border-color: #333;" :src="img" resize="cover"></image>
-      </panel>
-    </panel>
-  </scroller>
-</template>
-
-<style scoped>
-  .img {
-    margin-bottom: 20px;
-  }
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      tip: require('../include/tip.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/components/input.vue b/examples/vue/components/input.vue
deleted file mode 100644
index ab950a4..0000000
--- a/examples/vue/components/input.vue
+++ /dev/null
@@ -1,210 +0,0 @@
-<template>
-  <div>
-    <div>
-      <text style="font-size: 40px">oninput: {{txtInput}}</text>
-      <text style="font-size: 40px">onchange: {{txtChange}}</text>
-      <text style="font-size: 40px">onreturntype: {{txtReturnType}}</text>
-      <text style="font-size: 40px">selection: {{txtSelection}}</text>
-
-    </div>
-    <scroller>
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = text</text>
-        </div>
-        <input type="text" placeholder="Input Text" class="input" :autofocus=true value="" @change="onchange" @input="oninput"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = password</text>
-        </div>
-        <input type="password" placeholder="Input Password" class="input" @change="onchange" @input="oninput"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = url</text>
-        </div>
-        <input type="url" placeholder="Input URL" class="input" @change="onchange" @input="oninput"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = email</text>
-        </div>
-        <input type="email" placeholder="Input Email" class="input" @change="onchange" @input="oninput"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = tel</text>
-        </div>
-        <input type="tel" placeholder="Input Tel" class="input" @change="onchange" @input="oninput"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = time</text>
-        </div>
-        <input type="time" placeholder="Input Time" class="input" @change="onchange" @input="oninput"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = number</text>
-        </div>
-        <input type="number" placeholder="Input number" class="input" @change="onchange" @input="oninput"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input type = date</text>
-        </div>
-        <input type="date" placeholder="Input Date" class="input" @change="onchange" @input="oninput" max="2017-12-12" min="2015-01-01"/>
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = default</text>
-        </div>
-        <input type="text" placeholder="please input" return-key-type="default" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = go</text>
-        </div>
-        <input type="text" placeholder="please input" return-key-type="go" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = next</text>
-        </div>
-        <input type="text" placeholder="please input" return-key-type="next" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = search</text>
-        </div>
-        <input type="text" placeholder="please input" return-key-type="search" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = send</text>
-        </div>
-        <input type="text" placeholder="please input" return-key-type="send" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
-      </div>
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input return-key-type = done</text>
-        </div>
-        <input type="text" placeholder="please input" return-key-type="done" class="input" @change="onchange" @return = "onreturn" @input="oninput" />
-      </div>
-
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">function focus() & blur()</text>
-        </div>
-        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
-          <text class="button" value="Focus" type="primary" @click="focus"></text>
-          <text class="button" value="Blur" type="primary" @click="blur"></text>
-        </div>
-
-        <input type="text" placeholder="Input1" class="input" value="" ref="input1"/>
-      </div>
-
-
-      <div>
-        <div style="background-color: #286090">
-          <text class="title" style="height: 80 ;padding: 20;color: #FFFFFF">input selection</text>
-        </div>
-        <div style="flex-direction: row;margin-bottom: 16px;justify-content: space-between">
-          <text class="button" value="setRange" type="primary" @click="setRange"></text>
-          <text class="button" value="getSelectionRange" type="primary" @click="getSelectionRange"></text>
-        </div>
-        <input type="text"  ref="inputselection" placeholder="please input" value="123456789"  class="input" @change="onchange" @return = "onreturn" @input="oninput"/>
-      </div>
-
-
-
-    </scroller>
-  </div>
-</template>
-
-<style scoped>
-  .input {
-    font-size: 60px;
-    height: 80px;
-    width: 750px;
-  }
-  .button {
-    font-size: 36;
-    width: 200;
-    color: #41B883;
-    text-align: center;
-    padding-top: 10;
-    padding-bottom: 10;
-    border-width: 2;
-    border-style: solid;
-    margin-right: 20;
-    border-color: rgb(162, 217, 192);
-    background-color: rgba(162, 217, 192, 0.2);
-  }
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        txtInput: '',
-        txtChange: '',
-        txtReturnType: '',
-        txtSelection:'',
-        autofocus: false
-      };
-    },
-    methods: {
-      ready: function () {
-        var self = this;
-        setTimeout(function () {
-          self.autofocus = true;
-        }, 1000);
-      },
-      onchange: function (event) {
-        this.txtChange = event.value;
-        console.log('onchange', event.value);
-      },
-      onreturn: function (event) {
-        this.txtReturnType = event.returnKeyType;
-        console.log('onreturn', event.type);
-      },
-      oninput: function (event) {
-        this.txtInput = event.value;
-        console.log('oninput', event.value);
-      },
-      focus: function () {
-        this.$refs['input1'].focus();
-      },
-      blur: function () {
-        this.$refs['input1'].blur();
-      },
-      setRange: function() {
-        console.log(this.$refs["inputselection"]);
-        this.$refs["inputselection"].setSelectionRange(2, 6);
-      },
-      getSelectionRange: function() {
-        console.log(this.$refs["inputselection"]);
-        var self = this;
-        this.$refs["inputselection"].getSelectionRange(function(e) {
-          self.txtSelection = e.selectionStart +'-' + e.selectionEnd;
-        });
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/components/list.vue b/examples/vue/components/list.vue
deleted file mode 100644
index c894258..0000000
--- a/examples/vue/components/list.vue
+++ /dev/null
@@ -1,119 +0,0 @@
-<template>
-  <div>
-    <list class="list">
-      <cell
-        v-for="(v,i) in rows"
-        append="tree"
-        :index="i"
-        :key="i"
-        class="row"
-        @appear="onappear(i, $event)"
-        @disappear="ondisappear(i, $event)">
-        <div class="item">
-          <text class="item-title">row {{v.id}}</text>
-        </div>
-      </cell>
-    </list>
-    <text class="count" :value="'Appear items: ' + appearMin + ' ~ ' + appearMax"></text>
-  </div>
-</template>
-
-<style scoped>
-  .list {
-    height:850px
-  }
-  .count {
-    font-size: 48px;
-    margin:10px;
-  }
-  .indicator {
-    height: 40px;
-    width: 40px;
-    color:#45b5f0;
-  }
-  .row {
-    width: 750px;
-  }
-  .item {
-    justify-content: center;
-    border-bottom-width: 2px;
-    border-bottom-color: #c0c0c0;
-    height: 100px;
-    padding:20px;
-  }
-  .item:active {
-     background-color: #00BDFF;
-   }
-  .item-title {
-  }
-</style>
-
-<script>
-  module.exports = {
-    methods: {
-      onappear: function (idx, e) {
-        var appearId = this.rows[idx].id;
-        console.log('+++++', appearId);
-        var appearIds = this.appearIds;
-        appearIds.push(appearId);
-        this.getMinAndMaxIds(appearIds);
-      },
-      ondisappear:function (idx, e) {
-        var disAppearId = this.rows[idx].id;
-        console.log('+++++', disAppearId);
-        var appearIds = this.appearIds;
-        var index = appearIds.indexOf(disAppearId);
-        if (index > -1) {
-          appearIds.splice(index, 1);
-        }
-        this.getMinAndMaxIds(appearIds);
-      },
-      getMinAndMaxIds:function (appearIds) {
-        appearIds.sort(function(a, b) {
-          return a - b;
-        });
-        this.appearIds = appearIds;
-        this.appearMax = appearIds[appearIds.length - 1];
-        this.appearMin = appearIds[0];
-      }
-    },
-    data: function () {
-      return {
-        appearMin:1,
-        appearMax:1,
-        appearIds:[],
-        rows:[
-          {id: 1},
-          {id: 2},
-          {id: 3},
-          {id: 4},
-          {id: 5},
-          {id: 6},
-          {id: 7},
-          {id: 8},
-          {id: 9},
-          {id: 10},
-          {id: 11},
-          {id: 12},
-          {id: 13},
-          {id: 14},
-          {id: 15},
-          {id: 16},
-          {id: 17},
-          {id: 18},
-          {id: 19},
-          {id: 20},
-          {id: 21},
-          {id: 22},
-          {id: 23},
-          {id: 24},
-          {id: 25},
-          {id: 26},
-          {id: 27},
-          {id: 28},
-          {id: 29}
-        ]
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/components/marquee.vue b/examples/vue/components/marquee.vue
deleted file mode 100644
index e197153..0000000
--- a/examples/vue/components/marquee.vue
+++ /dev/null
@@ -1,68 +0,0 @@
-<template>
-  <scroller>
-    <panel title="Marquee" type="primary">
-      <marquee
-        :step="marquee.height * 2"
-        :count="marquee.list.length"
-        :interval="marquee.interval"
-        :duration="marquee.duration"
-        :style="{
-          width: 700,
-          height: marquee.height * 2,
-          backgroundColor: 'rgb(223, 240, 216)',
-          borderRadius: 8,
-          paddingLeft: 10,
-          paddingRight: 10
-        }"
-        @change="marqueeChange">
-        <div
-          v-for="(item,i) in marquee.list"
-          :key="i"
-          :style="{
-            height: marquee.height * marquee.length,
-            paddingTop: marquee.height * 0.5,
-            paddingBottom: marquee.height * 0.5,
-            overflow: 'hidden'
-          }">
-          <text
-            :style="{
-              height: marquee.height,
-              color: 'rgb(60, 118, 61)',
-              fontSize: 28
-            }">{{item.text}}</text>
-        </div>
-      </marquee>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        marquee: {
-          height: 30,
-          duration: 1500,
-          interval: 2000,
-          list: [
-            {text: 'Introducing Bots on Messenger'},
-            {text: 'Capturing 3D 360-Stereo VR Video'},
-            {text: 'The Future of Video on Facebook'},
-            {text: 'Announcing Vue.js 2.0'},
-            {text: 'Not Your Average Virtual-DOM'},
-            {text: 'Templates, JSX, or Hyperscript?'}
-          ]
-        }
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      marquee: require('../include/marquee.vue')
-    },
-    methods: {
-      marqueeChange: function (e) {
-        console.log(e)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/components/navigator.vue b/examples/vue/components/navigator.vue
deleted file mode 100644
index ab1423f..0000000
--- a/examples/vue/components/navigator.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<template>
-  <navpage
-    dataRole="none"
-    :height="navBarHeight"
-    :title="title"
-    backgroundColor="#ff5898"
-    titleColor="white"
-    leftItemTitle="More"
-    leftItemColor="white"
-    rightItemSrc="http://gtms02.alicdn.com/tps/i2/TB1ED7iMpXXXXXEXXXXWA_BHXXX-48-48.png"
-    @naviBarLeftItemClick="naviBarLeftItemClick"
-    @naviBarRightItemClick="naviBarRightItemClick">
-    <panel title="push a new page">
-      <button type="primary" size="small" value="push" @click.native="push"></button>
-    </panel>
-    <panel title="pop to the last page">
-      <button type="success" size="small" value="pop" @click.native="pop"></button>
-    </panel>
-  </navpage>
-</template>
-
-<script>
-  var navigator = weex.requireModule('navigator')
-  var getBaseURL = require('../include/base-url.js').getBaseURL
-  module.exports = {
-    data: function () {
-      return {
-        navBarHeight: 88,
-        title: 'Navigator',
-        dir: 'examples',
-        baseURL: '',
-        subPath: weex.config.env.platform === 'Web' ? 'vue-web/' : ''
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      navpage: require('../include/navpage.vue'),
-      button: require('../include/button.vue')
-    },
-    created: function() {
-      this.$getConfig(function (config) {
-        var env = config.env;
-        if(env.platform == 'iOS'){
-          var scale = env.scale;
-          var deviceWidth = env.deviceWidth / scale;
-          this.navBarHeight = 64.0 * 750.0 / deviceWidth;
-        }
-      }.bind(this));
-      this.baseURL = getBaseURL(this)
-    },
-    methods: {
-      naviBarLeftItemClick: function (e) {
-        modal.toast({ message: 'naviBarLeftItemClick', duration: 2 })
-      },
-      naviBarRightItemClick: function (e) {
-        modal.toast({ message: 'naviBarRightItemClick', duration: 2 })
-      },
-      push: function () {
-        var params = {
-          'url':  this.baseURL + this.subPath + 'vue/components/navigator.js?test=1',
-          'animated' : 'true',
-        }
-        navigator.push(params, function () {});
-      },
-      pop: function () {
-        var params = {
-          'url':  this.baseURL + this.subPath + 'vue/components/navigator.js?test=1',
-          'animated' : 'true',
-        }
-        navigator.pop(params, function () {});
-      },
-    }
-  }
-</script>
diff --git a/examples/vue/components/scroller.vue b/examples/vue/components/scroller.vue
deleted file mode 100644
index 8336ea0..0000000
--- a/examples/vue/components/scroller.vue
+++ /dev/null
@@ -1,190 +0,0 @@
-<template>
-  <scroller class="list" append="tree" ref="scroller">
-    <refresh class="refresh-view" :display="refresh_display" @refresh="onrefresh" @pullingdown="pullingdown">
-      <img id="roate" ref="roate" src="http://gw.alicdn.com/bao/uploaded/TB1xDrVNFXXXXbEXFXXXXXXXXXX-48-48.png" style="width: 50px;height: 50px;"></img>
-    </refresh>
-    <div v-for="(sec, i) in sections" :key="i" class="section">
-      <div class="header">
-        <text class="header-title">{{sec.title}}</text>
-      </div>
-      <div v-for="item in sec.items" class="item" :key="item.index">
-        <text class="item-title">row {{item.id}}</text>
-      </div>
-    </div>
-    <loading class="loading-view" :display="loading_display" @loading="onloading">
-      <loading-indicator style="height: 60px; width: 60px;"></loading-indicator>
-    </loading>
-  </scroller>
-</template>
-
-<style scoped>
-  .refresh-view {
-    height: 120px;
-    width: 750px;
-    display: -ms-flex;
-    display: -webkit-flex;
-    display: flex;
-    -ms-flex-align: center;
-    -webkit-align-items: center;
-    -webkit-box-align: center;
-    align-items: center;
-  }
-
-  .refresh-arrow {
-    font-size: 30px;
-    color: #45b5f0;
-  }
-
-  .loading-view {
-    height: 80px;
-    width: 750px;
-    justify-content: center;
-    align-items: center;
-    background-color: #c0c0c0;
-  }
-
-  .indicator {
-    height: 40px;
-    width: 40px;
-    color: #45b5f0;
-  }
-
-  .header {
-    background-color: #45b5f0;
-    padding: 20px;
-    height: 88px;
-    justify-content: center;
-  }
-
-  .header-title {
-    color: white;
-    font-weight: bold;
-  }
-
-  .item {
-    justify-content: center;
-    border-bottom-width: 2px;
-    border-bottom-color: #c0c0c0;
-    height: 100px;
-    padding: 20px;
-  }
-
-  .item-title {
-  }
-</style>
-
-<script>
-  const dom = weex.requireModule('dom')
-  console.log(dom)
-  module.exports = {
-    mounted () {
-      const result = dom.getComponentRect(this.$refs.scroller, option => {
-        console.log('getComponentRect:', option)
-      })
-    },
-    methods: {
-      onrefresh: function(e) {
-        var self = this;
-        self.refresh_display = 'show';
-        setTimeout(function () {
-          self.refresh_display = 'hide';
-        }, 3000)
-      },
-      onloading: function(e) {
-        var self = this;
-        self.loading_display = 'show';
-        setTimeout(function () {
-          self.loading_display = 'hide';
-        }, 3000)
-      },
-      pullingdown: function(e){
-        var dy = e.dy;
-        var pullingDistance = e.pullingDistance;
-        var viewHeight = e.viewHeight;
-      }
-    },
-    data: function () {
-      return {
-        refresh_display: 'hide',
-        loading_display: 'hide',
-        sections: [
-          {
-            title: 'Header 1',
-            items: [
-              {id: 1},
-              {id: 2},
-              {id: 3},
-              {id: 4},
-              {id: 5}
-            ]
-          },
-          {
-            title: 'Header 2',
-            items: [
-              {id: 6},
-              {id: 7},
-              {id: 8},
-              {id: 9},
-              {id: 10},
-              {id: 11}
-            ]
-          },
-          {
-            title: 'Header 3',
-            items: [
-              {id: 6},
-              {id: 7},
-              {id: 8},
-              {id: 9},
-              {id: 10},
-              {id: 11}
-            ]
-          }
-        ],
-        moreSections: [
-          {
-            title: 'Header 3',
-            items: [
-              {id: 12},
-              {id: 13},
-              {id: 14},
-              {id: 15},
-              {id: 16},
-              {id: 17},
-              {id: 18}
-            ]
-          },
-          {
-            title: 'Header 4',
-            items: [
-              {id: 19},
-              {id: 20},
-              {id: 21},
-              {id: 22}
-            ]
-          },
-          {
-            title: 'Header 5',
-            items: [
-            {id: 23},
-            {id: 24},
-            {id: 25},
-            {id: 26},
-            {id: 27}
-            ]
-          },
-          {
-            title: 'Header 6',
-            items: [
-            {id: 28},
-            {id: 29},
-            {id: 30},
-            {id: 31},
-            {id: 32}
-            ]
-          }
-          ]
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/components/slider.vue b/examples/vue/components/slider.vue
deleted file mode 100644
index 5985b68..0000000
--- a/examples/vue/components/slider.vue
+++ /dev/null
@@ -1,264 +0,0 @@
-<template>
-  <scroller class="body">
-    <panel title="auto-play" type="primary">
-      <panel title="auto-play = false" padding-body="0">
-        <slider class="slider" append="tree"
-          :interval="sliders[1].interval"
-          autoPlay="false">
-          <indicator class="indicator"></indicator>
-          <slider-page v-for="(v,i) in sliders[1].sliderPages" :items="v.items" :key="i"></slider-page>
-        </slider>
-      </panel>
-      <panel title="auto-play = true" padding-body="0">
-        <slider class="slider" append="tree"
-          :interval="sliders[0].interval"
-          :autoPlay="sliders[0].autoPlay">
-          <indicator class="indicator"></indicator>
-          <slider-page v-for="v in sliders[0].sliderPages" :key="v.index" :items="v.items"></slider-page>
-        </slider>
-      </panel>
-    </panel>
-    <panel :title="'Event, ' + eventCnt + ' change'" type="primary">
-      <slider class="slider" append="tree"
-        :interval="sliders[0].interval"
-        :autoPlay="sliders[0].autoPlay"
-        @change="handleSliderChange">
-        <indicator class="indicator"></indicator>
-        <slider-page v-for="v in sliders[0].sliderPages" :key="v.index" :items="v.items"></slider-page>
-      </slider>
-    </panel>
-    <panel title="Indicator" type="primary">
-      <panel title="default style" padding-body="0">
-        <slider class="slider" append="tree"
-          :interval="sliders[0].interval"
-          :autoPlay="sliders[0].autoPlay"
-          @change="handleSliderChange">
-          <indicator class="indicator"></indicator>
-          <slider-page v-for="v in sliders[0].sliderPages" :key="v.index" :items="v.items"></slider-page>
-        </slider>
-      </panel>
-      <panel title="width & height" padding-body="0">
-        <slider class="slider" append="tree"
-          :interval="sliders[0].interval"
-          :autoPlay="sliders[0].autoPlay">
-          <indicator style="itemColor: #dddddd;width:714px;height:460px;"></indicator>
-          <slider-page v-for="v in sliders[0].sliderPages" :key="v.index" :items="v.items"></slider-page>
-        </slider>
-      </panel>
-      <panel title="left & top" padding-body="0">
-        <slider class="slider" append="tree"
-          :interval="sliders[1].interval"
-          :autoPlay="sliders[1].autoPlay">
-          <indicator class="indicator" style="top:-140px;left:-240px"></indicator>
-          <slider-page v-for="(v,i) in sliders[1].sliderPages" :items="v.items" :key="i"></slider-page>
-        </slider>
-      </panel>
-      <panel title="itemColor & itemSelectedColor" padding-body="0">
-        <slider class="slider" append="tree"
-          :interval="sliders[2].interval"
-          :autoPlay="sliders[2].autoPlay">
-          <indicator class="indicator" style="item-selected-color:rgb(217, 83, 79);"></indicator>
-          <slider-page v-for="v in sliders[2].sliderPages" :key="v.index" :items="v.items"></slider-page>
-        </slider>
-      </panel>
-      <panel title="itemSize" padding-body="0">
-        <slider class="slider" append="tree"
-          :interval="sliders[1].interval"
-          :autoPlay="sliders[1].autoPlay">
-          <indicator style="itemColor: #dddddd;item-size:40px;top:140px;left:180px;width:700px;height:380px;"></indicator>
-          <slider-page v-for="(v,i) in sliders[1].sliderPages" :items="v.items" :key="i"></slider-page>
-        </slider>
-      </panel>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  var img0 = '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg';
-  var img1 = '//gw.alicdn.com/tps/i1/TB1M3sQMpXXXXakXXXXApNeJVXX-360-360.png';
-  module.exports = {
-    data: function () {
-      return {
-        eventCnt: 0,
-        togglePlayMsg: 'pause',
-        sliders: [
-          {
-            interval: 1000,
-            autoPlay: true,
-            sliderPages: [
-              {
-                items: [
-                  {
-                    image: img0,
-                    link: '//h5.m.taobao.com/1'
-                  },
-                  {
-                    image: img0,
-                    link: '//h5.m.taobao.com/1'
-                  }
-                ]
-              },
-              {
-                items: [
-                  {
-                    image: img1,
-                    link: '//h5.m.taobao.com/1'
-                  },
-                  {
-                    image: img1,
-                    link: '//h5.m.taobao.com/1'
-                  }
-                ]
-              },
-              {
-                items: [
-                  {
-                    image: img0,
-                    link: '//h5.m.taobao.com/1'
-                  },
-                  {
-                    image: img1,
-                    link: '//h5.m.taobao.com/1'
-                  }
-                ]
-              }
-            ]
-          },
-          {
-            interval: 3000,
-            autoPlay: true,
-            sliderPages: [
-              {
-                items: [
-                {
-                  image: img0,
-                  link: '//h5.m.taobao.com/1'
-                },
-                {
-                  image: img0,
-                  link: '//h5.m.taobao.com/1'
-                }
-                ]
-              },
-              {
-                items: [
-                {
-                  image: img1,
-                  link: '//h5.m.taobao.com/1'
-                },
-                {
-                  image: img1,
-                  link: '//h5.m.taobao.com/1'
-                }
-                ]
-              },
-              {
-                items: [
-                {
-                  image: img0,
-                  link: '//h5.m.taobao.com/1'
-                },
-                {
-                  image: img1,
-                  link: '//h5.m.taobao.com/1'
-                }
-                ]
-              }
-              ]
-            },
-            {
-              interval: 5000,
-              autoPlay: true,
-              sliderPages: [
-              {
-                items: [
-                {
-                  image: img0,
-                  link: '//h5.m.taobao.com/1'
-                },
-                {
-                  image: img0,
-                  link: '//h5.m.taobao.com/1'
-                }
-                ]
-              },
-              {
-                items: [
-                {
-                  image: img1,
-                  link: '//h5.m.taobao.com/1'
-                },
-                {
-                  image: img1,
-                  link: '//h5.m.taobao.com/1'
-                }
-                ]
-              },
-              {
-                items: [
-                {
-                  image: img0,
-                  link: '//h5.m.taobao.com/1'
-                },
-                {
-                  image: img1,
-                  link: '//h5.m.taobao.com/1'
-                }
-                ]
-              }
-              ]
-            }
-            ]
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      sliderPage: require('../include/slider-page.vue')
-    },
-    methods: {
-      togglePlay: function() {
-        var autoPlay = this.sliders[0].autoPlay
-        autoPlay = !autoPlay
-        this.sliders[0].autoPlay = autoPlay
-        this.togglePlayMsg = autoPlay ? 'pause' : 'play'
-      },
-      handleSliderChange: function() {
-        var nowCnt = this.eventCnt + 1
-        this.eventCnt = nowCnt
-      },
-      setInterval1: function() {
-        this.sliders[0].interval = 1000;
-      },
-      setInterval3: function() {
-        this.sliders[0].interval = 3000;
-      },
-      setInterval5: function() {
-        this.sliders[0].interval = 5000;
-      }
-    }
-  };
-</script>
-
-<style scoped>
-  .body {
-    background-color: #ffffff;
-  }
-
-  .slider {
-    flex-direction: row;
-    /*margin-left: 18;*/
-    /*margin-right: 18;*/
-    width: 690px;
-    height: 360px;
-  }
-
-  .indicator {
-    position: absolute;
-    width: 690px;
-    height: 420px;
-    top: 140px;
-    left: 240px;
-    itemColor: #dddddd;
-    itemSelectedColor: rgb(40, 96, 144);
-  }
-</style>
diff --git a/examples/vue/components/sliderinfinite.vue b/examples/vue/components/sliderinfinite.vue
deleted file mode 100644
index 4a3702e..0000000
--- a/examples/vue/components/sliderinfinite.vue
+++ /dev/null
@@ -1,46 +0,0 @@
-<template>
-  <div>
-    <slider class="slider" interval="3000" auto-play="true">
-      <div class="frame" v-for="img in imageList">
-        <image class="image" resize="cover" :src="img.src"></image>
-      </div>
-    </slider>
-  </div>
-</template>
-
-<style scoped>
-  .image {
-    width: 700px;
-    height: 300px;
-  }
-  .slider {
-    margin-top: 25px;
-    margin-left: 25px;
-    width: 700px;
-    height: 300px;
-    border-width: 2px;
-    border-style: solid;
-    border-color: #41B883;
-  }
-  .frame {
-    width: 700px;
-    height: 300px;
-    position: relative;
-  }
-</style>
-
-<script>
-  export default {
-    data () {
-      return {
-        imageList: [
-          { src: 'https://gw.alicdn.com/tfs/TB1SA2wQXXXXXXDapXXXXXXXXXX-1400-600.png'},
-          { src: 'https://gw.alicdn.com/tfs/TB1KS_OQXXXXXcSXVXXXXXXXXXX-1400-600.png'},
-          { src: 'https://gw.alicdn.com/tfs/TB1Ez7XQXXXXXbNXXXXXXXXXXXX-1400-600.png'},
-          { src: 'https://gw.alicdn.com/tfs/TB1XLn6QXXXXXb2XpXXXXXXXXXX-1400-600.png'}
-        ]
-
-      }
-    }
-  }
-</script>
\ No newline at end of file
diff --git a/examples/vue/components/tabbar.vue b/examples/vue/components/tabbar.vue
deleted file mode 100644
index 7cc54ae..0000000
--- a/examples/vue/components/tabbar.vue
+++ /dev/null
@@ -1,63 +0,0 @@
-<template>
-  <div style="flex-direction: column;">
-    <tabbar :tabItems="tabItems" @tabBarOnClick="tabBarOnClick"></tabbar>
-  </div>
-</template>
-
-<script>
-  var getBaseURL = require('../include/base-url.js').getBaseURL
-  module.exports = {
-    data: function () {
-      return {
-        dir: 'examples',
-        tabItems: [
-          {
-            index: 0,
-            title: 'tab1',
-            titleColor: '#000000',
-            icon: '',
-            image: 'http://gtms01.alicdn.com/tps/i1/TB1qw.hMpXXXXagXXXX9t7RGVXX-46-46.png',
-            selectedImage: 'http://gtms04.alicdn.com/tps/i4/TB16jjPMpXXXXazXVXX9t7RGVXX-46-46.png',
-            src: 'component/tabbar/tabbar-item.js?itemId=tab1',
-            visibility: 'visible',
-          },
-          {
-            index: 1,
-            title: 'tab2',
-            titleColor: '#000000',
-            icon: '',
-            image: 'http://gtms03.alicdn.com/tps/i3/TB1LEn9MpXXXXaUXpXX9t7RGVXX-46-46.png',
-            selectedImage: 'http://gtms02.alicdn.com/tps/i2/TB1qysbMpXXXXcnXXXX9t7RGVXX-46-46.png',
-            src: 'component/tabbar/tabbar-item.js?itemId=tab2',
-            visibility: 'hidden',
-          },
-          {
-            index: 2,
-            title: 'tab3',
-            titleColor: '#000000',
-            icon: '',
-            image: 'http://gtms01.alicdn.com/tps/i1/TB1B0v5MpXXXXcvXpXX9t7RGVXX-46-46.png',
-            selectedImage: 'http://gtms04.alicdn.com/tps/i4/TB1NxY5MpXXXXcrXpXX9t7RGVXX-46-46.png',
-            src: 'component/tabbar/tabbar-item.js?itemId=tab3',
-            visibility: 'hidden',
-          }
-        ],
-      }
-    },
-    components: {
-      tabbar: require('../include/tabbar.vue')
-    },
-    created: function() {
-      var baseURL = getBaseURL(this)
-      for(var i = 0; i < this.tabItems.length; i++) {
-        var tabItem = this.tabItems[i];
-        tabItem.src = baseURL + tabItem.src;
-      }
-    },
-    methods: {
-      tabBarOnClick: function (e) {
-        console.log('tabBarOnClick', e.index)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/components/text.vue b/examples/vue/components/text.vue
deleted file mode 100644
index 19f34aa..0000000
--- a/examples/vue/components/text.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<template>
-  <scroller>
-    <panel title="color" type="primary">
-      <text class="txt">default is black</text>
-      <text class="txt" style="color:#286090">#286090</text>
-      <text class="txt" style="color:#0f0">#0f0</text>
-      <text class="txt" style="color:red">keyword</text>
-      <text class="txt" style="color:rgb(238, 162, 54)">rgb(238, 162, 54)</text>
-      <text class="txt" style="color:rgba(238, 162, 54, 0.5)">rgba(238, 162, 54, 0.5)</text>
-    </panel>
-    <panel title="font-size" type="primary">
-      <text class="txt" style="font-size: 32px;">32</text>
-      <text class="txt" style="font-size: 64px;">64</text>
-      <text class="txt" style="font-size: 100px;">100</text>
-    </panel>
-    <panel title="font-style" type="primary">
-      <text class="txt" style="font-style: normal">normal</text>
-      <text class="txt" style="font-style: italic">italic</text>
-    </panel>
-    <panel title="font-weight" type="primary">
-      <text class="txt" style="font-weight: normal">normal</text>
-      <text class="txt" style="font-weight: bold">bold</text>
-    </panel>
-    <panel title="text-decoration" type="primary">
-      <text class="txt" style="text-decoration: none">none</text>
-      <text class="txt" style="text-decoration: underline">underline</text>
-      <text class="txt" style="text-decoration: line-through">line-through</text>
-    </panel>
-    <panel title="text-align" type="primary">
-      <text class="txt" style="text-align: left">left</text>
-      <text class="txt" style="text-align: center">center</text>
-      <text class="txt" style="text-align: right">right</text>
-    </panel>
-    <panel title="text-overflow" type="primary">
-      <text class="txt" style="lines:1">no text-overflow, no text-overflow</text>
-      <text class="txt" style="text-overflow:clip;width:450px;lines:1">text-overflow: clip, text-overflow: clip</text>
-      <text class="txt" style="text-overflow:ellipsis;width:450px;lines:1">text-overflow: ellipsis, text-overflow: ellipsis</text>
-    </panel>
-    <panel title="line-height" type="primary">
-      <text class="txt">no lineheight setting</text>
-      <text class="txt" style="line-height: 50px">lineheight 50</text>
-      <text class="txt" style="line-height: 80px"> lineheight 80</text>
-    </panel>
-  </scroller>
-</template>
-
-<style scoped>
-  .txt {
-    margin-bottom: 12px;
-    font-size: 40px;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      panel: require('../include/panel.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/components/textarea.vue b/examples/vue/components/textarea.vue
deleted file mode 100644
index 580e390..0000000
--- a/examples/vue/components/textarea.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-<template>
-  <scroller>
-    <panel title="textarea" type="primary">
-      <textarea
-        class="textarea"
-        autofocus="true"
-        return-key-type="done"
-        @return="onreturn"
-        @change="onchange"
-        @input="oninput"
-      />
-      <text>oninput: {{txtInput}}</text>
-      <text>onchange: {{txtChange}}</text>
-      <text>enter key type: {{returnType}}</text>
-      <text>action: {{msg}}</text>
-    </panel>
-  </scroller>
-</template>
-
-<style scoped>
-  .textarea {
-    font-size: 30px;
-    height: 280px;
-    width: 400px;
-    border-width: 2px;
-    border-color: #ccc;
-  }
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    data: function () {
-      return {
-        txtInput: '',
-        txtChange: '',
-        returnType: '',
-        msg: ''
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue')
-    },
-    methods: {
-      onchange: function(event) {
-        this.txtChange = event.value;
-      },
-      oninput: function(event) {
-        this.txtInput = event.value;
-      },
-      onreturn: function(event) {
-        this.returnType = event.returnKeyType;
-        this.msg = 'You are "' + this.returnType + '" ' + event.value;
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/components/video.vue b/examples/vue/components/video.vue
deleted file mode 100644
index 677cad9..0000000
--- a/examples/vue/components/video.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<template>
-  <scroller>
-    <video class="video" onpause="onpause" onstart="onstart" onfinish="onfinish" onfail="onfail"
-           src="http://g.tbcdn.cn/ali-wireless-h5/res/0.0.6/toy.mp4"
-           auto-play="true" :playStatus="playStatus">
-    </video>
-    <div style="flex-direction: row; justify-content: center;">
-      <button value="Pause" @click.native="pause"></button>
-      <button value="Play" @click.native="play" type="primary" style="margin-left:20px;"></button>
-    </div>
-  </scroller>
-</template>
-
-<style scoped>
-  .video {
-    width: 750px;
-    height: 460px;
-    margin-bottom: 80px;
-  }
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    data: function () {
-      return {
-        playStatus: 'play'
-      }
-    },
-    components: {
-      button: require('../include/button.vue')
-    },
-    methods: {
-      pause: function() {
-        this.playStatus = 'pause'
-        modal.toast({ 'message': 'click pause' })
-      },
-      play: function() {
-        this.playStatus = 'play'
-        modal.toast({ 'message': 'click play' })
-      },
-      onpause: function(e) {
-        this.playStatus = e.playStatus
-        modal.toast({ 'message': 'video pause' })
-      },
-      onstart: function(e) {
-        this.playStatus = e.playStatus
-        modal.toast({ 'message': 'video start' })
-      },
-      onfinish: function(e) {
-        this.playStatus = e.playStatus
-        modal.toast({ 'message': 'video finish' })
-      },
-      onfail: function(e) {
-        this.playStatus = e.playStatus
-        modal.toast({ 'message': 'video fail' })
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/components/waterfall.vue b/examples/vue/components/waterfall.vue
deleted file mode 100644
index 8ed7f66..0000000
--- a/examples/vue/components/waterfall.vue
+++ /dev/null
@@ -1,459 +0,0 @@
-<template>
-  <waterfall class="page"
-  v-bind:style="{padding:padding}"
-  :columnWidth="columnWidth" :columnCount="columnCount" :columnGap="columnGap"
-  :show-scrollbar="showScrollbar" :scrollable="scrollable"
-  @scroll="recylerScroll"
-  >
-    <refresh class="refresh" @refresh="onrefresh" @pullingdown="onpullingdown" :display="refreshing ? 'show' : 'hide'">
-      <loading-indicator class="indicator"></loading-indicator>
-      <text class="refreshText">{{refreshText}}</text>
-    </refresh>
-    <header class="header" ref="header" v-if="showHeader">
-      <div class="banner" src="https://gw.alicdn.com/tps/TB1ESN1PFXXXXX1apXXXXXXXXXX-1000-600.jpg" resize="cover">
-        <div class="bannerInfo">
-          <image class="avatar" src="https://gw.alicdn.com/tps/TB1EP9bPFXXXXbpXVXXXXXXXXXX-150-110.jpg" resize="cover"></image>
-          <text class="name">Adam Cat</text>
-          <div class="titleWrap">
-            <text class="title">Genius</text>
-          </div>
-        </div>
-        <div class="bannerPhotoWrap">
-          <image class="bannerPhoto" v-for="photo in banner.photos" :src="photo.src"></image>
-        </div>
-      </div>
-    </header>
-    <header class="stickyHeader">
-      <div v-if="stickyHeaderType === 'none'" class="stickyWrapper">
-        <text class="stickyText">Sticky Header</text>
-      </div>
-      <div v-if="stickyHeaderType === 'appear'" class="stickyWrapper">
-        <div class="stickyTextImageWrapper">
-          <text class="stickyText">Last Appear:</text>
-          <image class="stickyImage" :src="appearImage"></image>
-        </div>
-        <div class="stickyTextImageWrapper">
-          <text class="stickyText">Last Disappear:</text>
-          <image class="stickyImage" :src="disappearImage"></image>
-        </div>
-      </div>
-      <div v-if="stickyHeaderType === 'scroll'" class="stickyWrapper">
-        <text class="stickyText">Content Offset:{{contentOffset}}</text>
-      </div>
-    </header>
-    <cell v-for="(item, index) in items" :key="index" :ref="`cell${index}`" class="cell">
-      <div class="item" @click="onItemclick(item.behaviour, index)" @appear="itemAppear(item.src)" @disappear="itemDisappear(item.src)">
-        <text v-if="item.name" class="itemName">{{item.name}}</text>
-        <image class="itemPhoto" :src="item.src"></image>
-        <text v-if="item.desc" class="itemDesc">{{item.desc}}</text>
-        <text v-if="item.behaviourName" class="itemClickBehaviour"> {{item.behaviourName}}</text>
-      </div>
-    </cell>
-    <div class="fixedItem" @click="scrollToTop">
-      <text class="fixedText">Top</text>
-    </div>
-  </waterfall>
-</template>
-
-<style scoped>
-  .page {
-    background-color: #EFEFEF;
-  }
-  .refresh {
-    height: 128px;
-    width: 750px;
-    flex-direction: row;
-    align-items: center;
-    justify-content: center;
-  }
-  .refreshText {
-    color: #888888;
-    font-weight: bold;
-  }
-  .indicator {
-    color: #888888;
-    height: 40px;
-    width: 40px;
-    margin-right: 30px;
-  }
-  .header {
-    background-color: #fff;
-  }
-  .banner {
-    height: 377px;
-    flex-direction: row;
-  }
-  .bannerInfo {
-    width: 270px;
-    align-items: center;
-    justify-content: center;
-  }
-  .avatar {
-    width: 148px;
-    height: 108px;
-    border-radius: 54px;
-    border-width: 4px;
-    border-color: #FFFFFF;
-    margin-bottom: 14px;
-  }
-  .name {
-    font-weight: bold;
-    font-size:32px;
-    color:#ffffff;
-    line-height:32px;
-    text-align:center;
-    margin-bottom: 16px;
-  }
-  .titleWrap {
-    width: 100px;
-    height: 24px;
-    margin-bottom: 10px;
-    background-color: rgba(255,255,255,0.80);
-    border-radius: 12px;
-    justify-content: center;
-    align-items: center;
-  }
-  .title {
-    font-size: 20px;
-    color: #000000;
-  }
-  .bannerPhotoWrap {
-    width: 449px;
-    height: 305px;
-    background-color: #FFFFFF;
-    border-radius: 12px;
-    margin-top: 35px;
-    padding: 12px;
-    flex-direction: row;
-    justify-content: space-between;
-    flex-wrap:wrap;
-  }
-  .bannerPhoto {
-    width: 137px;
-    height: 137px;
-    margin-bottom: 6px;
-  }
-  .stickyHeader {
-    position: sticky;
-    height: 94px;
-    flex-direction: row;
-    padding-bottom:6px;
-  }
-  .stickyWrapper {
-    flex-direction: row;
-    background-color:#00cc99;
-    justify-content: center;
-    align-items: center;
-    flex: 1;
-  }
-  .stickyTextImageWrapper {
-    flex: 1;
-    justify-content: center;
-    align-items: center;
-    flex-direction: row;
-  }
-  .stickyText {
-    color: #FFFFFF;
-    font-weight: bold;
-    font-size: 32px;
-    margin-right: 12px;
-  }
-  .stickyImage {
-    width: 64px;
-    height: 64px;
-    border-radius: 32px;
-  }
-
-  .cell {
-    padding-top: 6px;
-    padding-bottom: 6px;
-  }
-  .item {
-    background-color: #FFFFFF;
-    align-items: center;
-  }
-  .itemName {
-    font-size: 28px;
-    color:#333333;
-    line-height: 42px;
-    text-align:left;
-    margin-top: 24px;
-  }
-  .itemPhoto {
-    margin-top: 18px;
-    width: 220px;
-    height: 220px;
-    margin-bottom: 18px;
-  }
-  .itemDesc {
-    font-size: 24px;
-    margin: 12px;
-    color: #999999;
-    line-height: 36px;
-    text-align: left;
-  }
-  .itemClickBehaviour {
-    font-size: 36px;
-    color: #00cc99;
-    line-height: 36px;
-    text-align:center;
-    margin-top: 6px;
-    margin-left: 24px;
-    margin-right: 24px;
-    margin-bottom: 30px;
-  }
-
-  .fixedItem {
-    position: fixed;
-    width: 78px;
-    height: 78px;
-    background-color: #00cc99;
-    right: 32px;
-    bottom: 32px;
-    border-radius: 39px;
-    align-items: center;
-    justify-content: center;
-  }
-  .fixedText {
-    font-size: 36px;
-    color: white;
-    line-height: 36px;
-  }
-
-</style>
-
-<script>
-  export default {
-    data: function() {
-      const items = [
-        {
-          src:'https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg',
-          name: 'Thomas Carlyle',
-          desc:'Genius only means hard-working all one\'s life',
-          behaviourName: 'Change count',
-          behaviour: 'changeColumnCount'
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1Hv1JPFXXXXa3XXXXXXXXXXXX-370-370.jpg',
-          desc:'The man who has made up his mind to win will never say "impossible "',
-          behaviourName: 'Change gap',
-          behaviour: 'changeColumnGap'
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1eNKuPFXXXXc_XpXXXXXXXXXX-370-370.jpg',
-          desc:'There is no such thing as a great talent without great will - power',
-          behaviourName: 'Show scrollbar',
-          behaviour: 'showScrollbar',
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1DCh8PFXXXXX7aXXXXXXXXXXX-370-370.jpg',
-          name:'Addison',
-          desc:'Cease to struggle and you cease to live',
-          behaviourName: 'Change width',
-          behaviour: 'changeColumnWidth',
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1ACygPFXXXXXwXVXXXXXXXXXX-370-370.jpg',
-          desc:'A strong man will struggle with the storms of fate',
-          behaviourName: 'Listen appear',
-          behaviour: 'listenAppear',
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1IGShPFXXXXaqXVXXXXXXXXXX-370-370.jpg',
-          name:'Ruskin',
-          desc:'Living without an aim is like sailing without a compass',
-          behaviourName: 'Set scrollable',
-          behaviour: 'setScrollable',
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1xU93PFXXXXXHaXXXXXXXXXXX-240-240.jpg',
-          behaviourName: 'waterfall padding',
-          behaviour: 'setPadding',
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB19hu0PFXXXXaXaXXXXXXXXXXX-240-240.jpg',
-          name:'Balzac',
-          desc:'There is no such thing as a great talent without great will - power',
-          behaviourName: 'listen scroll',
-          behaviour: 'listenScroll',
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1ux2vPFXXXXbkXXXXXXXXXXXX-240-240.jpg',
-          behaviourName: 'Remove cell',
-          behaviour: 'removeCell',
-        },
-        {
-          src:'https://gw.alicdn.com/tps/TB1tCCWPFXXXXa7aXXXXXXXXXXX-240-240.jpg',
-          behaviourName: 'Move cell',
-          behaviour: 'moveCell',
-        }
-      ]
-
-      let repeatItems = [];
-      for (let i = 0; i < 3; i++) {
-        repeatItems.push(...items)
-      }
-
-      return {
-        padding: 0,
-        refreshing: false,
-        refreshText: '↓   pull to refresh...',
-        columnCount: 2,
-        columnGap: 12,
-        columnWidth: 'auto',
-        contentOffset: '0',
-        showHeader: true,
-        showScrollbar: false,
-        scrollable: true,
-        showStickyHeader: false,
-        appearImage: null,
-        disappearImage: null,
-        stickyHeaderType: 'none',
-        banner: {
-          photos: [
-            {src:'https://gw.alicdn.com/tps/TB1JyaCPFXXXXc9XXXXXXXXXXXX-140-140.jpg'},
-            {src:'https://gw.alicdn.com/tps/TB1MwSFPFXXXXbdXXXXXXXXXXXX-140-140.jpg'},
-            {src:'https://gw.alicdn.com/tps/TB1U8avPFXXXXaDXpXXXXXXXXXX-140-140.jpg'},
-            {src:'https://gw.alicdn.com/tps/TB17Xh8PFXXXXbkaXXXXXXXXXXX-140-140.jpg'},
-            {src:'https://gw.alicdn.com/tps/TB1cTmLPFXXXXXRXXXXXXXXXXXX-140-140.jpg'},
-            {src:'https://gw.alicdn.com/tps/TB1oCefPFXXXXbVXVXXXXXXXXXX-140-140.jpg'}
-          ]
-        },
-        items: repeatItems
-      }
-    },
-
-    methods: {
-      recylerScroll: function(e) {
-        this.contentOffset = e.contentOffset.y
-      },
-      showOrRemoveHeader: function() {
-        this.showHeader = !this.showHeader
-      },
-      onItemclick: function (behaviour, index) {
-        console.log(`click...${behaviour} at index ${index}`)
-        switch (behaviour) {
-          case 'changeColumnCount':
-            this.changeColumnCount()
-            break
-          case 'changeColumnGap':
-            this.changeColumnGap()
-            break
-          case 'changeColumnWidth':
-            this.changeColumnWidth()
-            break
-          case 'showScrollbar':
-            this.showOrHideScrollbar()
-            break
-          case 'listenAppear':
-            this.listenAppearAndDisappear()
-            break
-          case 'setScrollable':
-            this.setScrollable()
-            break
-          case 'setPadding':
-            this.setRecyclerPadding()
-            break
-          case 'listenScroll':
-            this.listenScrollEvent()
-            break
-          case 'removeCell':
-            this.removeCell(index)
-            break
-          case 'moveCell':
-            this.moveCell(index)
-            break
-        }
-      },
-
-      itemAppear: function(src) {
-        this.appearImage = src;
-      },
-
-      itemDisappear: function(src) {
-        this.disappearImage = src;
-      },
-
-      changeColumnCount: function() {
-        if (this.columnCount === 2) {
-          this.columnCount = 3
-        } else {
-          this.columnCount = 2
-        }
-      },
-
-      changeColumnGap: function() {
-        if (this.columnGap === 12) {
-          this.columnGap = 'normal'
-        } else {
-          this.columnGap = 12
-        }
-      },
-
-      changeColumnWidth: function() {
-        if (this.columnWidth === 'auto') {
-          this.columnWidth = 600
-        } else {
-          this.columnWidth = 'auto'
-        }
-      },
-
-      showOrHideScrollbar: function() {
-        this.showScrollbar = !this.showScrollbar
-      },
-
-      setScrollable: function() {
-        this.scrollable = !this.scrollable
-      },
-
-      listenAppearAndDisappear: function() {
-        this.stickyHeaderType = (this.stickyHeaderType === 'appear' ? 'none' : 'appear')
-      },
-
-      listenScrollEvent: function() {
-        this.stickyHeaderType = (this.stickyHeaderType === 'scroll' ? 'none' : 'scroll')
-      },
-
-      scrollToTop: function() {
-        // weex.requireModule('dom').scrollToElement(this.$refs.cell0)
-        weex.requireModule('dom').scrollToElement(this.$refs.header)
-      },
-
-      setRecyclerPadding: function() {
-        debugger;
-        this.padding = (this.padding == 0 ? 12 : 0);
-      },
-
-      removeCell: function(index) {
-        this.items.splice(index, 1)
-      },
-
-      moveCell: function(index) {
-        
-        if (index == 0) {
-          this.items.splice(this.items.length - 1, 0, this.items.splice(index, 1)[0]);
-        } else {
-          this.items.splice(0, 0, this.items.splice(index, 1)[0]);
-        }
-      },
-
-      onrefresh (event) {
-        this.refreshing = true
-        this.refreshText = "loading..."
-        setTimeout(() => {
-          this.refreshing = false
-          this.refreshText = '↓   pull to refresh...'
-        }, 2000)
-      },
-
-      onpullingdown (event) {
-        // console.log(`${event.pullingDistance}`)
-        if (event.pullingDistance < -64) {
-          this.refreshText = '↑   release to refresh...'
-        } else {
-          this.refreshText = '↓   pull to refresh...'
-        }
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/components/web.vue b/examples/vue/components/web.vue
deleted file mode 100644
index 47282cb..0000000
--- a/examples/vue/components/web.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<template>
-  <div class="wrapper">
-    <div class="toolbar" append="tree">
-      <button type="primary" size="small" value="back"
-        style="margin-left:30px;width:210px; margin-top:5px; margin-bottom:5px"
-        @click.native="goback"></button>
-      <button type="primary" size="small" value="forward"
-        style="margin-left:30px;width:210px; margin-top:5px; margin-bottom:5px"
-        @click.native="goforward"></button>
-      <button type="primary" size="small" value="refresh"
-        style="margin-left:30px;width:210px; margin-top:5px; margin-bottom:5px"
-        @click.native="refresh"></button>
-    </div>
-    <web class="content" ref="webview" src='http://alibaba.github.io/weex/index.html'
-      @pagestart="startload" @pagefinish="finishload" @error="failload"></web>
-  </div>
-</template>
-
-<style scoped>
-  .wrapper {
-    width: 750;
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-  }
-  .content {
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    margin-top: 0;
-    margin-bottom: 70;
-  }
-  .toolbar {
-    flex-direction: row;
-    position: fixed;
-    bottom: 0;
-    left: 0;
-    right: 0;
-    height: 70;
-  }
-</style>
-
-<script>
-  var webview = weex.requireModule('webview');
-  module.exports = {
-    components: {
-      button: require('../include/button.vue')
-    },
-    methods: {
-      goback: function() {
-        var el = this.$refs.webview
-        webview.goBack(el)
-      },
-      goforward: function() {
-        var el = this.$refs.webview
-        webview.goForward(el)
-      },
-      refresh: function() {
-        var el = this.$refs.webview
-        webview.reload(el)
-      },
-      startload: function(e) {
-      },
-      finishload: function(e) {
-      },
-      failload: function(e) {
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/hello.vue b/examples/vue/hello.vue
deleted file mode 100644
index 76272f7..0000000
--- a/examples/vue/hello.vue
+++ /dev/null
@@ -1,5 +0,0 @@
-<template>
-  <div>
-    <text style="font-size: 100px;">Hello World.</text>
-  </div>
-</template>
\ No newline at end of file
diff --git a/examples/vue/iconfont.vue b/examples/vue/iconfont.vue
deleted file mode 100644
index 0141863..0000000
--- a/examples/vue/iconfont.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-<template>
-  <scroller style='align-items:center'>
-    <div style='margin-top:20px'>
-      <text style="color:red;font-size:50px">only support font for ttf and woff</text>
-    </div>
-    <text class="title2" style='margin-top:50px;width:500px'>http ttf: &#xe606;&#xe605;&#xe604;&#xe603;&#xe602;&#xe601;&#xe600;</text>
-    <text class="title3" style='margin-top:50px;width:500px'>http woff: &#xe606;&#xe605;&#xe604;&#xe603;&#xe602;&#xe601;&#xe600;</text>
-    
-    <div style='flex-direction:row;margin-top:50px'>
-      <text style='font-family:iconfont4;font-size:50;color:green'>&#xe614;&#xe612;&#xe613;</text>
-      <text style='font-family:iconfont4;font-size:50;'>&#xe614;&#xe612;&#xe613;&#xe61d;&#xe714;</text>
-      <text style='font-family:iconfont4;font-size:60;color:blue'>&#xe711;</text>
-      <text style='font-family:iconfont4;font-size:60;color:green'>&#xe71c;&#xe60b;</text>
-    </div>
-    <div style='flex-direction:row;margin-top:50px'>
-      <text style='font-family:iconfont4;font-size:50;color:green'>&#xe71b;</text>
-      <text style='font-family:iconfont4;font-size:50;'>&#xe713;</text>
-      <text style='font-family:iconfont4;font-size:60;color:blue'>&#xe714;</text>
-      <text style='font-family:iconfont4;font-size:60;color:green'>&#xe71f;&#xe602;&#xe715;&#xe60a;&#xe606;&#xe717;&#xe657;&#xe654;&#xe64f;&#xe637;</text>
-    </div>
-    <div>
-      <text style='font-family:iconfont4;font-size:100; margin-top:50px'>&#xe631;&#xe630;&#xe627;&#xe63e;&#xe649;&#xe641;&#xe643;</text>
-    </div>
-
-    <div>
-      <text style='font-family:iconfont4;font-size:100;color:green;margin-top:50px'>&#xe61e;&#xe600;&#xe62b;&#xe646;</text>
-      <text style='font-family:iconfont4;font-size:100;margin-top:50px'> </text>
-    </div>
-
-    <div style='flex-direction:row'>
-      <text style='font-family:iconfont4;font-size:70;width:750px'>&#xe748;&#xe747;&#xe746;&#xe746;&#xe745;&#xe744;&#xe742;&#xe740;&#xe73f;&#xe73a;&#xe731;&#xe6e0;&#xe72c;&#xe730;&#xe740;&#xe6e1;&#xe6d7;&#xe739;&#xe73d;&#xe735;&#xe72a;&#xe6e3;&#xe738;</text>
-    </div>
-    
-  </scroller>
-  
-</template>
-<style>
-  .title1 {
-    color: red;
-    font-size: 36;
-    font-family: iconfont1;
-  }
-
-  .title2 {
-    color: gray;
-    font-size: 36;
-    font-family: iconfont2;
-  }
-
-  .title3 {
-    color: pink;
-    font-size: 36;
-    font-family: iconfont3;
-  }
-
-  .title4 {
-    color: red;
-    font-size: 36;
-    font-family: iconfont4;
-  }
-</style>
-
-<script>
-  module.exports = {
-    created: function() {
-
-      var domModule = weex.requireModule('dom');
-      //目前支持ttf、woff文件,不支持svg、eot类型,moreItem at http://www.iconfont.cn/
-      
-      domModule.addRule('fontFace', {
-        'fontFamily': "iconfont2",
-        'src': "url('http://at.alicdn.com/t/font_1469606063_76593.ttf')"
-      });
-      domModule.addRule('fontFace', {
-        'fontFamily': "iconfont3",
-        'src': "url('http://at.alicdn.com/t/font_1469606522_9417143.woff')"
-      });
-      
-        domModule.addRule('fontFace', {
-        'fontFamily': "iconfont4",
-        'src': "url('http://at.alicdn.com/t/font_zn5b3jswpofuhaor.ttf')"
-      });
-
-
-      // you can use the absolute path or the local:// scheme path
-      //  domModule.addRule('fontFace', {
-      //   'fontFamily': "iconfont4",
-      //   'src': "url('file:///storage/emulated/0/Android/data/com.alibaba.weex/cache/http:__at.alicdn.com_t_font_1469606063_76593.ttf')"
-      // });
-      
-    }
-  }
-</script>
\ No newline at end of file
diff --git a/examples/vue/include/base-url.js b/examples/vue/include/base-url.js
deleted file mode 100644
index f3f4e5d..0000000
--- a/examples/vue/include/base-url.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-exports.getBaseURL = function (vm) {
-  var bundleUrl = weex.config.bundleUrl;
-  var nativeBase;
-  var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/')>=0;
-  var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0;
-  if (isAndroidAssets) {
-    nativeBase = 'file://assets/';
-  }
-  else if (isiOSAssets) {
-    // file:///var/mobile/Containers/Bundle/Application/{id}/WeexDemo.app/
-    // file:///Users/{user}/Library/Developer/CoreSimulator/Devices/{id}/data/Containers/Bundle/Application/{id}/WeexDemo.app/
-    nativeBase = bundleUrl.substring(0, bundleUrl.lastIndexOf('/') + 1);
-  }
-  else {
-    var host = 'localhost:12580';
-    var matches = /\/\/([^\/]+?)\//.exec(weex.config.bundleUrl);
-    if (matches && matches.length >= 2) {
-      host = matches[1];
-    }
-    nativeBase = 'http://' + host + '/' + vm.dir + '/build/';
-  }
-  var h5Base = './index.html?page=./' + vm.dir + '/build/';
-  // in Native
-  var base = nativeBase;
-  if (typeof window === 'object') {
-    // in Browser or WebView
-    base = h5Base;
-  }
-  return base
-}
diff --git a/examples/vue/include/button.vue b/examples/vue/include/button.vue
deleted file mode 100644
index 7c9565a..0000000
--- a/examples/vue/include/button.vue
+++ /dev/null
@@ -1,162 +0,0 @@
-<!-- Inspired by bootstrap http://getbootstrap.com/ -->
-<template>
-  <div :class="['btn', 'btn-' + type, 'btn-sz-' + size]">
-    <text :class="['btn-txt', 'btn-txt-' + type, 'btn-txt-sz-' + size]">{{value}}</text>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    props: {
-      type: { default: 'default' },
-      size: { default: 'large' },
-      value: { default: '' }
-    }
-  }
-</script>
-
-<style scoped>
-  .btn {
-    margin-bottom: 0;
-    align-items: center;
-    justify-content: center;
-    border-width: 1px;
-    border-style: solid;
-    border-color: #333;
-
-    /*white-space: nowrap;*/
-    /*vertical-align: middle;*/
-    /*touch-action: manipulation;*/
-    /*cursor: pointer;*/
-    /*-webkit-user-select: none;*/
-    /*background-image: none;*/
-    /*border-image-source: initial;*/
-    /*border-image-slice: initial;*/
-    /*border-image-width: initial;*/
-    /*border-image-outset: initial;*/
-    /*border-image-repeat: initial;*/
-  }
-
-  .btn-txt {
-
-  }
-
-  /**TYPE**/
-
-  .btn-default {
-    color: rgb(51, 51, 51);
-  }
-
-  .btn-primary {
-    background-color: rgb(40, 96, 144);
-    border-color: rgb(40, 96, 144);
-  }
-
-  .btn-success {
-    background-color: rgb(92, 184, 92);
-    border-color: rgb(76, 174, 76);
-  }
-
-  .btn-info {
-    background-color: rgb(91, 192, 222);
-    border-color: rgb(70, 184, 218);
-  }
-
-  .btn-warning {
-    background-color: rgb(240, 173, 78);
-    border-color: rgb(238, 162, 54);
-  }
-
-  .btn-danger {
-    background-color: rgb(217, 83, 79);
-    border-color: rgb(212, 63, 58);
-  }
-
-  .btn-link {
-    border-color: transparent;
-    border-radius: 0;
-  }
-
-  .btn-txt-default {
-    color: rgb(51, 51, 51);
-  }
-
-  .btn-txt-primary {
-    color: rgb(255, 255, 255);
-  }
-
-  .btn-txt-success {
-    color: rgb(255, 255, 255);
-  }
-
-  .btn-txt-info {
-    color: rgb(255, 255, 255);
-  }
-
-  .btn-txt-warning {
-    color: rgb(255, 255, 255);
-  }
-
-  .btn-txt-danger {
-    color: rgb(255, 255, 255);
-  }
-
-  .btn-txt-link {
-    color: rgb(51, 122, 183);
-    /*font-weight: 400;*/
-  }
-
-  /**SIZE**/
-
-  .btn-sz-large {
-    width: 300px;
-    height: 100px;
-    padding-top: 25px;
-    padding-bottom: 25px;
-    padding-left: 40px;
-    padding-right: 40px;
-    /*line-height: 1.33333;*/
-    border-radius: 15px;
-  }
-
-  .btn-sz-middle {
-    width: 240px;
-    height: 80px;
-    padding-top: 15px;
-    padding-bottom: 15px;
-    padding-left: 30px;
-    padding-right: 30px;
-    /*line-height: 1.42857;*/
-    border-radius: 10px;
-  }
-
-  .btn-sz-small {
-    width: 170px;
-    height: 60px;
-    padding-top: 12px;
-    padding-bottom: 12px;
-    padding-left: 25px;
-    padding-right: 25px;
-    /*line-height: 1.5;*/
-    border-radius: 7px;
-  }
-
-  .btn-txt-sz-large {
-    font-size: 45px;
-  }
-
-  .btn-txt-sz-middle {
-    font-size: 35px;
-  }
-
-  .btn-txt-sz-small {
-    font-size: 30px;
-  }
-
-  /*DISABLED*/
-
-  .disabled {
-
-  }
-
-</style>
diff --git a/examples/vue/include/countdown.vue b/examples/vue/include/countdown.vue
deleted file mode 100644
index b9b6002..0000000
--- a/examples/vue/include/countdown.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-<template>
-  <div style="overflow: hidden; flex-direction: row;"
-  v-on:appear="appeared"
-  v-on:disappear="disappeared">
-  <slot></slot>
-</div>
-</template>
-
-<style scoped>
-.wrap {
-  overflow: hidden;
-}
-</style>
-
-<script>
-function format (str) {
-  if (str.length >= 2) {
-    return str;
-  } else {
-    return '0' + str;
-  }
-}
-
-function getTime(target, now) {
-  var remain = parseInt((target - now) / 1000)
-  var D = String(parseInt(remain / 86400))
-  var DD = format(D)
-  var h = String(parseInt((remain - parseInt(D) * 86400) / 3600))
-  var hh = format(h)
-  var H = String(parseInt(remain / 3600))
-  var HH = format(H)
-  var m = String(parseInt((remain - parseInt(H) * 3600) / 60))
-  var mm = format(m)
-  var M = String(parseInt(remain / 60))
-  var MM = format(M)
-  var s = String(remain - parseInt(M) * 60)
-  var ss = format(s)
-  var S = String(remain)
-  var SS = format(S)
-  return {
-    D: D, DD: DD,
-    h: h, hh: hh,
-    H: H, HH: HH,
-    m: m, mm: mm,
-    M: M, MM: MM,
-    s: s, ss: ss,
-    S: S, SS: SS
-  }
-}
-
-module.exports = {
-  props: {
-    remain: {
-      default: 0
-    }
-  },
-  data: function () {
-    return {
-      now: 0,
-      target: 0,
-      outofview: false
-    }
-  },
-  created: function() {
-    this.now = Date.now();
-    this.target = this.now + this.remain * 1000
-    if (this.remain > 0) {
-      this.run();
-    }
-  },
-  methods: {
-    run: function() {
-      if (!this.outofview) {
-        this.now = Date.now()
-      }
-      var time = getTime(this.target, this.now)
-      if (this.target >= this.now) {
-        this.$emit('tick', time)
-      } else {
-        this.$emit('alarm', time)
-        return
-      }
-      setTimeout(this.run.bind(this), 1000)
-    },
-    appeared: function() {
-      this.outofview = false
-    },
-    disappeared: function() {
-      this.outofview = true
-    }
-  }
-}
-</script>
diff --git a/examples/vue/include/example-list-item.vue b/examples/vue/include/example-list-item.vue
deleted file mode 100644
index 9c16204..0000000
--- a/examples/vue/include/example-list-item.vue
+++ /dev/null
@@ -1,30 +0,0 @@
-<template>
-  <list-item v-on:click="redirect">
-    <text class="item-txt">{{title}}</text>
-  </list-item>
-</template>
-
-<style scoped>
-  .item-txt {
-    font-size: 48px;
-    color: #555;
-  }
-</style>
-
-<script>
-  var event = weex.requireModule('event')
-  module.exports = {
-    props: {
-      title: { default: '456' },
-      url: { default: '' }
-    },
-    components: {
-      listItem: require('./list-item.vue')
-    },
-    methods: {
-      redirect: function() {
-        event.openURL(this.url)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/include/example-list.vue b/examples/vue/include/example-list.vue
deleted file mode 100644
index d9a2a7e..0000000
--- a/examples/vue/include/example-list.vue
+++ /dev/null
@@ -1,35 +0,0 @@
-<template>
-  <list>
-    <cell v-for="(item, i) in items" :key="i" append="tree">
-      <example-list-item :title="item.title" :url="item.url"></example-list-item>
-    </cell>
-  </list>
-</template>
-
-<script>
-  var getBaseURL = require('./base-url.js').getBaseURL
-  module.exports = {
-    props: {
-      dir: {
-        default: 'examples'
-      }, // examples, test ...
-      items: {
-        default: [
-          {name: 'hello', title: 'Hello World', url: ''}
-        ]
-      }
-    },
-    components: {
-      exampleListItem: require('./example-list-item.vue')
-    },
-    created: function() {
-      var base = getBaseURL(this)
-      for (var i in this.items) {
-        var item = this.items[i];
-        if (!item.url) {
-          item.url = base + item.name + '.js';
-        }
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/include/foo.vue b/examples/vue/include/foo.vue
deleted file mode 100644
index 53bf218..0000000
--- a/examples/vue/include/foo.vue
+++ /dev/null
@@ -1,12 +0,0 @@
-<template>
-  <text>{{ title }}</text>
-</template>
-
-<script>
-  module.exports = {
-    props: ['title'],
-    data: function () {
-      return {title: 'x'}
-    }
-  }
-</script>
diff --git a/examples/vue/include/h1.vue b/examples/vue/include/h1.vue
deleted file mode 100644
index 78c0191..0000000
--- a/examples/vue/include/h1.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-<template>
-  <text class="h1">{{value}}</text>
-</template>
-
-<style scoped>
-  .h1 {font-size: 64px; font-weight: bold;
-    padding: 20px; margin-top: 20px; margin-bottom: 20px;
-    background-color: #eee;}
-</style>
-
-<script>
-  exports.props = ['value']
-</script>
diff --git a/examples/vue/include/h2.vue b/examples/vue/include/h2.vue
deleted file mode 100644
index 6362093..0000000
--- a/examples/vue/include/h2.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-<template>
-  <text class="h2">{{value}}</text>
-</template>
-
-<style scoped>
-  .h2 {font-size: 48px; font-weight: bold;
-    padding: 20px; margin-top: 20px; margin-bottom: 20px;
-    background-color: #eee;}
-</style>
-
-<script>
-  exports.props = ['value']
-</script>
diff --git a/examples/vue/include/h3.vue b/examples/vue/include/h3.vue
deleted file mode 100644
index 338b340..0000000
--- a/examples/vue/include/h3.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-<template>
-  <text class="h3">{{value}}</text>
-</template>
-
-<style scoped>
-  .h3 {font-size: 36px; font-weight: bold;
-    padding: 20px; margin-top: 20px; margin-bottom: 20px;
-    background-color: #eee;}
-</style>
-
-<script>
-  exports.props = ['value']
-</script>
diff --git a/examples/vue/include/hn.vue b/examples/vue/include/hn.vue
deleted file mode 100644
index 39e18b6..0000000
--- a/examples/vue/include/hn.vue
+++ /dev/null
@@ -1,47 +0,0 @@
-<template>
-  <div :class="['h' + level]" style="justify-content: center;">
-    <text :class="['txt-h' + level]">{{value}}</text>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    props: {
-      level: { default: 1 },
-      value: { default: '' }
-    }
-  }
-</script>
-
-<style scoped>
-  .h1 {
-    height: 110px;
-    padding-top: 20px;
-    padding-bottom: 20px;
-  }
-
-  .h2 {
-    height: 110px;
-    padding-top: 20px;
-    padding-bottom: 20px;
-  }
-
-  .h3 {
-    height: 110px;
-    padding-top: 20px;
-    padding-bottom: 20px;
-  }
-  
-
-  .txt-h1 {
-    font-size: 70px;
-  }
-
-  .txt-h2 {
-    font-size: 52px;
-  }
-
-  .txt-h3 {
-    font-size: 42px;
-  }
-</style>
diff --git a/examples/vue/include/list-item.vue b/examples/vue/include/list-item.vue
deleted file mode 100644
index 88a835e..0000000
--- a/examples/vue/include/list-item.vue
+++ /dev/null
@@ -1,46 +0,0 @@
-<template>
-  <div
-    :style="{ backgroundColor: bgColor }"
-    class="item"
-    v-on:click="click"
-    v-on:touchstart="touchstart"
-    v-on:touchend="touchend">
-    <slot></slot>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    props:  {
-      bgColor: { default: '#ffffff' }
-    },
-    methods: {
-      click: function () {
-        this.$emit('click')
-      },
-      touchstart: function() {
-        // FIXME android touch
-        // TODO adaptive opposite bgColor
-        // this.bgColor = '#e6e6e6';
-      },
-      touchend: function() {
-        // FIXME android touchend not triggered
-        // this.bgColor = '#ffffff';
-      }
-    }
-  }
-</script>
-
-<style scoped>
-  .item {
-    padding-top: 25px;
-    padding-bottom: 25px;
-    padding-left: 35px;
-    padding-right: 35px;
-    height: 160px;
-    justify-content: center;
-    /*margin-bottom: 1px; FUTURE */
-    border-bottom-width: 1px;
-    border-color: #dddddd;
-  }
-</style>
diff --git a/examples/vue/include/marquee.vue b/examples/vue/include/marquee.vue
deleted file mode 100644
index eeb59de..0000000
--- a/examples/vue/include/marquee.vue
+++ /dev/null
@@ -1,78 +0,0 @@
-<template>
-  <div
-    class="wrap"
-    @appear="appeared"
-    @disappear="disappeared">
-    <div
-      ref="anim"
-      class="anim">
-      <slot></slot>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .wrap {
-    overflow: hidden;
-    position: relative;
-  }
-  .anim {
-    flex-direction: column;
-    position: absolute;
-    transform: translateY(0) translateZ(0);
-  }
-</style>
-
-<script>
-  var animation = weex.requireModule('animation')
-
-  module.exports = {
-    props: {
-      step: { default: 0 },
-      count: { default: 0 },
-      index: { default: 1 },
-      duration: { default: 0 },
-      interval: { default: 0 },
-      outofview: { default: false }
-    },
-    created: function () {
-      if (this.interval > 0 && this.step > 0 && this.duration > 0) {
-        this.run()
-      }
-    },
-    methods: {
-      run: function () {
-        if (this.outofview) {
-          setTimeout(this.run.bind(this), this.interval)
-        } else {
-          setTimeout(function () {
-            this.animation(this.run.bind(this))
-          }.bind(this), this.interval)
-        }
-      },
-      animation: function (cb) {
-        var offset = -this.step * this.index;
-        animation.transition(this.$refs.anim, {
-          styles: {
-            transform: 'translateY(' + offset + 'px) translateZ(0)'
-          },
-          timingFunction: 'ease',
-          duration: this.duration
-        }, function () {
-          this.index = (this.index + 1) % (this.count);
-          this.$emit('change', {
-            index: this.index,
-            count: this.count
-          });
-          cb && cb();
-        }.bind(this));
-      },
-      appeared: function() {
-        this.outofview = false
-      },
-      disappeared: function() {
-        this.outofview = true
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/include/navbar.vue b/examples/vue/include/navbar.vue
deleted file mode 100644
index 69bbe0b..0000000
--- a/examples/vue/include/navbar.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-<template>
-  <div
-    :dataRole="dataRole"
-    class="container"
-    :style="{ height: height, backgroundColor: backgroundColor }">
-    <text
-      v-if="!rightItemSrc"
-      naviItemPosition="right"
-      :style="{ color: rightItemColor }"
-      class="right-text"
-      v-on:click="onclickrightitem">{{rightItemTitle}}</text>
-    <image
-      v-if="rightItemSrc"
-      naviItemPosition="right"
-      :src="rightItemSrc"
-      class="right-image"
-      v-on:click="onclickrightitem"></image>
-    <text
-      v-if="!leftItemSrc"
-      naviItemPosition="left"
-      :style="{ color: leftItemColor }"
-      class="left-text"
-      v-on:click="onclickleftitem">{{leftItemTitle}}</text>
-    <image
-      v-if="leftItemSrc"
-      naviItemPosition="left"
-      :src="leftItemSrc"
-      class="left-image"
-      v-on:click="onclickleftitem"></image>
-    <text
-      naviItemPosition="center"
-      :style="{ color: titleColor }"
-      class="center-text">{{title}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .container {
-    flex-direction: row; 
-    position: fixed; 
-    top: 0; 
-    left: 0; 
-    right: 0; 
-    width: 750;
-  }
-  .right-text {
-    position: absolute; 
-    bottom: 28; 
-    right: 32; 
-    text-align: right;
-    font-size: 32; 
-    font-family: 'Open Sans', sans-serif;
-  }
-  .left-text {
-    position: absolute; 
-    bottom: 28; 
-    left :32; 
-    text-align :left;  
-    font-size: 32; 
-    font-family: 'Open Sans', sans-serif;
-  }
-  .center-text {
-    position: absolute; 
-    bottom: 25; 
-    left: 172; 
-    right: 172;
-    text-align: center; 
-    font-size: 36; 
-    font-weight: bold;
-  }
-  .left-image {
-    position: absolute; 
-    bottom: 20; 
-    left: 28; 
-    width: 50; 
-    height: 50;
-  }
-  .right-image {
-    position: absolute; 
-    bottom: 20; 
-    right: 28; 
-    width: 50; 
-    height: 50;
-  }
-</style>
-
-<script>
-  module.exports = {
-    props: {
-      dataRole: { default: 'navbar' },
-      //导航条背景色
-      backgroundColor: { default: 'black' },
-      //导航条高度
-      height: { default: 88 },
-      //导航条标题 
-      title: { default: '' },
-      //导航条标题颜色
-      titleColor: { default: 'black' },
-      //右侧按钮图片
-      rightItemSrc: { default: '' },
-      //右侧按钮标题
-      rightItemTitle: { default: '' },
-      //右侧按钮标题颜色
-      rightItemColor: { default: 'black' },
-      //左侧按钮图片
-      leftItemSrc: { default: '' },
-      //左侧按钮标题
-      leftItemTitle: { default: '' },
-      //左侧按钮颜色
-      leftItemColor: { default: 'black' }
-    },
-    methods: {
-      onclickrightitem: function (e) {
-        this.$emit('naviBarRightItemClick');
-      },
-      onclickleftitem: function (e) {
-        this.$emit('naviBarLeftItemClick');
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/include/navpage.vue b/examples/vue/include/navpage.vue
deleted file mode 100644
index c9ea887..0000000
--- a/examples/vue/include/navpage.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-<template>
-  <div class="wrapper">
-    <navbar
-      :dataRole="dataRole"
-      :height="height"
-      :backgroundColor="backgroundColor"
-      :title="title"
-      :titleColor="titleColor"
-      :leftItemSrc="leftItemSrc"
-      :leftItemTitle="leftItemTitle"
-      :leftItemColor="leftItemColor"
-      :rightItemSrc="rightItemSrc"
-      :rightItemTitle="rightItemTitle"
-      :rightItemColor="rightItemColor"
-      @naviBarRightItemClick="naviBarRightItemClick"
-      @naviBarLeftItemClick="naviBarLeftItemClick"
-      ></navbar>
-    <div class="wrapper" :style="{ marginTop: height }">
-      <slot></slot>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .wrapper {
-    position: absolute; 
-    top: 0; 
-    left: 0; 
-    right: 0; 
-    bottom: 0; 
-    width: 750;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      navbar: require('./navbar.vue')
-    },
-    props: {
-      dataRole: { default: 'navbar' },
-      backgroundColor: { default: 'black' },
-      height: { default: 88 },
-      title: { default: "" },
-      titleColor: { default: 'black' },
-      rightItemSrc: { default: '' },
-      rightItemTitle: { default: '' },
-      rightItemColor: { default: 'black' },
-      leftItemSrc: { default: '' },
-      leftItemTitle: { default: '' },
-      leftItemColor: { default: 'black' }
-    },
-    methods: {
-      naviBarRightItemClick: function (e) {
-        this.$emit('naviBarRightItemClick', e)
-      },
-      naviBarLeftItemClick: function (e) {
-        this.$emit('naviBarLeftItemClick', e)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/include/panel.vue b/examples/vue/include/panel.vue
deleted file mode 100644
index b0c151f..0000000
--- a/examples/vue/include/panel.vue
+++ /dev/null
@@ -1,141 +0,0 @@
-<!-- Inspired by bootstrap http://getbootstrap.com/ -->
-<template>
-  <div
-    :class="['panel', 'panel-' + type]"
-    :style="{ borderWidth: border }">
-    <text
-      :class="['panel-header', 'panel-header-' + type]"
-      :style="{
-        paddingTop: paddingHead,
-        paddingBottom: paddingHead,
-        paddingLeft: paddingHead*1.5,
-        paddingRight: paddingHead*1.5
-      }">{{title}}</text>
-    <div
-      :class="['panel-body', 'panel-body-' + type]"
-      :style="{
-        paddingTop: paddingBody,
-        paddingBottom: paddingBody,
-        paddingLeft: paddingBody*1.5,
-        paddingRight: paddingBody*1.5
-      }">
-      <slot></slot>
-    </div>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    props: {
-      type: { default: 'default' },
-      title: { default: '' },
-      paddingBody: { default: 20 },
-      paddingHead: { default: 20 },
-      dataClass: { default: '' }, // FIXME transfer class
-      border:{ default: 0 }
-    }
-  }
-</script>
-
-<style scoped>
-  .panel {
-    margin-bottom: 20px;
-    background-color: #fff;
-    /*border: 1px solid transparent;*/
-    /*border-radius: 10px;*/
-    /*-webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);*/
-    /*box-shadow: 0 1px 1px rgba(0,0,0,.05);*/
-    border-color: #dddddd;
-    border-width: 1px;
-  }
-
-  .panel-default {
-  }
-
-  .panel-primary {
-    border-color: rgb(40, 96, 144);
-  }
-
-  .panel-success {
-    border-color: rgb(76, 174, 76);
-
-  }
-
-  .panel-info {
-    border-color: rgb(70, 184, 218);
-
-  }
-
-  .panel-warning {
-    border-color: rgb(238, 162, 54);
-
-  }
-
-  .panel-danger {
-    border-color: rgb(212, 63, 58);
-
-  }
-
-  .panel-header {
-    background-color: #f5f5f5;
-    font-size: 40px;
-    /*padding-left: 12px;*/
-    /*padding-right: 12px;*/
-    /*padding-top: 20px;*/
-    /*padding-bottom: 20px;*/
-    color: #333;
-  }
-
-  .panel-header-default {
-  }
-
-  .panel-header-primary {
-    background-color: rgb(40, 96, 144);
-    color: #ffffff;
-  }
-
-  .panel-header-success {
-    background-color: rgb(92, 184, 92);
-    color: #ffffff;
-  }
-
-  .panel-header-info {
-    background-color: rgb(91, 192, 222);
-    color: #ffffff;
-  }
-
-  .panel-header-warning {
-    background-color: rgb(240, 173, 78);
-    color: #ffffff;
-  }
-
-  .panel-header-danger {
-    background-color: rgb(217, 83, 79);
-    color: #ffffff;
-  }
-
-  .panel-body {
-    padding-left: 12px;
-    padding-right: 12px;
-    padding-top: 20px;
-    padding-bottom: 20px;
-  }
-
-  .panel-body-default {
-  }
-
-  .panel-body-primary {
-  }
-
-  .panel-body-success {
-  }
-
-  .panel-body-info {
-  }
-
-  .panel-body-warning {
-  }
-
-  .panel-body-danger {
-  }
-</style>
diff --git a/examples/vue/include/slider-item.vue b/examples/vue/include/slider-item.vue
deleted file mode 100644
index 94b6828..0000000
--- a/examples/vue/include/slider-item.vue
+++ /dev/null
@@ -1,19 +0,0 @@
-<template>
-  <image class="slider-item" :src="image"></image>
-</template>
-
-<script>
-  module.exports = {
-    props: {
-      image: { default: '' },
-      link: { default: '' },
-    }
-  };
-</script>
-
-<style scoped>
-  .slider-item {
-    width: 348px;
-    height: 400px;
-  }
-</style>
diff --git a/examples/vue/include/slider-page.vue b/examples/vue/include/slider-page.vue
deleted file mode 100644
index 7df0289..0000000
--- a/examples/vue/include/slider-page.vue
+++ /dev/null
@@ -1,26 +0,0 @@
-<template>
-  <div class="slider-page">
-    <slider-item v-for="(v , i) in items" :image="v.image" :key="i" :link="v.link"></slider-item>
-  </div>
-</template>
-
-<style scoped>
-  .slider-page {
-    flex-direction: row;
-    justify-content: space-between;
-
-    width: 714px;
-    height: 420px;
-  }
-</style>
-
-<script>
-  module.exports = {
-    props: {
-      items: { default: [] }
-    },
-    components: {
-      sliderItem: require('./slider-item.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/include/tabbar.vue b/examples/vue/include/tabbar.vue
deleted file mode 100644
index b5087dd..0000000
--- a/examples/vue/include/tabbar.vue
+++ /dev/null
@@ -1,94 +0,0 @@
-<template>
-  <div class="wrapper">
-    <embed
-      v-for="(item , i) in tabItems"
-      :src="item.src"
-      :key="i"
-      type="weex"
-      :style="{ visibility: item.visibility }"
-      class="content"
-      ></embed>
-    <div class="tabbar" append="tree">
-      <tabitem
-        v-for="item in tabItems"
-        :key="item.index"
-        :index="item.index"
-        :icon="item.icon"
-        :title="item.title"
-        :titleColor="item.titleColor"
-        @tabItemOnClick="tabItemOnClick"
-        ></tabItem>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .wrapper {
-    width: 750;
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-  }
-  .content {
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    margin-top: 0;
-    margin-bottom: 88;
-  }
-  .tabbar {
-    flex-direction: row;
-    position: fixed;
-    bottom: 0;
-    left: 0;
-    right: 0;
-    height: 88;
-  }
-</style>
-
-<script>
-  module.exports = {
-    props: {
-      tabItems: { default: [] },
-      selectedColor: { default: '#ff0000' },
-      unselectedColor: { default: '#000000' }
-    },
-    data: function () {
-      return {
-        selectedIndex: 0
-      }
-    },
-    components: {
-      tabitem: require('./tabitem.vue')
-    },
-    created: function () {
-      this.select(this.selectedIndex);
-    },
-    methods: {
-      tabItemOnClick: function (e) {
-        this.selectedIndex = e.index;
-        this.select(e.index);
-        this.$emit('tabBarOnClick', e);
-      },
-      select: function(index) {
-        for(var i = 0; i < this.tabItems.length; i++) {
-          var tabItem = this.tabItems[i];
-          if(i == index){
-            tabItem.icon = tabItem.selectedImage;
-            tabItem.titleColor = this.selectedColor;
-            tabItem.visibility = 'visible';
-          }
-          else {
-            tabItem.icon = tabItem.image;
-            tabItem.titleColor = this.unselectedColor;
-            tabItem.visibility = 'hidden';
-          }
-        }
-      },
-    }
-  }
-</script>
diff --git a/examples/vue/include/tabitem.vue b/examples/vue/include/tabitem.vue
deleted file mode 100644
index 801ca0b..0000000
--- a/examples/vue/include/tabitem.vue
+++ /dev/null
@@ -1,63 +0,0 @@
-<template>
-  <div
-    :style="{ backgroundColor: backgroundColor }"
-    class="container"
-    @click="onclickitem">
-    <image
-      src="http://gtms03.alicdn.com/tps/i3/TB1mdsiMpXXXXXpXXXXNw4JIXXX-640-4.png"
-      class="top-line"></image>
-    <image
-      :src="icon"
-      class="tab-icon"></image>
-    <text
-      :style="{ color: titleColor }"
-      class="tab-text">{{title}}</text>
-  </div>  
-</template>
-
-<style scoped>
-  .container {
-    flex: 1; 
-    flex-direction: column; 
-    align-items:center; 
-    justify-content:center; 
-    height: 88;
-  }
-  .top-line {
-    position: absolute; 
-    top: 0; 
-    left: 0; 
-    right: 0; 
-    height: 2;
-  }
-  .tab-icon {
-    margin-top: 5; 
-    width: 40; 
-    height: 40
-  }
-  .tab-text {
-    margin-top: 5; 
-    text-align: center;  
-    font-size: 20;
-  }
-</style>
-
-<script>
-  module.exports = {
-    props: {
-      index: { default: 0 },
-      title: { default: '' },
-      titleColor: { default: '#000000' },
-      icon: { default: '' },
-      backgroundColor: { default: '#ffffff' }
-    },
-    methods: {
-      onclickitem: function (e) {
-        var params = {
-          index: this.index
-        };
-        this.$emit('tabItemOnClick', params);
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/include/tip.vue b/examples/vue/include/tip.vue
deleted file mode 100644
index 9e47bf3..0000000
--- a/examples/vue/include/tip.vue
+++ /dev/null
@@ -1,65 +0,0 @@
-<!-- Inspired by bootstrap http://getbootstrap.com/ -->
-<template>
-  <div :class="['tip', 'tip-' + type]">
-    <text :class="['tip-txt', 'tip-txt-' + type]">{{value}}</text>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    props: {
-      type: { default: 'success' },
-      value: { default: '' }
-    }
-  }
-</script>
-
-<style scoped>
-  .tip {
-    padding-left: 36px;
-    padding-right: 36px;
-    padding-top: 36px;
-    padding-bottom: 36px;
-    border-radius: 10px;
-  }
-
-  .tip-txt{
-    font-size: 28px;
-  }
-
-  .tip-success {
-    background-color: #dff0d8;
-    border-color: #d6e9c6;
-  }
-
-  .tip-txt-success {
-    color: #3c763d;
-  }
-
-  .tip-info {
-    background-color: #d9edf7;
-    border-color: #bce8f1;
-  }
-
-  .tip-txt-info {
-    color: #31708f;
-  }
-
-  .tip-warning {
-    background-color: #fcf8e3;
-    border-color: #faebcc;
-  }
-
-  .tip-txt-warning {
-    color: #8a6d3b;
-  }
-
-  .tip-danger {
-    background-color: #f2dede;
-    border-color: #ebccd1;
-  }
-
-  .tip-txt-danger {
-    color: #a94442;
-  }
-</style>
diff --git a/examples/vue/include/wxc-list-item.vue b/examples/vue/include/wxc-list-item.vue
deleted file mode 100644
index fd988b4..0000000
--- a/examples/vue/include/wxc-list-item.vue
+++ /dev/null
@@ -1,47 +0,0 @@
-<template>
-  <div
-    class="item" :style="{'background-color': bgColor}"
-    v-on:click="click"
-    v-on:touchstart="touchstart" v-on:touchend="touchend">
-    <text>Hello</text>
-    <slot></slot>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        bgColor: '#ffffff'
-      }
-    },
-    methods: {
-      click: function () {
-        this.$emit('click')
-      },
-      touchstart: function() {
-        // FIXME android touch
-        // TODO adaptive opposite bgColor
-        // this.bgColor = '#e6e6e6';
-      },
-      touchend: function() {
-        // FIXME android touchend not triggered
-        // this.bgColor = '#ffffff';
-      }
-    }
-  }
-</script>
-
-<style scoped>
-  .item {
-    padding-top: 25px;
-    padding-bottom: 25px;
-    padding-left: 35px;
-    padding-right: 35px;
-    height: 160px;
-    justify-content: center;
-    /*margin-bottom: 1px; FUTURE */
-    border-bottom-width: 1px;
-    border-color: #dddddd;
-  }
-</style>
diff --git a/examples/vue/index.vue b/examples/vue/index.vue
deleted file mode 100644
index 49bea15..0000000
--- a/examples/vue/index.vue
+++ /dev/null
@@ -1,71 +0,0 @@
-<template>
-  <example-list :items="items" dir="examples"></example-list>
-</template>
-
-<script>
-  module.exports = {
-    data: function () {
-      var root = typeof window === 'object' ? 'vue-web/vue' : 'vue'
-
-      return {
-        items: [           
-          // common
-          {name: root + '/hello', title: 'Hello World'},
-          {name: root + '/style/index', title: 'Common Style'},
-          {name: root + '/animation', title: 'Animation'},
-          {name: root + '/transition', title: 'Transition'},
-
-          // component
-          {name: root + '/components/text', title: 'Text'},
-          {name: root + '/iconfont', title: 'iconfont'},
-          {name: root + '/components/image', title: 'Image'},
-          {name: root + '/components/input', title: 'Input'},
-          {name: root + '/components/scroller', title: 'Scroller'},
-          {name: root + '/components/list', title: 'List'},
-          {name: root + '/components/waterfall', title: 'Waterfall'},
-          {name: root + '/components/slider', title: 'Slider'},
-          {name: root + '/components/a', title: 'A'},
-          {name: root + '/components/video', title: 'Video'},
-          {name: root + '/components/countdown', title: 'Countdown'},
-          {name: root + '/components/marquee', title: 'Marquee'},
-          {name: root + '/components/web', title: 'Web'},
-          {name: root + '/components/navigator', title: 'Navigator'},
-          {name: root + '/components/tabbar', title: 'Tabbar'},
-
-          // module
-          {name: root + '/modules/instance-api', title: 'Instance API'},
-          {name: root + '/modules/modal', title: 'Modal'},
-          {name: root + '/modules/webSocket', title: 'WebSocket'},
-          {name: root + '/modules/stream', title: 'Stream'},
-          {name: root + '/modules/storage',title:'Storage'},
-          {name: root + '/modules/picker',title:'picker'},
-          // {name: 'module/clipboard', title: 'Clipboard'}, // 0.8 , developing
-
-          // showcase
-          {name: root + '/showcase/boxshadow', title: 'boxshadow'},
-          {name: root + '/showcase/progress', title: 'Progress Bar'},
-          {name: root + '/showcase/itemlist', title: 'List (Advanced)'},
-          {name: root + '/showcase/calculator', title: 'Calculator'},
-          {name: root + '/showcase/tap-penetrate', title: 'TapPenetrate'},
-          {name: root + '/showcase/a-node-click', title: 'ANodeClick'},
-          // {name: root + '/showcase/minesweeper', title: 'Minesweeper'},
-          // {name: root + '/showcase/ui', title: 'UI Gallery'},
-          // {name: root + '/showcase/dropdown/dropdown-demo', title: 'Dropdown'}
-
-          // market
-          {name: root + '/market/gcanvas', title: 'Gcanvas'}
-        ]
-      }
-    },
-    components: {
-      exampleList: require('./include/example-list.vue')
-    },
-    created: function() {
-      let root = typeof window === 'object' ? 'vue-web/vue' : 'vue'
-      let platform = this.$getConfig().env.platform.toLowerCase()
-      if (platform === 'ios') {
-        this.items.push({name: root + '/showcase/compositing', title: 'Compositing'})
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/market/gcanvas.vue b/examples/vue/market/gcanvas.vue
deleted file mode 100644
index 235375e..0000000
--- a/examples/vue/market/gcanvas.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-<template>
-  <div ref="test">
-    <component :is="tagName" width="750" height="750" ref="canvas_holder" style="width:750px;height:750px;"></component>
-  </div>
-</template>
-<script>
-
-  var GCanvas=require('weex-gcanvas');
-  var Image=require('weex-gcanvas/gcanvasimage');
-
-  module.exports = {
-    data() {
-      return {
-        tagName: weex.config.env.platform === 'Web' ? 'canvas' : 'gcanvas'
-      }
-    },
-    mounted: function () {
-      var ref = this.$refs.canvas_holder;
-      var gcanvas = GCanvas.start(ref)
-      var ctx = gcanvas.getContext('2d');
-
-      ctx.fillStyle = 'red';
-      ctx.fillRect(0, 0, 100, 100);
-
-      ctx.fillStyle = 'black';
-      ctx.fillRect(100, 100, 100, 100);
-      ctx.fillRect(25, 210, 700, 5);
-
-      ctx.arc(450, 200, 100, 0, Math.PI * 2, true);
-      ctx.fill();
-
-      var img = new Image();
-      img.onload = function(){
-        ctx.drawImage(img, 100, 200, 210, 330);
-        // ctx.drawImage(img, 0,0,105,165, 100, 200, 210, 330);
-      };
-      img.src = 'https://img.alicdn.com/tps/TB1TFNdKVXXXXbeaXXXXXXXXXXX-210-330.png';
-    }
-  };
-</script>
diff --git a/examples/vue/modules/clipboard.vue b/examples/vue/modules/clipboard.vue
deleted file mode 100644
index eddd380..0000000
--- a/examples/vue/modules/clipboard.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<template>
-  <scroller>
-    <panel title="Clipboard" type="primary">
-      <panel title="Copy to clipboard5">
-        <text style="line-height: 40px; font-size: 28px">{{textToCopy}}</text>
-        <button type="info" size="middle" value="Copy" @click.native="doCopy"></button>
-      </panel>
-
-      <panel title="Paste from clipboard">
-        <text style="line-height: 40px; font-size: 28px">{{textFromPaste}}</text>
-        <button type="info" size="middle" value="Paste" @click.native="doPaste"></button>
-      </panel>
-
-      <panel title="Result">
-        <tip style="margin-bottom: 20px;" :value="tips"></tip>
-      </panel>
-
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  var modal = weex.requireModule('modal')
-  var clipboard = weex.requireModule('clipboard')
-  module.exports = {
-    data: function () {
-      return {
-        textToCopy : '',
-        textFromPaste: '',
-        tips : ''
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      tip: require('../include/tip.vue'),
-      button: require('../include/button.vue')
-    },
-    mounted: function() {
-      this.tips = "1. Just click COPY button. It will auto generate a string with random text, and copy to system clipboard. \n 2. do copy in another app, then come back and click PASTE button."
-    },
-    methods: {
-      doCopy: function() {
-        modal.toast({'message': 'doCopy!', duration: 0.5})
-        textToCopy = "autoGenerateTextToCopy" + Math.random()
-        clipboard.setString(textToCopy)
-        this.textToCopy = textToCopy
-        this.tips = "copy done. Now system clipboard has string of '" + textToCopy + "', try PASTE button, or paste in another app."
-      },
-      doPaste: function() {
-        var me = this
-        modal.toast({'message': 'doPaste!', duration: 0.5})
-        clipboard.getString(function(ret) {
-          console.log("paste result is " + JSON.stringify(ret))
-          me.textFromPaste = ret.data
-          me.tips = "Paste done. Only support native(Android/iOS) NOW. according to security reason, paste in html5 is not supported."
-        })
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/modules/instance-api.vue b/examples/vue/modules/instance-api.vue
deleted file mode 100644
index d5dbf51..0000000
--- a/examples/vue/modules/instance-api.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-<template>
-  <scroller>
-    <panel title="$getConfig()" type="primary">
-      <text>{{config}}</text>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        config: ''
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue')
-    },
-    created: function() {
-      var config = this.$getConfig();
-      console.log('config', JSON.stringify(config));
-      this.config = JSON.stringify(config, null, 2);
-    }
-  }
-</script>
diff --git a/examples/vue/modules/modal.vue b/examples/vue/modules/modal.vue
deleted file mode 100644
index 393662a..0000000
--- a/examples/vue/modules/modal.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-<template>
-  <scroller>
-    <panel title="Toast" type="primary">
-      <button type="primary" @click.native="toast" value="Toast"></button>
-    </panel>
-
-    <panel title="Dialog" type="primary">
-      <button type="success" @click.native="alert" value="Alert" style="margin-bottom: 20px;"></button>
-      <button type="primary" @click.native="confirm" value="Confirm" style="margin-bottom: 20px;"></button>
-      <button type="warning" @click.native="prompt" value="Prompt"></button>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    data: function () {
-      return {}
-    },
-    components: {
-      panel: require('../include/panel.vue'),
-      button: require('../include/button.vue')
-    },
-    methods: {
-      toast: function(msg, duration) {
-        if (!msg || typeof msg !== 'string') {
-          msg = 'I am Toast show!'
-        }
-        duration = duration || 2
-        modal.toast({
-          'message': msg,
-          'duration': duration
-        })
-      },
-      alert: function(msg, okTitle, cancelTitle) {
-        if (!msg || typeof msg !== 'string') {
-          msg = "I am Alert!"
-        }
-         modal.alert({
-          'message': msg,
-          'okTitle': okTitle,
-          'cancelTitle': cancelTitle
-        }, function() {
-          modal.toast({ message: "Click Alert OK Bnt!!" })
-        })
-      },
-      confirm: function(msg, okTitle, cancelTitle) {
-        if (!msg || typeof msg !== 'string') {
-          msg = "I am Confirm!"
-        }
-        okTitle = okTitle || "OK"
-        cancelTitle = cancelTitle || "Cancel"
-        modal.confirm({
-          'message': msg,
-          'okTitle': okTitle,
-          'cancelTitle': cancelTitle
-        }, function(result) {
-          modal.toast({ message: "Click Confirm  " + JSON.stringify(result) })
-        })
-      },
-      prompt: function() {
-        modal.prompt( {
-          'message': 'I am Prompt!',
-          'okTitle': 'ok',
-          'cancelTitle': 'cancel'
-        }, function(result) {
-          modal.toast({ message: "Click Prompt  " + JSON.stringify(result) })
-        })
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/modules/picker.vue b/examples/vue/modules/picker.vue
deleted file mode 100644
index a15ab92..0000000
--- a/examples/vue/modules/picker.vue
+++ /dev/null
@@ -1,64 +0,0 @@
-<template>
-  <div class="conatiner">
-    <div style="background-color: #286090">
-      <text class="title" style="height: 80px ;padding: 20px;color: white">picker</text>
-    </div>
-	<div @click="normalpick" style="margin: 20px;padding:20px;background-color:#1ba1e2;color:#fff;"><text style="color:#fff">normalpick{{normalpickData}}</text></div>
-	<div @click="pickDate" style="margin: 20px;padding:20px;background-color:#1ba1e2;color:#fff;"><text style="color:#fff">pickDate{{pickDateData}}</text></div>
-	<div @click="pickTime" style="margin: 20px;padding:20px;background-color:#1ba1e2;color:#fff;"><text style="color:#fff">pickTime{{pickTimeData}}</text></div>
-  </div>
-</template>
-
-<style>
-  .container {
-	flex: 1;
-  }
-</style>
-
-<script>
-  const picker = weex.requireModule('picker');
-  module.exports = {
-    data: {
-      normalpickData:'',
-      pickDateData:'',
-         pickTimeData:''
-    },
-    methods: {
-      normalpick: function() {
-        var self = this;
-    	picker.pick({
-    	  height: '300px',
-    	  items: [1, 2, 3, 4],
-    	}, function(ret) {
-    	  var result = ret.result;
-    	  if (result == 'success') {
-    		self.normalpickData = ret.data;
-    	  }
-    	})
-      },
-      pickDate: function(e) {
-    	var self = this;
-    	picker.pickDate({
-    	  'value': '2016-12-20',
-    	  'max': '2016-12-30',
-    	  'min': '2014-12-30',
-    	}, function(ret) {
-    	  var result = ret.result;
-    	  if (result == 'success') {
-    		self.pickDateData = ret.data;
-    	  }
-    	});
-      },
-      pickTime:function(){
-    	var self = this;
-    	picker.pickTime({
-    	}, function(ret) {
-    	  var result = ret.result;
-    	  if (result == 'success') {
-    		self.pickTimeData = ret.data;
-    	  }
-    	});
-      }
-    }
-  }
-</script>
\ No newline at end of file
diff --git a/examples/vue/modules/storage.vue b/examples/vue/modules/storage.vue
deleted file mode 100644
index 380b511..0000000
--- a/examples/vue/modules/storage.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-<template>
-  <scroller>
-    <panel title="storage API" type="primary">
-      <panel title="setItem">
-        <text>{{setItemResult}}</text>
-      </panel>
-      <panel title="getItem">
-        <text>{{getItemResult}}</text>
-      </panel>
-      <panel title="length">
-        <text>{{lengthResult}}</text>
-      </panel>
-      <panel title="getAllKeys">
-        <text>{{getAllKeysResult}}</text>
-      </panel>
-      <panel title="removeItem">
-        <text>{{removeItemResult}}</text>
-      </panel>
-    </panel>
-  </scroller>
-</template>
-
-
-<script>
-  var storage = weex.requireModule('storage')
-  module.exports = {
-    data: function () {
-      return {
-        setItemResult:'loading',
-        getItemResult:'loading',
-        removeItemResult:'loading',
-        lengthResult:'loading',
-        getAllKeysResult:'loading'
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue')
-    },
-    created: function() {
-      var me = this
-
-      //setItem
-      storage.setItem('foo','foo-value',function(e){
-        console.log('set [foo<->foo-value]:'+JSON.stringify(e))
-        me.setItemResult = 'foo:'+JSON.stringify(e)+'\n'
-      })
-      storage.setItem('bar','bar-value',function(e){
-        console.log('set [bar<->bar-value]:'+JSON.stringify(e))
-        me.setItemResult = me.setItemResult + 'bar:'+JSON.stringify(e)
-      })
-
-      //getItem
-      storage.getItem('foo',function(e){
-        console.log('get foo result:'+JSON.stringify(e))
-        me.getItemResult = 'get foo,value is '+e.data+'\n'
-      })
-      storage.getItem('bar',function(e){
-        console.log('get bar result:'+JSON.stringify(e))
-        me.getItemResult += 'get bar,value is '+e.data
-      })
-
-      //length
-      storage.length(function(e){
-        console.log('length:'+JSON.stringify(e))
-        me.lengthResult = 'current length is ' + e.data
-      })
-
-      //getAllKeys
-      storage.getAllKeys(function(e){
-        console.log('getAllKeys:'+JSON.stringify(e))
-        me.getAllKeysResult = '' + e.data
-        //me.getAllKeysResult +=' '+ typeof e.data
-      })
-
-      //removeItem
-      storage.removeItem('foo',function(e){
-        console.log('remove foo:'+JSON.stringify(e))
-        me.removeItemResult = 'remove item foo '+e.result
-      })
-    }
-  }
-</script>
diff --git a/examples/vue/modules/stream.vue b/examples/vue/modules/stream.vue
deleted file mode 100644
index 0578ce7..0000000
--- a/examples/vue/modules/stream.vue
+++ /dev/null
@@ -1,170 +0,0 @@
-<template>
-  <scroller>
-    <panel title="stream.fetch" type="primary">
-      <panel title="method = GET">
-        <text>{{getResult}}</text>
-      </panel>
-      <panel title="method = GET / type = jsonp">
-        <text>{{getJsonpResult}}</text>
-      </panel>
-      <panel title="method = POST">
-        <text>{{postResult}}</text>
-      </panel>
-      <panel title="method = PUT">
-        <text>{{putResult}}</text>
-      </panel>
-      <panel title="method = DELETE">
-        <text>{{deleteResult}}</text>
-      </panel>
-      <panel title="method = HEAD">
-        <text>{{headResult}}</text>
-      </panel>
-      <panel title="method = PATCH">
-        <text>{{patchResult}}</text>
-      </panel>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  var stream = weex.requireModule('stream');
-  module.exports = {
-    data: function () {
-      return {
-        getJsonpResult: 'loading...',
-        getResult: 'loading...',
-        postResult: 'loading...',
-        putResult: 'loading...',
-        deleteResult: 'loading...',
-        headResult: 'loading...',
-        patchResult: 'loading...'
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue')
-    },
-    created: function() {
-      var me = this;
-      var GET_URL_JSONP = 'http://jsfiddle.net/echo/jsonp/?callback=anything&result=content_in_response';
-      var GET_URL = 'http://httpbin.org/get';
-      var POST_URL = 'http://httpbin.org/post';
-      var PUT_URL = 'http://httpbin.org/put';
-      var DELETE_URL = 'http://httpbin.org/delete';
-      var HEAD_URL = 'http://httpbin.org/status/418';
-      var PATCH_URL = 'http://httpbin.org/patch';
-
-      stream.fetch({
-        method: 'GET',
-        url: GET_URL_JSONP,
-        type:'jsonp'
-      }, function(ret) {
-        if(!ret.ok){
-          me.getJsonpResult = "request failed";
-        }else{
-          console.log('get:'+ret);
-          me.getJsonpResult =  JSON.stringify(ret.data);
-        }
-      },function(response){
-        console.log('get jsonp in progress:'+response.length);
-        me.getJsonpResult = "bytes received:"+response.length;
-      });
-
-      stream.fetch({
-        method: 'GET',
-        url: GET_URL,
-        type:'json'
-      }, function(ret) {
-        if(!ret.ok){
-          me.getResult = "request failed";
-        }else{
-          console.log('get:'+ret);
-          me.getResult = JSON.stringify(ret.data);
-        }
-      },function(response){
-        console.log('get in progress:'+response.length);
-        me.getResult = "bytes received:"+response.length;
-      });
-
-      stream.fetch({
-        method: 'POST',
-        url: POST_URL,
-        type:'json'
-      }, function(ret) {
-        if(!ret.ok){
-          me.postResult = "request failed";
-        }else{
-          console.log('get:'+JSON.stringify(ret));
-          me.postResult = JSON.stringify(ret.data);
-        }
-      },function(response){
-        console.log('get in progress:'+response.length);
-        me.postResult = "bytes received:"+response.length;
-      });
-
-      stream.fetch({
-        method: 'PUT',
-        url: PUT_URL,
-        type:'json'
-      }, function(ret) {
-        if(!ret.ok){
-          me.putResult = "request failed";
-        }else{
-          console.log('get:'+JSON.stringify(ret));
-          me.putResult = JSON.stringify(ret.data);
-        }
-      },function(response){
-        console.log('get in progress:'+response.length);
-        me.putResult = "bytes received:"+response.length;
-      });
-
-      stream.fetch({
-        method: 'DELETE',
-        url: DELETE_URL,
-        type:'json'
-      }, function(ret) {
-
-        if(!ret.ok){
-          me.deleteResult = "request failed";
-        }else{
-          console.log('get:'+JSON.stringify(ret));
-          me.deleteResult = JSON.stringify(ret.data);
-        }
-      },function(response){
-        console.log('get in progress:'+response.length);
-        me.deleteResult = "bytes received:"+response.length;
-      });
-
-      stream.fetch({
-        method: 'HEAD',
-        url: HEAD_URL,
-        type:'json'
-      }, function(ret) {
-        if(ret.statusText !== 'I\'m a teapot'){
-          me.headResult = "request failed";
-        }else{
-          console.log('get:'+JSON.stringify(ret));
-          me.headResult = ret.statusText;
-        }
-      },function(response){
-        console.log('get in progress:'+response.length);
-        me.headResult = "bytes received:"+response.length;
-      });
-
-      stream.fetch({
-        method: 'PATCH',
-        url: PATCH_URL,
-        type:'json'
-      }, function(ret) {
-        if(!ret.ok){
-          me.patchResult = "request failed";
-        }else{
-          console.log('get:'+JSON.stringify(ret));
-          me.patchResult = JSON.stringify(ret.data);
-        }
-      },function(response){
-        console.log('get in progress:'+response.length);
-        me.patchResult = "bytes received:"+response.length;
-      });
-    }
-  };
-</script>
diff --git a/examples/vue/modules/websocket.vue b/examples/vue/modules/websocket.vue
deleted file mode 100644
index 2620677..0000000
--- a/examples/vue/modules/websocket.vue
+++ /dev/null
@@ -1,136 +0,0 @@
-<template>
-  <scroller>
-    <div>
-      <div style="background-color: #286090">
-        <text class="title" style="height: 80px ;padding: 20px;color: white">websocket</text>
-      </div>
-      <input type="text" placeholder="please input message to send" class="input" autofocus="false" value="" @input="oninput" ref="input" />
-      <div style="flex-direction: row; justify-content: center;">
-        <text class="button" @click="connect">connect</text>
-        <text class="button" @click="send">send</text>
-        <text class="button" @click="sendArrayBuffer">sendArrayBuffer</text>
-        <text class="button" @click="close">close</text>
-      </div>
-      <div style="background-color: lightgray">
-        <text class="title" style="height: 80px ;padding: 20px;color: black">method = close</text>
-      </div>
-      <text style="color: black;height: 80px">{{closeinfo}}</text>
-      <div style="background-color: lightgray">
-        <text class="title" style="height: 80px ;padding: 20px;color: black">method = send</text>
-      </div>
-      <text style="color: black;height: 80px">{{sendinfo}}</text>
-      <div style="background-color: lightgray">
-        <text class="title" style="height: 80px ;padding: 20px;color: black">method = onopen</text>
-      </div>
-      <text style="color: black;height: 80px">{{onopeninfo}}</text>
-      <div style="background-color: lightgray">
-        <text class="title" style="height: 80px ;padding: 20px;color: black">method = onmessage</text>
-      </div>
-      <text style="color: black;height: 400px">{{onmessage}}</text>
-      <div style="background-color: lightgray">
-        <text class="title" style="height: 80px ;padding: 20px;color: black">method = onclose</text>
-      </div>
-      <text style="color: black;height: 80px">{{oncloseinfo}}</text>
-      <div style="background-color: lightgray">
-        <text class="title" style="height: 80px ;padding: 20px;color: black">method = onerror</text>
-      </div>
-      <text style="color: black;height: 80px">{{onerrorinfo}}</text>
-    </div>
-  </scroller>
-</template>
-
-<style scoped>
-  .input {
-    font-size: 40px;
-    height: 80px;
-    width: 600px;
-  }
-  
-  .button {
-    font-size: 36px;
-    width: 150px;
-    color: #41B883;
-    text-align: center;
-    padding-top: 25px;
-    padding-bottom: 25px;
-    border-width: 2px;
-    border-style: solid;
-    margin-right: 20px;
-    border-color: rgb(162, 217, 192);
-    background-color: rgba(162, 217, 192, 0.2);
-  }
-</style>
-
-<script>
-  var websocket = weex.requireModule('webSocket')
-  export default {
-    data() {
-      return {
-        connectinfo: '',
-        sendinfo: '',
-        onopeninfo: '',
-        onmessage: '',
-        oncloseinfo: '',
-        onerrorinfo: '',
-        closeinfo: '',
-        txtInput: '',
-        navBarHeight: 88,
-        title: 'Navigator',
-        dir: 'examples',
-        baseURL: ''
-      }
-    },
-    methods: {
-
-      connect: function() {
-        websocket.WebSocket('ws://echo.websocket.org', '');
-        var self = this;
-        self.onopeninfo = 'connecting...'
-        websocket.onopen = function(e) {
-          self.onopeninfo = 'websocket open';
-        }
-        websocket.onmessage = function(e) {
-          console.log(typeof(e.data));
-          if(typeof(e.data) === 'string'){
-            self.onmessage = e.data;
-          }else
-          {
-            var str = 'receive array buffer show with string:' +  String.fromCharCode.apply(null, new Float32Array(e.data));
-            self.onmessage = str;
-          }
-        }
-        websocket.onerror = function(e) {
-          self.onerrorinfo = e.data;
-        }
-        websocket.onclose = function(e) {
-          self.onopeninfo = '';
-          self.oncloseinfo = e.code;
-        }
-      },
-      send: function(e) {
-        var input = this.$refs.input;
-        input.blur();
-        websocket.send(this.txtInput);
-        this.sendinfo = this.txtInput;
-      },
-      sendArrayBuffer: function(e) {
-        var input = this.$refs.input;
-        input.blur();
-        var buffer = new ArrayBuffer(16)
-        var view = new Float32Array(buffer)
-        view.set([4,89,36.9,0.765])
-        console.log(buffer);
-        var str = 'send array buffer show with string:' +  String.fromCharCode.apply(null, new Float32Array(buffer));
-        this.sendinfo = str;
-        websocket.send(buffer);
-      },
-      oninput: function(event) {
-        this.txtInput = event.value;
-      },
-      close: function(e) {
-        this.closeinfo = 'close connect';
-        websocket.close();
-      },
-    },
-  }
-</script>
\ No newline at end of file
diff --git a/examples/vue/showcase/a-node-click.vue b/examples/vue/showcase/a-node-click.vue
deleted file mode 100644
index 26d5282..0000000
--- a/examples/vue/showcase/a-node-click.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<template>
-  <list class="list">
-    <cell class="cell" @click="clickCell">
-      <xlink style="width: 400px;height: 400px;background-color: yellow;" target="_blank" :href = "url">
-        <div class="ct"  @click="click">
-          <text>CLICK ME</text>
-        </div>
-      </xlink>
-    </cell>
-  </list>
-</template>
-
-<style scoped>
-.list {
-  height: 2000px;
-}
-.cell {
-  height: 400px;
-  background-color: blue;
-}
-.txt {
-  font-size: 64px;
-  height: 84px;
-  line-height: 84px;
-  padding: 10px;
-}
-.ct {
-  width: 200px;
-  height: 200px;
-  background-color: #fff;
-}
-</style>
-
-<script>
-export default {
-  data () {
-    return {
-      // url: '//m.taobao.com'
-      url: '#'
-    }
-  },
-  components: {
-    xlink: {
-      props: {
-        href: String
-      },
-      render (createElement) {
-        return createElement('a', {
-          ref: 'link',
-          attrs: {
-            'component-name': 'link',
-            'href': this.href
-          }
-        }, this.$slots.default)
-      }
-    }
-  },
-  methods: {
-    click (evt) {
-      evt.preventDefault()
-      // var d = Date.now()
-      // while (true) {
-      //   var now = Date.now()
-      //   if (now - d > 2000) { break }
-      // }
-      // throw new Error('test')
-      console.log('click on inner')
-    },
-    clickCell (evt) {
-      console.log('click on cell')
-    }
-  }
-}
-</script>
\ No newline at end of file
diff --git a/examples/vue/showcase/boxshadow.vue b/examples/vue/showcase/boxshadow.vue
deleted file mode 100644
index d656b23..0000000
--- a/examples/vue/showcase/boxshadow.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-
-<template>
-    <div class="wrapper">
-        <div style="width:400px; height:60px;background-color: #FFE4C4; box-shadow:20px  10px rgb(255, 69, 0);">
-            <text class="title" style="text-align: center">Hello {{target}}</text>
-        </div>
-        <div style="margin-top: 80px;width:400px; height:60px;background-color: #FFE4C4; box-shadow: 20px  10px 5px rgba(255, 69, 0, 0.8);">
-            <text class="title" style="text-align: center">Hello {{target}}</text>
-        </div>
-        <div style="margin-top: 80px;width:400px; height:60px;background-color: #FFE4C4; box-shadow:inset 20px  10px 5px rgba(255, 69, 0, 0.8);">
-            <text class="title" style="text-align: center">Hello {{target}}</text>
-        </div>
-        <div style="margin-top: 80px;width:400px; height:60px;background-color: #FFE4C4; box-shadow:inset 20px  10px 5px rgb(255, 69, 0);">
-            <text class="title" style="text-align: center">Hello {{target}}</text>
-        </div>
-        <div style="margin-top: 80px;width:400px; height:60px;background-color: #FFE4C4; box-shadow:20px  10px 5px black;">
-            <text class="title" style="text-align: center">Hello {{target}}</text>
-        </div>
-        <div style="margin-top: 80px;width:400px; height:60px;background-color: #FFE4C4; box-shadow:20px  10px 5px #008B00;">
-            <text class="title" style="text-align: center">Hello {{target}}</text>
-        </div>
-    </div>
-</template>
-
-<style scoped>
-    .wrapper {align-items: center; margin-top: 120px;}
-    .title {font-size: 48px;}
-</style>
-
-<script>
-    module.exports = {
-        data: function () {
-            return {
-                logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-                target: 'World'
-            };
-        }
-    };
-</script>
diff --git a/examples/vue/showcase/calculator.vue b/examples/vue/showcase/calculator.vue
deleted file mode 100644
index d945077..0000000
--- a/examples/vue/showcase/calculator.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-  <div style="padding: 5px;">
-    <text class="result">{{result}}</text>
-    <div class="row">
-      <text class="btn" @click="input">1</text>
-      <text class="btn" @click="input">2</text>
-      <text class="btn" @click="input">3</text>
-      <text class="btn btn-operator" @click="input">+</text>
-    </div>
-    <div class="row">
-      <text class="btn" @click="input">4</text>
-      <text class="btn" @click="input">5</text>
-      <text class="btn" @click="input">6</text>
-      <text class="btn btn-operator" @click="input">-</text>
-    </div>
-    <div class="row">
-      <text class="btn" @click="input">7</text>
-      <text class="btn" @click="input">8</text>
-      <text class="btn" @click="input">9</text>
-      <text class="btn btn-operator" @click="input">*</text>
-    </div>
-    <div class="row">
-      <text class="btn" @click="input">0</text>
-      <text class="btn" @click="input">.</text>
-      <text class="btn" @click="clear">AC</text>
-      <text class="btn btn-operator" @click="calculate">=</text>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .row {
-    flex-direction: row;
-  }
-
-  .result {
-    text-align: right;
-    background-color: #666;
-    font-size: 40px;
-    color: white;
-  }
-
-  .btn {
-    flex: 1;
-    text-align: center;
-    background-color: #eee;
-    font-size: 36px;
-  }
-
-  .btn, .result {
-    height: 100px;
-    padding: 30px;
-    margin: 5px;
-  }
-
-  .btn-operator {
-    background-color: #669;
-    font-size: 40px;
-    color: white;
-  }
-</style>
-
-<script>
-  var OP = ['+', '-', '*', '/'];
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    data: function () {
-      return {
-        result: '',
-        inputs: []
-      }
-    },
-    methods: {
-      input: function(e) {
-        modal.toast({ message: 'input: ' + e.target.attr.value, duration: 1 })
-        var value = e.target.attr['value'];
-        var inputs = this.inputs;
-        var lastOne = inputs.length ? inputs[inputs.length - 1] : '';
-        if (OP.indexOf(lastOne) > -1 && OP.indexOf(value) > -1) {
-          return;
-        }
-        inputs.push(value);
-        var buf = [], char;
-        for (var i = 0; i < inputs.length; i++) {
-          char = inputs[i];
-          if (OP.indexOf(char) > -1) {
-            char = ' ' + char + ' ';
-          }
-          buf.push(char);
-        }
-        this.result = buf.join('');
-      },
-      calculate: function() {
-        var result = eval(this.result);
-        this.inputs = [result];
-        this.result = result;
-      },
-      clear: function() {
-        this.inputs = [];
-        this.result = '';
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/compositing.vue b/examples/vue/showcase/compositing.vue
deleted file mode 100644
index 58e238f..0000000
--- a/examples/vue/showcase/compositing.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-
-<template>
-  <div class="wrapper" @click="update" >
-    <div class="item" compositing=true>
-      <div class="itemWrapper">
-        <div class="nameWrapper">
-          <text class="itemName">Thomas Carlyle</text>
-        </div>
-        <image class="itemPhoto" src="https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg"></image>
-        <div class="descWrapper">
-          <text class="itemDesc">Genius only means hard-working all one\'s life</text>
-        </div>
-      </div>
-    </div>
-
-    <div class="item" compositing=false>
-      <div class="itemWrapper">
-        <div class="nameWrapper">
-          <text class="itemName">Thomas Carlyle</text>
-        </div>
-        <image class="itemPhoto" src="https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg"></image>
-        <div class="descWrapper">
-          <text class="itemDesc">Genius only means hard-working all one\'s life</text>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style>
-  .wrapper {
-    align-items: center; 
-    opacity: 0.8;
-  }
-  .itemWrapper {
-    flex:1;
-    border-top-right-radius: 80;
-    border-bottom-right-radius: 80;
-    border-top-width: 10;
-    border-top-color: red;
-    border-style: dashed;
-    align-items: center;
-    background-color: white;
-  }
-  .nameWrapper {
-    background-color:rgba(255,0,0,0.5);
-    border-radius: 30;
-    overflow: visible;
-    border-color: black;
-    border-width: 10;
-  }
-  .item {
-    margin-top: 120px; 
-    background-color: #CCCCCC;
-    align-items: center;
-  }
-  .itemName {
-    font-size:28;
-    color:#333333;
-    line-height:42;
-    text-align:left;
-    margin-top: 24;
-  }
-  .itemPhoto {
-    margin-top: 18;
-    width: 220;
-    height: 220;
-    margin-bottom: 18;
-    border-radius: 30;
-    overflow: hidden;
-    background-color: blue;
-  }
-  .itemDesc {
-    font-size:24;
-    margin:12;
-    color:#999999;
-    line-height:36;
-    text-align:left;
-  }
-</style>
-
-<script>
-  module.exports = {
-    data: {
-    },
-    methods: {
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/gesture.vue b/examples/vue/showcase/gesture.vue
deleted file mode 100644
index 75759f3..0000000
--- a/examples/vue/showcase/gesture.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-<template>
-  <div>
-    <div class="ct"
-      @longpress="handlePress"
-      @swipe="handleSwipe"
-      @panstart="handlePanStart"
-      @panmove="handlePanMove"
-      @panend="handlePanEnd"
-      :style="{ top: top, left: left }">
-        <text>{{text}}</text>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-.ct {
-  position: absolute;
-  width: 750px;
-  height: 1000px;
-  background-color: #f7f7f7;
-}
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        text: 'no press.',
-        top: '0px',
-        left: '0px',
-        flag: false,
-      }
-    },
-    methods: {
-      handlePress: function(e) {
-        this.text = '->longpress(' + e.touch.pageX + ',' + e.touch.pageY + ')id:'+ e.touch.identifier
-      },
-      handleSwipe: function(e) {
-        this.text += '->swipe(' + e.touch.pageX + ',' + e.touch.pageY + ')id:'+ e.touch.identifier
-      },
-      handlePanStart: function(e) {
-        this.flag = false
-        this.text = '->panstart(' + e.touch.pageX + ',' + e.touch.pageY + ')id:'+ e.touch.identifier
-      },
-      handlePanMove: function(e) {
-        if (this.flag) {
-          return
-        }
-        this.flag = true
-        this.text += '->panmove(' + e.touch.pageX + ',' + e.touch.pageY + ')id:'+ e.touch.identifier
-      },
-      handlePanEnd: function(e) {
-        this.text += '->panend(' + e.touch.pageX + ',' + e.touch.pageY + ')id:'+ e.touch.identifier
-      }
-    }
-  }
-</script>
\ No newline at end of file
diff --git a/examples/vue/showcase/include/banner.vue b/examples/vue/showcase/include/banner.vue
deleted file mode 100644
index 1d814cc..0000000
--- a/examples/vue/showcase/include/banner.vue
+++ /dev/null
@@ -1,23 +0,0 @@
-<template>
-  <image :style="{ width: width, height: height }" :src="src" :image-quality="quality"
-    @click="clickHandler"></image>
-</template>
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    props: ['width', 'height', 'src', 'href'],
-    data: function () {
-      return {
-        quality: 'normal'
-      }
-    },
-    methods: {
-      clickHandler: function () {
-        modal.toast({
-          message: 'click',
-          duration: 1
-        });
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/showcase/include/banners.vue b/examples/vue/showcase/include/banners.vue
deleted file mode 100644
index 911c54c..0000000
--- a/examples/vue/showcase/include/banners.vue
+++ /dev/null
@@ -1,22 +0,0 @@
-<template>
-  <div>
-    <div v-if="direction==='row'" style="flex-direction:row">
-      <div v-for="(item,i) in ds" :key="i" :style="{ width: width, height: height, marginLeft: (i % ds.length ? space : 0) }">
-        <banner :width="width" :height="height" :src="item.img" :href="item.url"></banner>
-      </div>
-    </div>
-    <div v-if="direction==='column'">
-      <div v-for="(item,i) in ds" :key="i" :style="{ width: width, height: height, marginTop: (i % ds.length ? space : 0) }">
-        <banner :width="width" :height="height" :src="item.img" :href="item.url"></banner>
-      </div>
-    </div>
-  </div>
-</template>
-<script>
-  module.exports = {
-    components: {
-      banner: require('./banner.vue')
-    },
-    props: ['ds', 'width', 'height', 'space', 'direction']
-  };
-</script>
diff --git a/examples/vue/showcase/include/brand.vue b/examples/vue/showcase/include/brand.vue
deleted file mode 100644
index f884e48..0000000
--- a/examples/vue/showcase/include/brand.vue
+++ /dev/null
@@ -1,63 +0,0 @@
-<template>
-  <div class="container">
-    <image v-if="ds.floorTitle" class="title" :src="ds.floorTitle"></image>
-    <div style="margin-left:4;margin-right:4">
-      <banners direction="column" :ds="bannerItems" :width="NUMBER_742" :height="NUMBER_230" :space="NUMBER_4"></banners>
-    </div>
-  </div>
-</template>
-<style scoped>
-  .title {
-    width: 750;
-    height: 100;
-  }
-
-  .container {
-    margin-bottom: 4;
-    background-color:#C0BABC;
-  }
-</style>
-<script>
-  module.exports = {
-    components: {
-      banners: require('./banners.vue')
-    },
-    props: {
-      ds: {
-        default: function () {
-          return {
-            bannerItems: []
-          }
-        }
-      }
-    },
-    data: function () {
-      return {
-        NUMBER_742: 742,
-        NUMBER_230: 230,
-        NUMBER_4: 4
-      }
-    },
-    computed: {
-      bannerItems: function () {
-        return this.ds.bannerItems.slice(0,8);
-      }
-    },
-    created: function () {
-      var bannerItems = this.ds.bannerItems
-      bannerItems.sort(function(){
-        return Math.random()-0.5;
-      });
-      for(var i=0;i<bannerItems.length;i++){
-        var item =  bannerItems[i];
-        if(i%2===0){
-          item.img = item.leftImg;
-          item.url = item.rightUrl;
-        }else{
-          item.img = item.rightImg;
-          item.url = item.rightUrl;
-        }
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/include/category.vue b/examples/vue/showcase/include/category.vue
deleted file mode 100644
index 4f16772..0000000
--- a/examples/vue/showcase/include/category.vue
+++ /dev/null
@@ -1,513 +0,0 @@
-<template>
-  <div>
-    <image v-if="ds.floorTitle" class="title" :src="ds.floorTitle"></image>
-    <div class="item-container">
-      <div v-for="(item,i) in items" :key="i" :style="{ width: 750, paddingBottom: 14, backgroundColor: item.colour }">
-        <div>
-          <banner :width="NUMBER_750" :height="NUMBER_237"
-            :src="i % 2 === 0 ? item.leftBannerImg : item.rightBannerImg"
-            :href="item.bannerUrl"></banner>
-        </div>
-        <div class="shop-list">
-          <div v-for="(i, shop) in item.shopList" :key="i" class="shop-img-container">
-            <banner :width="NUMBER_186" :height="NUMBER_208" :src="shop.picUrl" :href="shop.shopUrl"></banner>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="sub-item-container" :style="{ height: Math.round(subItems.length / 3) * (241 + 3) }">
-      <div v-for="(item,i) in subItems" :key="i" class="sub-item" :style="{top: getSubItemTop(i), left: getSubItemLeft(i) }">
-        <image class="sub-item-bg" :src="subItemBg"></image>
-        <div class="sub-item-img">
-          <banner :width="NUMBER_248" :height="NUMBER_155"
-            :src="item.industryImg"
-            :href="item.industryUrl"></banner>
-        </div>
-        <div class="sub-item-title">
-          <text class="industry-title" :href="item.industryUrl">{{item.industryTitle}}</text>
-          <text class="industry-benefit" :href="item.industryUrl">{{item.industryBenefit}}</text>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .title {
-    width: 750;
-    height: 100;
-  }
-
-  .shop-list {
-    flex-direction: row;
-  }
-
-  .shop-img-container {
-    margin-right: 2;
-  }
-
-  .sub-item {
-    position: absolute;
-    width: 248;
-    height: 241;
-    align-items: center;
-    background-color:#ffffff;
-  }
-
-  .sub-item-bg {
-    width: 248;
-    height: 86;
-  }
-
-  .sub-item-title {
-    position: absolute;
-    left: 0;
-    top: 0;
-    width: 248;
-    text-align: center;
-  }
-
-  .industry-title {
-    font-size: 28;
-    color: #484848;
-    text-align: center;
-    margin-top: 10;
-    height:34;
-  }
-
-  .industry-benefit {
-    font-size: 24;
-    color: #999999;
-    text-align: center;
-  }
-</style>
-
-<script>
-  var demoContent = {
-    "main": [{
-      "shopList": [{
-        "id": "619123122",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1Cl5MLVXXXXXTaXXXSutbFXXX.jpg",
-        "finalScore": "0.884765209440857",
-        "shopUrl": "http://liangpinpuzi.tmall.com/campaign-3735-7.htm",
-        "entityType": "SHOP",
-        "brandId": "7724367"
-      }, {
-        "id": "880734502",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1HN2XLVXXXXbkXFXXSutbFXXX.jpg",
-        "finalScore": "0.8822246866512714",
-        "shopUrl": "http://sanzhisongshu.tmall.com/campaign-3735-7.htm",
-        "entityType": "SHOP",
-        "brandId": "147280915"
-      }, {
-        "id": "392147177",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1yq6dLVXXXXbXXpXXSutbFXXX.jpg",
-        "finalScore": "0.8805854724243631",
-        "shopUrl": "http://zhouheiya.tmall.com/campaign-3735-6.htm",
-        "entityType": "SHOP",
-        "brandId": "111496"
-      }, {
-        "id": "2081058060",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1w4jxLVXXXXaxXXXXtKXbFXXX.gif",
-        "finalScore": "0.8640439551049249",
-        "shopUrl": "http://rongxintang.tmall.com/campaign-3735-6.htm",
-        "entityType": "SHOP",
-        "brandId": "8709890"
-      }],
-      "finalScore": "4.657333333333334",
-      "industryUrl": null,
-      "entityType": "OTHER",
-      "colour": "#fff5a3",
-      "industryTitle": null,
-      "bannerUrl": "//pages.tmall.com/wow/act/15617/newfood?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_12_735362&pos=1",
-      "leftBannerImg": "http://img.alicdn.com/tps/i1/TB1LHh4MXXXXXbsXpXXeWjm2pXX-750-240.jpg",
-      "_pos_": "1",
-      "industryBenefit": null,
-      "industryId": "12",
-      "industryImg": null,
-      "rightBannerImg": "//img.alicdn.com/tps/i4/TB1wshUMXXXXXXaXVXXeWjm2pXX-750-240.jpg"
-    }, {
-      "shopList": [{
-        "id": "520557274",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1aMjXLVXXXXbUaXXXSutbFXXX.jpg",
-        "finalScore": "0.8986382989845325",
-        "shopUrl": "http://newbalance.tmall.com/campaign-3735-20.htm",
-        "entityType": "SHOP",
-        "brandId": "20584"
-      }, {
-        "id": "746866993",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1pXG9LVXXXXaLXFXXSutbFXXX.jpg",
-        "finalScore": "0.8917855242977327",
-        "shopUrl": "http://vans.tmall.com/campaign-3735-19.htm",
-        "entityType": "SHOP",
-        "brandId": "29529"
-      }, {
-        "id": "1612713147",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1jHfXLVXXXXXPXFXXSutbFXXX.jpg",
-        "finalScore": "0.8895943606442631",
-        "shopUrl": "http://dcshoecousa.tmall.com/campaign-3735-8.htm",
-        "entityType": "SHOP",
-        "brandId": "3851662"
-      }, {
-        "id": "2379251418",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1sbLlLVXXXXbeXXXXSutbFXXX.jpg",
-        "finalScore": "0.8881539668874383",
-        "shopUrl": "http://baijinydhw.tmall.com/campaign-3735-2.htm",
-        "entityType": "SHOP",
-        "brandId": "20579"
-      }],
-      "finalScore": "4.545333333333334",
-      "industryUrl": null,
-      "entityType": "OTHER",
-      "colour": "#cbdbfe",
-      "industryTitle": null,
-      "bannerUrl": "//pages.tmall.com/wow/act/15617/ydhw?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_8_735362&pos=2",
-      "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1h4kzLVXXXXawXpXXeWjm2pXX-750-240.jpg",
-      "_pos_": "2",
-      "industryBenefit": null,
-      "industryId": "8",
-      "industryImg": null,
-      "rightBannerImg": "//img.alicdn.com/tps/i4/TB19VMjLVXXXXaeaXXXeWjm2pXX-750-240.jpg"
-    }, {
-      "shopList": [{
-        "id": "811383091",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1q49ZLVXXXXaJXVXXSutbFXXX.jpg",
-        "finalScore": "0.8723682716749482",
-        "shopUrl": "http://tongrentangbj.tmall.com/campaign-3735-9.htm",
-        "entityType": "SHOP",
-        "brandId": "44652"
-      }, {
-        "id": "838914626",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1GQYbLVXXXXaXXVXXSutbFXXX.jpg",
-        "finalScore": "0.5027131908086584",
-        "shopUrl": "http://jouo.tmall.com/campaign-3735-3.htm",
-        "entityType": "SHOP",
-        "brandId": "14170081"
-      }, {
-        "id": "1077716829",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1rdW2LVXXXXagapXXSutbFXXX.jpg",
-        "finalScore": "0.5015387557024262",
-        "shopUrl": "http://wetcode.tmall.com/campaign-3735-14.htm",
-        "entityType": "SHOP",
-        "brandId": "3675642"
-      }, {
-        "id": "1664976033",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1Q.rpLVXXXXXiXpXXSutbFXXX.jpg",
-        "finalScore": "0.5014897109669442",
-        "shopUrl": "http://hanhoohzp.tmall.com/campaign-3735-17.htm",
-        "entityType": "SHOP",
-        "brandId": "78888695"
-      }],
-      "finalScore": "4.526666666666666",
-      "industryUrl": null,
-      "entityType": "OTHER",
-      "colour": "#ffd1b6",
-      "industryTitle": null,
-      "bannerUrl": "//pages.tmall.com/wow/act/15617/getbeauty?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_2_735362&pos=3",
-      "leftBannerImg": "http://img.alicdn.com/tps/i4/TB1Djt9MXXXXXanXXXXeWjm2pXX-750-240.jpg",
-      "_pos_": "3",
-      "industryBenefit": null,
-      "industryId": "2",
-      "industryImg": null,
-      "rightBannerImg": "//img.alicdn.com/tps/i3/TB1_gVQMXXXXXX9XVXXeWjm2pXX-750-240.jpg"
-    }, {
-      "shopList": [{
-        "id": "2153169655",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1nlK7LVXXXXaRXFXXSutbFXXX.jpg",
-        "finalScore": "0.8820210808835905",
-        "shopUrl": "http://ctkicks.tmall.com/campaign-3735-15.htm",
-        "entityType": "SHOP",
-        "brandId": "20584"
-      }, {
-        "id": "2784101115",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1RrS.LVXXXXcrXpXXSutbFXXX.jpg",
-        "finalScore": "0.5930383227012586",
-        "shopUrl": "http://tomtailor.tmall.com/campaign-3735-0.htm",
-        "entityType": "SHOP",
-        "brandId": "213474060"
-      }, {
-        "id": "2183813726",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1kmS_LVXXXXaBaXXXSutbFXXX.jpg",
-        "finalScore": "0.5882558957771681",
-        "shopUrl": "http://huaiyuan.tmall.com/campaign-3735-5.htm",
-        "entityType": "SHOP",
-        "brandId": "29465"
-      }, {
-        "id": "1785908005",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1dB6zLVXXXXcJXXXXSutbFXXX.jpg",
-        "finalScore": "0.5694211862124341",
-        "shopUrl": "http://axonus.tmall.com/campaign-3735-1.htm",
-        "entityType": "SHOP",
-        "brandId": "115035841"
-      }],
-      "finalScore": "4.413955555555555",
-      "industryUrl": null,
-      "entityType": "OTHER",
-      "colour": "#b9eaf2",
-      "industryTitle": null,
-      "bannerUrl": "//pages.tmall.com/wow/act/15617/guojixfs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_1_735362&pos=4",
-      "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1_T7ALVXXXXXOXXXXeWjm2pXX-750-240.jpg",
-      "_pos_": "4",
-      "industryBenefit": null,
-      "industryId": "1",
-      "industryImg": null,
-      "rightBannerImg": "//img.alicdn.com/tps/i2/TB1s7koLVXXXXafXFXXeWjm2pXX-750-240.jpg"
-    }, {
-      "shopList": [{
-        "id": "2453054335",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1RX_vLVXXXXchXpXXSutbFXXX.jpg",
-        "finalScore": "0.8463447899590267",
-        "shopUrl": "http://nanshizixing.tmall.com/campaign-3735-2.htm",
-        "entityType": "SHOP",
-        "brandId": "844502560"
-      }, {
-        "id": "1041773234",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1Q7jpLVXXXXX8XpXXSutbFXXX.jpg",
-        "finalScore": "0.560952734503075",
-        "shopUrl": "http://dapu.tmall.com/campaign-3735-8.htm",
-        "entityType": "SHOP",
-        "brandId": "14493763"
-      }, {
-        "id": "300031438",
-        "picUrl": "//img.alicdn.com/tps/i1/TB13VC4LVXXXXarXVXXSutbFXXX.jpg",
-        "finalScore": "0.5450674634839442",
-        "shopUrl": "http://kangerxin.tmall.com/campaign-3735-10.htm",
-        "entityType": "SHOP",
-        "brandId": "3781905"
-      }, {
-        "id": "92042735",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1PxYcLVXXXXasaXXXSutbFXXX.jpg",
-        "finalScore": "0.5448023228053981",
-        "shopUrl": "http://shuixing.tmall.com/campaign-3735-10.htm",
-        "entityType": "SHOP",
-        "brandId": "3685660"
-      }],
-      "finalScore": "4.13",
-      "industryUrl": null,
-      "entityType": "OTHER",
-      "colour": "#bbffe5",
-      "industryTitle": null,
-      "bannerUrl": "//pages.tmall.com/wow/act/15617/jfjs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_4_735362&pos=5",
-      "leftBannerImg": "http://img.alicdn.com/tps/i3/TB1jeoCLVXXXXcoXXXXeWjm2pXX-750-240.jpg",
-      "_pos_": "5",
-      "industryBenefit": null,
-      "industryId": "4",
-      "industryImg": null,
-      "rightBannerImg": "//img.alicdn.com/tps/i4/TB1C5.fLVXXXXb3aXXXeWjm2pXX-750-240.jpg"
-    }, {
-      "shopList": [{
-        "id": "822428555",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1g46aLVXXXXcUXVXXSutbFXXX.jpg",
-        "finalScore": "0.9183458776971917",
-        "shopUrl": "http://playboyyd.tmall.com/campaign-3735-11.htm",
-        "entityType": "SHOP",
-        "brandId": "29510"
-      }, {
-        "id": "196993935",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1pHG8LVXXXXbraXXXSutbFXXX.jpg",
-        "finalScore": "0.9105525246667775",
-        "shopUrl": "https://uniqlo.tmall.com/campaign-3735-56.htm",
-        "entityType": "SHOP",
-        "brandId": "29527"
-      }, {
-        "id": "505753958",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1WKYyLVXXXXXHXXXXSutbFXXX.jpg",
-        "finalScore": "0.90750966370726",
-        "shopUrl": "http://bonas.tmall.com/campaign-3735-11.htm",
-        "entityType": "SHOP",
-        "brandId": "3486580"
-      }, {
-        "id": "2113823580",
-        "picUrl": "//img.alicdn.com/tps/i1/TB1itHkLVXXXXX9XFXXSutbFXXX.jpg",
-        "finalScore": "0.5900977955635289",
-        "shopUrl": "http://kafanya.tmall.com/campaign-3735-7.htm",
-        "entityType": "SHOP",
-        "brandId": "110684218"
-      }],
-      "finalScore": "4.088",
-      "industryUrl": null,
-      "entityType": "OTHER",
-      "colour": "#ffc7c9",
-      "industryTitle": null,
-      "bannerUrl": "//pages.tmall.com/wow/act/15617/neiyi328?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_9_735362&pos=6",
-      "leftBannerImg": "http://img.alicdn.com/tps/i1/TB1tl3tLVXXXXbbXFXXeWjm2pXX-750-240.jpg",
-      "_pos_": "6",
-      "industryBenefit": null,
-      "industryId": "9",
-      "industryImg": null,
-      "rightBannerImg": "//img.alicdn.com/tps/i2/TB1AkIyLVXXXXbjXpXXeWjm2pXX-750-240.jpg"
-    }],
-    "sub": [{
-      "shopList": null,
-      "finalScore": "4.033333333333333",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/zbps?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_3_735362&pos=7",
-      "entityType": "OTHER",
-      "colour": "#bbffe5",
-      "industryTitle": "珠宝配饰",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "7",
-      "industryBenefit": "大牌1折秒杀",
-      "industryId": "3",
-      "industryImg": "//img.alicdn.com/tps/i1/TB1s5y.LVXXXXb.aXXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "3.8773333333333335",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/dqc?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_15_735362&pos=8",
-      "entityType": "OTHER",
-      "colour": "#b4ebff",
-      "industryTitle": "数码",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "8",
-      "industryBenefit": "疯抢大牌新品",
-      "industryId": "15",
-      "industryImg": "//img.alicdn.com/tps/i4/TB1_xG.LVXXXXbWaXXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "3.8359999999999994",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/man?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_6_735362&pos=9",
-      "entityType": "OTHER",
-      "colour": "#cbe9a9",
-      "industryTitle": "男装",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "9",
-      "industryBenefit": "新品低至9.9元",
-      "industryId": "6",
-      "industryImg": "//img.alicdn.com/tps/i1/TB1mO2qLVXXXXXiXFXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "3.243333333333333",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/xihu?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_13_735362&pos=10",
-      "entityType": "OTHER",
-      "colour": "#cdffa4",
-      "industryTitle": "洗护",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "10",
-      "industryBenefit": "爆款1分钱抢",
-      "industryId": "13",
-      "industryImg": "//img.alicdn.com/tps/i3/TB1Ft_CLVXXXXX2XXXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "3.1553333333333335",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/myxfs?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_5_735362&pos=11",
-      "entityType": "OTHER",
-      "colour": "#f8e1ff",
-      "industryTitle": "母婴童装",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "11",
-      "industryBenefit": "跨店满299减40",
-      "industryId": "5",
-      "industryImg": "//img.alicdn.com/tps/i4/TB1c.HvLVXXXXXPXpXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "2.6739999999999995",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/nvzhuang?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_7_735362&pos=12",
-      "entityType": "OTHER",
-      "colour": "#d5cbe8",
-      "industryTitle": "女装",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "12",
-      "industryBenefit": "折后用券抢新",
-      "industryId": "7",
-      "industryImg": "//img.alicdn.com/tps/i3/TB1JdfsLVXXXXbRXpXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "0.0",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/mobilephone?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_14_735362&pos=13",
-      "entityType": "OTHER",
-      "colour": "#c5ffdf",
-      "industryTitle": "手机",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "13",
-      "industryBenefit": "1元抢优惠券",
-      "industryId": "14",
-      "industryImg": "//img.alicdn.com/tps/i4/TB1M3zhLVXXXXX4XVXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "0.0",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/xiangbaohuanxin?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_11_735362&pos=14",
-      "entityType": "OTHER",
-      "colour": "#ffccdc",
-      "industryTitle": "箱包",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "14",
-      "industryBenefit": "极致焕新尖货",
-      "industryId": "11",
-      "industryImg": "//img.alicdn.com/tps/i3/TB1gE6kLVXXXXcrXFXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }, {
-      "shopList": null,
-      "finalScore": "0.0",
-      "industryUrl": "//pages.tmall.com/wow/act/15617/newnv?abbucket=_AB-M1011_B14&acm=03654.1003.1.735362&aldid=KXPpnvEH&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_10_735362&pos=15",
-      "entityType": "OTHER",
-      "colour": "#fff8ee",
-      "industryTitle": "鞋履",
-      "bannerUrl": null,
-      "leftBannerImg": null,
-      "_pos_": "15",
-      "industryBenefit": "潮品精选鞋履",
-      "industryId": "10",
-      "industryImg": "//img.alicdn.com/tps/i3/TB1.qzpLVXXXXX.XFXXrdvGIFXX-248-155.jpg",
-      "rightBannerImg": null
-    }],
-    "isFormal": "false",
-    "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1011_B14&com=02&acm=03654.1003.1.735362&cod=03654&cache=U5revsTn&aldid=KXPpnvEH&logtype=4&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.735362&ip=",
-    "id": "03654"
-  }
-
-  module.exports = {
-    components: {
-      banner: require('./banner.vue')
-    },
-    props: {
-      ds: {
-        default: function () {
-          return {}
-        }
-      }
-    },
-    data: function () {
-      return {
-        NUMBER_248: 248,
-        NUMBER_155: 155,
-        NUMBER_373: 373,
-        NUMBER_237: 237,
-        NUMBER_186: 186,
-        NUMBER_208: 208,
-        NUMBER_750: 750,
-        subItemBg: '//gw.alicdn.com/tps/TB1QzUfLVXXXXaOXVXXXXXXXXXX-248-86.jpg',
-        items: [],
-        subItems: []
-      }
-    },
-    created: function () {
-      this.initData(demoContent)
-    },
-    methods: {
-      getSubItemTop: function (i) {
-        return (i - i % 3) / 3 * (241 + 3);
-      },
-      getSubItemLeft: function (i) {
-        return i % 3 * (248 + 3);
-      },
-      initData: function (content) {
-        this.items = content.main;
-        this.subItems = content.sub;
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/include/coupon.vue b/examples/vue/showcase/include/coupon.vue
deleted file mode 100644
index 268f36c..0000000
--- a/examples/vue/showcase/include/coupon.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-<template>
-  <div>
-    <image v-if="ds.floorTitle" class="title" :src="ds.floorTitle"></image>
-    <div class="wrapper">
-      <image class="img" :src="currentStatus"></image>
-      <div class="my-coupon" @click="handleClick"></div>
-      <div class="guides" @click="handleClick"></div>
-      <div class="lottery" @click="handleClick"></div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .title{
-    width:750;
-    height:100;
-  }
-  .wrapper {
-    color: #FF4550;
-    width: 750;
-    height: 230;
-  }
-
-  .my-coupon {
-    width: 180;
-    height: 39;
-    position: absolute;
-    top: 15;
-    right: 149;
-  }
-
-  .guides {
-    height: 39;
-    width: 110;
-    position: absolute;
-    top: 15;
-    right: 32;
-  }
-
-  .lottery {
-    width: 348;
-    height: 76;
-    position: absolute;
-    top: 132;
-    right: 70;
-  }
-
-  .info {
-    font-size: 18;
-    position: absolute;
-    top: 84;
-    right: 70;
-  }
-
-  .img {
-    width: 750;
-    height: 230;
-  }
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    props: {
-      ds: {
-        default: function () {
-          return {}
-        }
-      }
-    },
-    data: function () {
-      return {
-        currentStatus: '//img.alicdn.com/tps/i4/TB1cYBKMXXXXXayaXXXkxHk2pXX-750-228.jpg_q75.jpg'
-      }
-    },
-    methods: {
-      handleClick: function (e) {
-        modal.toast({
-            message: 'click',
-            duration: 1
-        });
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/showcase/include/goods.vue b/examples/vue/showcase/include/goods.vue
deleted file mode 100644
index 861d5ae..0000000
--- a/examples/vue/showcase/include/goods.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-<template>
-  <div v-if="!ds.isHide">
-    <image v-if="ds.floorTitle" class="title" :src="ds.floorTitle"></image>
-    <slider class="slider" show-indicators="true" auto-play="true" interval="3000">
-      <div class="pannel" v-for="(item,i) in ds.bannerItems" :key="i" >
-        <div>
-          <banner style="margin-bottom:4" :width="NUMBER_251" :height="NUMBER_292" :src="item.img1" :href="item.url1"></banner>
-          <banner :width="NUMBER_251" :height="NUMBER_292" :src="item.img2" :href="item.url2"></banner>
-        </div>
-        <div  class="middle-col">
-          <banner :width="NUMBER_240" :height="NUMBER_588" :src="item.img3" :href="item.url3"></banner>
-        </div>
-        <div>
-          <banner style="margin-bottom:4" :width="NUMBER_251" :height="NUMBER_292" :src="item.img4" :href="item.url4"></banner>
-          <banner :width="NUMBER_251" :height="NUMBER_292" :src="item.img5" :href="item.url5"></banner>
-        </div>
-      </div>
-      <indicator
-        style="position:absolute;width:714;height:200;left:10;bottom:-80;itemSize:20;itemColor:#999999;itemSelectedColor:#000000;"></indicator>
-    </slider>
-  </div>
-</template>
-
-<style scoped>
-  .title {
-    width: 750;
-    height: 100;
-  }
-
-  .slider {
-    height: 652;
-  }
-
-  .pannel {
-    width: 750;
-    height: 592;
-    flex-direction: row;
-  }
-
-  .middle-col {
-    margin-left:4;
-    margin-right:4;
-    width: 240;
-    height: 588;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      banner: require('./banner.vue')
-    },
-    props: {
-      ds: {
-        default: function () {
-          return {}
-        }
-      }
-    },
-    data: function () {
-      return {
-        NUMBER_251: 251,
-        NUMBER_240: 240,
-        NUMBER_292: 292,
-        NUMBER_588: 588
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/include/headlines.vue b/examples/vue/showcase/include/headlines.vue
deleted file mode 100644
index d76b1fd..0000000
--- a/examples/vue/showcase/include/headlines.vue
+++ /dev/null
@@ -1,94 +0,0 @@
-<template>
-  <div class="container">
-    <image class="banner" :src="ds.topBanner"></image>
-    <div class="rule-container">
-      <link style="font-size:22px;color:#ffffff;text-align:center;"
-        text="帮助" :href="ds.ruleLink"></link>
-    </div>
-    <div class="announce">
-      <image class="announce-hd" :src="ds.announceHdBanner"></image>
-      <banners style="margin-left:6;margin-right:6;"
-        :ds="ds.bannerItems" direction="row" :width="NUMBER_233"
-        :height="NUMBER_172" :space="NUMBER_3">
-      </banners>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .banner {
-    width: 750;
-    height: 782;
-  }
-
-  .share-container {
-    position: absolute;
-    right: 100;
-    top: 15;
-    z-index: 100;
-    font-size: 20;
-    color: #ffffff;
-    background-color: #000000;
-    border-radius: 17;
-    width: 110;
-    height: 35;
-    justify-content: center;
-    align-items: center;
-  }
-
-  .rule-container {
-    position: absolute;
-    right: 22;
-    top: 15;
-    z-index: 100;
-    font-size: 20;
-    color: #ffffff;
-    background-color: #000000;
-    border-radius: 17;
-    width: 70;
-    height: 35;
-    justify-content: center;
-  }
-
-  .announce {
-    background-color: #f5f3f4;
-    width: 716;
-    height: 286;
-    position: absolute;
-    bottom: 17;
-    left: 17;
-    border-radius: 5;
-  }
-
-  .announce-hd {
-    width: 700;
-    height: 90;
-    margin-top: 8;
-    margin-bottom: 8;
-    margin-left: 5;
-    margin-right: 5;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      link: require('./link.vue'),
-      banners: require('./banners.vue')
-    },
-    props: {
-      ds: {
-        default: function () {
-          return {}
-        }
-      }
-    },
-    data: function () {
-      return {
-        NUMBER_233: 233,
-        NUMBER_172: 172,
-        NUMBER_3: 3
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/showcase/include/link.vue b/examples/vue/showcase/include/link.vue
deleted file mode 100644
index e6923a2..0000000
--- a/examples/vue/showcase/include/link.vue
+++ /dev/null
@@ -1,17 +0,0 @@
-<template>
-  <text @click="clickHandler">{{text}}</text>
-</template>
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    props: ['text', 'href'],
-    methods: {
-      clickHandler: function () {
-        modal.toast({
-          message: 'click',
-          duration: 1
-        });
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/showcase/include/match.vue b/examples/vue/showcase/include/match.vue
deleted file mode 100644
index ab851fe..0000000
--- a/examples/vue/showcase/include/match.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-<template>
-  <div>
-    <image v-if="ds.floorTitle" class="title" :src="ds.floorTitle"></image>
-    <div class="tm-banner" v-if="ds.isShowTmSpecBanner && ds.tmSpecBanner">
-      <banner :width="NUMBER_750" :height="NUMBER_200" :src="ds.tmSpecBanner.img" :href="ds.tmSpecBanner.url"></banner>
-    </div>
-    <div v-for="(item,i) in ds.bannerItems" :key="i" :style="{ flexDirection: 'row', marginBottom: NUMBER_4 }">
-      <div :style="{ marginRight: NUMBER_4 }">
-        <banner :width="NUMBER_373" :height="NUMBER_240" :src="item.leftImg" :href="item.leftUrl"></banner>
-      </div>
-      <div>
-        <banner :width="NUMBER_373" :height="NUMBER_240" :src="item.rightImg" :href="item.rightUrl"></banner>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .title {
-    width: 750;
-    height: 100;
-  }
-  .tm-banner{
-    bottom:4;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      banner: require('./banner.vue')
-    },
-    props: {
-      ds: {
-        default: function () {
-          return {}
-        }
-      }
-    },
-    data: function () {
-      return {
-        NUMBER_750: 750,
-        NUMBER_373: 373,
-        NUMBER_240: 240,
-        NUMBER_200: 200,
-        NUMBER_4: 4
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/include/resource.vue b/examples/vue/showcase/include/resource.vue
deleted file mode 100644
index 7c935c6..0000000
--- a/examples/vue/showcase/include/resource.vue
+++ /dev/null
@@ -1,43 +0,0 @@
-<template>
-  <div v-if="!ds.isHide">
-    <div class="big-banner-container">
-      <banner :width="NUMBER_750" :height="NUMBER_200" :src="ds.bigBannerImg" :href="ds.bigBannerUrl"></banner>
-    </div>
-    <banners direction="row" :ds="ds.smallBannerItems" :width="NUMBER_373" :height="NUMBER_224" :space="NUMBER_4"></banners>
-  </div>
-</template>
-
-<style scoped>
-  .title {
-    width: 750;
-    height: 100;
-  }
-  .big-banner-container{
-    margin-bottom:4;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      banners: require('./banners.vue'),
-      banner: require('./banner.vue')
-    },
-    props: {
-      ds: {
-        default: function () {
-          return {}
-        }
-      }
-    },
-    data: function () {
-      return {
-        NUMBER_750: 750,
-        NUMBER_200: 200,
-        NUMBER_373: 373,
-        NUMBER_224: 224,
-        NUMBER_4: 4
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/include/scene.vue b/examples/vue/showcase/include/scene.vue
deleted file mode 100644
index 7c7db25..0000000
--- a/examples/vue/showcase/include/scene.vue
+++ /dev/null
@@ -1,283 +0,0 @@
-<template>
-  <div>
-    <image v-if="ds.floorTitle" class="title" :src="ds.floorTitle"></image>
-    <div class="small-item-container" :style="{ height: Math.round(smallItems.length/2)*234 }">
-      <div v-for="(item,i) in smallItems" :key="i" class="small-item" :style="{ top: getItemTop(i), left: getItemLeft(i) }">
-        <div>
-          <image class="small-item-bg" :src="smallItemBg"></image>
-        </div>
-        <div class="small-item-img">
-          <banner :width="NUMBER_186" :height="NUMBER_206" :src="item.itemImg" :href="item.sceneUrl"></banner>
-        </div>
-        <div class="small-benifit-img">
-          <banner :width="NUMBER_170" :height="NUMBER_100" :src="item.benefitImg" :href="item.sceneUrl"></banner>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-  .title {
-    width: 750;
-    height: 100;
-  }
-
-  .item {
-    width: 750;
-    height: 340;
-    margin-bottom: 4;
-  }
-
-  .item-img {
-    position: absolute;
-    left: 110;
-    top: 20;
-  }
-
-  .right-item-img {
-    position: absolute;
-    right: 110;
-    top: 20;
-  }
-
-  .benifit-img {
-    position: absolute;
-    right: 5;
-    top: 160;
-  }
-
-  .right-benifit-img {
-    position: absolute;
-    left: 40;
-    top: 160;
-  }
-
-  .small-item-container {
-    width: 750;
-  }
-
-  .small-item {
-    position: absolute;
-    width: 373;
-    height: 230;
-    flex-direction: row;
-  }
-
-  .small-item-bg {
-    width: 373;
-    height: 230;
-  }
-
-  .small-item-img {
-    position: absolute;
-    left: 12;
-    top: 12;
-  }
-
-  .small-benifit-img {
-    position: absolute;
-    right: 0;
-    top: 65;
-  }
-</style>
-
-<script>
-  var demoContent = [{
-    "id": "1111",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1392&scm=1003.1.03653.SUB_1111_740603&pos=1",
-    "_s_": "d",
-    "itemImg": "https://img.alicdn.com/tps/TB1c7t.MXXXXXchXXXXXXXXXXXX-182-206.jpg",
-    "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-    "finalScore": "10000.0",
-    "_pos_": "1",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/TB1Zgl2MXXXXXaYXFXXXXXXXXXX-170-100.png"
-  }, {
-    "id": "1396",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1396&scm=1003.1.03653.SUB_1396_740603&pos=2",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i2/TB1O1VfMXXXXXX0aXXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50010368,50011892,50011894,50013794,50010792,50010790,50010790,121434025,121396024,50010793,50010789,50010793,121386035,121392037,121458034,121392036,121482027,121392015,121368014,121418013,121392016,50011982,122690003,302910,50012010,122654005,50012019,50012825,50012027,50012042,50011744,50012906,50012907,50008881,50008883,50008882?,50012784?,50022889,50022728,50013228,50013896,50014775,50019578,50014822,50026394,50019694,50019279,50019272,50014079,50014078,50014076,50014077,50017238,121464011,121468014,50019130,50019127,50019126,50019128,50019125,50015984,50014803,50014802,50015980,50014788,50014787,50019526,50014791,50019520,50013932,50014677,50015978,50014786,50014785,50522001,50014493,50023100,121418021,121388027,121424021,121418020,121368020,50012036,50012044,50012043,50010368, 50011892, 50019274,50012044,50012048,50012043,50013228,50013238,50011726,50019279,50015984,50014803,50014802,50019526,50014791,50019520,50013932,50014677,50019526,50013314,50023341,50016752,50016749,50016747,50016744,50016741,50016740,50016739,50016738,50016737,50016769,50016763,50016750,50007003,302910,50012010,50012032,50012033,50011745,50011746,50011894,121458034,121756003,121426033,50011982,50011979,121390006,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,1512,123534001,14,50008090,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121450007,50013697,50010218,50005960,50005962,50012820,50012406,50023620,50023605,50008829,50024064,50023440,50008687,124392001,50023771,50006804,50012410,124482010,121398023,50023789,50011975",
-    "finalScore": "10000.0",
-    "_pos_": "2",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i1/TB1cp4sMXXXXXbLXFXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1616",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1616&scm=1003.1.03653.SUB_1616_740603&pos=3",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i4/TB1dlEALVXXXXbxXpXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50009032,50007003,302910,1512,124688012,124986002,124942005,50023722,50010368,50011892,50011894",
-    "finalScore": "10000.0",
-    "_pos_": "3",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i3/TB1fxonLVXXXXXUaXXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "16424",
-    "sceneUrl": "https://brand.tmall.com/mobilestreet/subject.htm?id=16424&acm=03653.1003.1.740603&aldid=VyrSqx06&spm=0.0.0.0.Wv8ion&scm=1003.1.03653.SUB_16424_740603&pos=4",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i4/TB1.i2_LVXXXXbrXpXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011745",
-    "finalScore": "6.729749999999999",
-    "_pos_": "4",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i2/TB1bhH5LVXXXXapXFXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "16425",
-    "sceneUrl": "https://brand.tmall.com/mobilestreet/subject.htm?id=16360&acm=03653.1003.1.740603&aldid=VyrSqx06&spm=0.0.0.0.MttFEC&scm=1003.1.03653.SUB_16425_740603&pos=5",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i3/TB15ywbLVXXXXcdXXXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011745",
-    "finalScore": "6.729749999999999",
-    "_pos_": "5",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i1/TB1JBLYLVXXXXXlXVXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1625",
-    "sceneUrl": "https://pages.tmall.com/wow/fushi/act/gf-chaoliu?acm=03653.1003.1.740603&aldid=VyrSqx06&scm=1003.1.03653.SUB_1625_740603&pos=6",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/bao/uploaded/i2/TB1Gd21KVXXXXXZXVXXXXXXXXXX_!!0-item_pic.jpg",
-    "sceneCat": "50012043,50012036,50010850,50000671,1622,50000852,162104,50000697,162205,162116,50012027,50012032,50012028,50012033,50012042,50008882,50012772,50006846,50008881,50000436,50011123,3035,50010167,50000557,50010158,50010159,50010402,50010160,50011980,50011993,121390006,50011978,50011977,50011979,121454013,50011982,50011991,50012906,50011744,50011745,50011743,50012907,50011746,50010815,121460005,50013794,122438001,121398006,121386023,50010808",
-    "finalScore": "6.729749999999999",
-    "_pos_": "6",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i3/TB1qxXzMXXXXXcjXFXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1392",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1392&scm=1003.1.03653.SUB_1392_740603&pos=7",
-    "_s_": "d",
-    "itemImg": "https://img.alicdn.com/tps/TB1c7t.MXXXXXchXXXXXXXXXXXX-182-206.jpg",
-    "sceneCat": "50006842,50006840,50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,5000888,50012766,50012771,50012772,50010404,50010368, 50011892, 50011894,124688012,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50008882,50008886,50008885,50012777,50012778,50011977,50011978,50011979,50011980,50011982,50011990,50011999,50012000,50011993,50011996,50011997,121366011,121484009,121368010,121390006,121398029,121404030,121404031,121408040,121410035,121412033,121414041,121418013,121454013,121410013,121422013,121484013,50010789,50010790,50010792,50010793,50010794,50010796,50010797,50010798,50010801,50010803,50010805,50010807,50010808,50010815,121410007,121426007,121452004,121460005,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-    "finalScore": "4.4951428571428576",
-    "_pos_": "7",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/TB1Zgl2MXXXXXaYXFXXXXXXXXXX-170-100.png"
-  }, {
-    "id": "1395",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1395&scm=1003.1.03653.SUB_1395_740603&pos=8",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i2/TB1p4NcMXXXXXbGaXXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,50008886,50012766,50012771,50012772,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,16240,50012773,50006846,50010394,50008888,50008890,50008889,50012784,50012785,50012786,50012787,50008885,50012777,50012778,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124942005,50010368,50011892,50011894,50023751,121366037,121458036,121392038,121420035,121364028,121468026,121400029,121418030,121478031,121480030,121366035,121424025,121426030,121484030,121412031,125054002,125074007,125074008,125104003,125080003,125024006,125080004,121400030,121424024,121482025,121418031,121402028,121388035",
-    "finalScore": "4.465166666666667",
-    "_pos_": "8",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i1/TB1ySNtMXXXXXamXFXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1394",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1394&scm=1003.1.03653.SUB_1394_740603&pos=9",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i4/TB1Ns8eMXXXXXb1aXXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124986002,50010368, 50011892,50011894,121480030,121366035,121424025,121426030,121484030,121412031",
-    "finalScore": "4.309925925925926",
-    "_pos_": "9",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i3/TB1ZEXfMXXXXXapaXXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1610",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1610&scm=1003.1.03653.SUB_1610_740603&pos=10",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i3/TB1ONckLVXXXXbJaXXXKofZZpXX-182-206.jpg",
-    "sceneCat": "121484044,121452038,50012342,50012027,50012032,50006843,50010850,50000671,162104,1623,50011277,162116,123216004,50008898,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-    "finalScore": "4.293333333333334",
-    "_pos_": "10",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i2/TB1RzwFLVXXXXXsXpXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1619",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1619&scm=1003.1.03653.SUB_1619_740603&pos=11",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i3/TB1eagyLVXXXXaiXFXXKofZZpXX-182-206.jpg",
-    "sceneCat": "124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,122654005,50011740,50009032,124688012,213202,121396029,121476023,121410029,213203,50023326,213205,50022686,50023293,50466023,50024999,50016885,50011894",
-    "finalScore": "4.23",
-    "_pos_": "11",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i4/TB1j0AxLVXXXXaRXFXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1613",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1613&scm=1003.1.03653.SUB_1613_740603&pos=12",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i2/TB1WssFLVXXXXXUXpXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50023108,50022893,50022892,50022890,50013228,50019520,50017120,50019560,50017129,50017128,50017127,50017126,50017125,50017124,50017123,50017122,50017121,50020039,50020038,50017119,50019559,50017110,50017108,50017107,50017097,50017096,50017095,50017094,50017093,50017092,50012036,50012041",
-    "finalScore": "4.2186666666666675",
-    "_pos_": "12",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i1/TB1Rg.qLVXXXXbqXVXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1614",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1614&scm=1003.1.03653.SUB_1614_740603&pos=13",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i1/TB1KzUxLVXXXXajXFXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50013238,50011726,50022893,50022892,50022890,50013228,50017129,50020038,50017119,50019559,50017102,50017110,50017097,50019707,50019555,50016677,50018317,50016675,50016673,50016672,50016671,50016670,50016732,50016669,50016668,50016667,50016666,50016665,50016683,50016682,50016608,50016607,50016637,50016638,50012036,50012043",
-    "finalScore": "4.216",
-    "_pos_": "13",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i2/TB1WyouLVXXXXXcXVXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1397",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1397&scm=1003.1.03653.SUB_1397_740603&pos=14",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i4/TB1dCxvMXXXXXc1XpXXKofZZpXX-182-206.jpg",
-    "sceneCat": "122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047,122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051,50020835,50021907,121472021,50021902,50005919,50002045,122724003,122652007,121408025,122688004,50021924,50021923,50000561,50011738,122676005,121396026,121388028,50003338,50021915,50011415,50011416,50003454,50021928,50021930,50021929,50021931,50024939,121384024,121472020,50020902,50020903,50020904,50020905,50021888,50021889,50021890,50023266,122960005,50012001,50011999,50012004,50012000,50012006,121394024,121412033,121394025,121450036,121472007,121480009,121388013,121466009,121484012,121366014,121434014,121422012,121476006,121396013,50011997,121434013,122646001,121458012,121468012,121368013,50011979,121366015,121406016,121456012,121366011,121414010,121460006,121368014,121388016,121396013,121400010,121470011,121474011,121478009,124760009,124768010,124822006,121482009,122430002,121454014,121392016,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047,122846004,50020776,50024799,50024801,50024921,50002794,50020778,50002792,50002791,50002793,50003942,50005500,50005497,50001692,50005495,50005496,50005503,50005498,50005499,50005501,50005502,50003455,50003457,122904003,50023091,50020770,50008863,50005507,121414011,50020768,50022701,50008862,121420012,50020766,50020764,121398012,121380011,50020751,50020676,50024945,50020720,50002790,50020730,50001866,50020678,121476008,121458013,50002795,121364011,50005505,121422014,50024943,50000583,50000582,50000584,213002,50005033,50000563,50008607,50006988,50008608,50024601,50024602,50012051",
-    "finalScore": "3.4206666666666665",
-    "_pos_": "14",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i3/TB1ZARnMXXXXXaGXVXX3bpXTXXX-170-100.png"
-  }, {
-    "id": "1608",
-    "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.740603&aldid=VyrSqx06&wh_id=1608&scm=1003.1.03653.SUB_1608_740603&pos=15",
-    "_s_": "d",
-    "itemImg": "//img.alicdn.com/tps/i3/TB1xA3jLVXXXXXqapXXKofZZpXX-182-206.jpg",
-    "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-    "finalScore": "0.0",
-    "_pos_": "15",
-    "entityType": "SUB",
-    "benefitImg": "//img.alicdn.com/tps/i2/TB1WvoALVXXXXcdXpXX3bpXTXXX-170-100.png"
-  }]
-
-  module.exports = {
-    components: {
-      banner: require('./banner.vue')
-    },
-    props: {
-      ds: {
-        default: function () {
-          return {}
-        }
-      }
-    },
-    data: function () {
-      return {
-        NUMBER_186: 186,
-        NUMBER_206: 206,
-        NUMBER_373: 373,
-        NUMBER_230: 230,
-        NUMBER_170: 170,
-        NUMBER_100: 100,
-        NUMBER_750: 750,
-        NUMBER_300: 300,
-        NUMBER_340: 340,
-        smallItemBg: 'https://gw.alicdn.com/tps/TB1oBIeLVXXXXatXpXXXXXXXXXX-373-230.jpg',
-        items: [],
-        smallItems: [],
-        sceneBgs: [
-          'https://gw.alicdn.com/tps/TB1xBT8LVXXXXbYXVXXXXXXXXXX-750-340.jpg',
-          'https://gw.alicdn.com/tps/TB1RoEkLVXXXXaMXpXXXXXXXXXX-750-340.jpg',
-          'https://gw.alicdn.com/tps/TB1DiEpLVXXXXa7XXXXXXXXXXXX-750-340.jpg'
-        ]
-      }
-    },
-    created: function () {
-      this.items = demoContent.slice(0, 3);
-      this.smallItems = demoContent.slice(3);
-    },
-    methods: {
-      getItemTop: function (i) {
-        return (i - i % 2) / 2 * (230 + 4);
-      },
-      getItemLeft: function (i) {
-        return i % 2 * (373 + 4);
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/include/util.js b/examples/vue/showcase/include/util.js
deleted file mode 100644
index c56d0a8..0000000
--- a/examples/vue/showcase/include/util.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-function randomInt (min, max) {
-    return Math.round(Math.random() * (max - min)) + min;
-},
-function randomItemFromArr (arr) {
-    if (!arr) return;
-    return arr[randomInt(0, arr.length - 1)];
-},
-function httpurl (url) {
-    var params = {};
-
-    Object.defineProperty(this, 'params', {
-        set: function (v) {
-            if (typeof v === 'object') {
-                for (var p in params) {
-                    delete params[p];
-                }
-                for (var p in v) {
-                    params[p] = v[p];
-                }
-            }
-        },
-        get: function () {
-            return params;
-        },
-        enumerable: true
-    });
-
-    Object.defineProperty(this, 'search', {
-        set: function (v) {
-            if (typeof v === 'string') {
-                if (v.indexOf('?') === 0) {
-                    v = v.substr(1);
-                }
-                var search = v.split('&');
-                for (var p in params) {
-                    delete params[p];
-                }
-                for (var i = 0; i < search.length; i++) {
-                    var pair = search[i].split('=');
-                    if (pair[0]) {
-                        try {
-                            params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
-                        } catch (e) {
-                            params[pair[0]] = pair[1] || '';
-                        }
-                    }
-                }
-            }
-        },
-        get: function () {
-            var search = [];
-            for (var p in params) {
-                if (params[p]) {
-                    try {
-                        search.push(encodeURIComponent(p) + '=' + encodeURIComponent(params[p]));
-                    } catch (e) {
-                        search.push(p + '=' + params[p]);
-                    }
-                } else {
-                    try {
-                        search.push(encodeURIComponent(p));
-                    } catch (e) {
-                        search.push(p);
-                    }
-                }
-            }
-            if (search.length) {
-                return '?' + search.join('&');
-            } else {
-                return '';
-            }
-        },
-        enumerable: true
-    });
-
-    var hash;
-    Object.defineProperty(this, 'hash', {
-        set: function (v) {
-            if (typeof v === 'string') {
-                if (v && v.indexOf('#') < 0) {
-                    v = '#' + v;
-                }
-                hash = v || '';
-            }
-        },
-        get: function () {
-            return hash;
-        },
-        enumerable: true
-    });
-
-    this.set = function (v) {
-        var matchArr;
-        if ((matchArr = v.match(new RegExp('^([a-z0-9-]+\:)?' +    //protocol
-                        '[/]{2}' +                            //slash x 2
-                        '(?:([^@/:\?]+)(?::([^@/:]+))?@)?' +  //username:password@
-                        '([^:/?#]+)' +                        //hostname
-                        '(?:[:]([0-9]+))?' +                  //port
-                        '([/][^?#;]*)?' +                     //pathname
-                        '(?:[?]([^?#]*))?' +                  //search
-                        '(#[^#]*)?$'                          //hash
-                        , 'i')))) {
-            this.protocol = matchArr[1] || '';
-            this.username = matchArr[2] || '';
-            this.password = matchArr[3] || '';
-            this.hostname = this.host = matchArr[4];
-            this.port = matchArr[5] || '';
-            this.pathname = matchArr[6] || '/';
-            this.search = matchArr[7] || '';
-            this.hash = matchArr[8] || '';
-            this.origin = this.protocol + '//' + this.hostname;
-        } else {
-            throw new Error('Wrong uri scheme.');
-        }
-    };
-
-    this.toString = function () {
-        var string = this.protocol + '//';
-        if (this.username) {
-            string += this.username;
-            if (this.password) {
-                string += ':' + this.password;
-            }
-            string += '@';
-        }
-        string += this.host;
-        if (this.port && this.port !== '80') {
-            string += ':' + this.port;
-        }
-        if (this.pathname) {
-            string += this.pathname;
-        }
-        if (this.search) {
-            string += this.search;
-        }
-        if (this.hash) {
-            string += this.hash;
-        }
-        return string;
-    };
-
-    this.set(url.toString());
-}
-
-module.exports = {
-  randomInt: randomInt,
-  randomItemFromArr: randomItemFromArr,
-  httpurl: httpurl
-}
diff --git a/examples/vue/showcase/itemlist.vue b/examples/vue/showcase/itemlist.vue
deleted file mode 100644
index 02fb33a..0000000
--- a/examples/vue/showcase/itemlist.vue
+++ /dev/null
@@ -1,548 +0,0 @@
-<template>
-  <list class="list" @loadmore="loadmore" loadmoreoffset=2000>
-    <cell class="cell" v-for="item in shopList" :scope="item.scopeValue" @click="oncellclick(item.id)">
-      <div class="shopDiv">
-        <div class="shopHeader" style="flex-direction:row;">
-          <div style="flex:2;flex-direction:row;">
-            <div>
-              <image class="test" :src="item.PersonPhoto"></image>
-            </div>
-            <div style="flex-direction:column;margin-left:5px;">
-              <div style="margin-top:5px;">
-                <text style="font-size:20px;">{{item.PersonName}}</text>
-              </div>
-              <div style="margin-top:5px;">
-                <text style="font-size:20;color:#cccccc;">{{item.PersonVisitTime}}</text>
-              </div>
-            </div>
-          </div>
-          <div style="flex:5;flex-direction:row;">
-            <div style="flex-direction:row;margin-left:10px;margin-top:10px;">
-              <div>
-                <image style="width:20px;height:20px;"
-                  src="https://img.alicdn.com/tps/i4/TB1zkDeIFXXXXXrXVXX07tlTXXX-200-200.png_88x88xz.jpg"></image>
-              </div>
-              <div>
-                <text style="font-size:20px;">Hope</text>
-              </div>
-            </div>
-            <div style="position:absolute;left:90px;top:10px;flex-direction:row;">
-              <div>
-                <image style="width:20px;height:20px;"
-                  src="https://img.alicdn.com/tps/i2/TB1hRb1IXXXXXX3XVXXXQaP.pXX-87-87.jpeg"></image>
-              </div>
-              <div>
-                <text style="font-size:20px;">Mem</text>
-              </div>
-            </div>
-            <div style="position:absolute;left:170px;top:10px;flex-direction:row;">
-              <div>
-                <image style="width:20px;height:20px;"
-                  src="https://img.alicdn.com/tps/i3/TB1DGkJJFXXXXaZXFXX07tlTXXX-200-200.png"></image>
-              </div>
-              <div>
-                <text style="font-size:20px;">auth</text>
-              </div>
-            </div>
-            <div style="position:absolute;left:250px;top:10px;flex-direction:row;">
-              <div>
-                <image style="width:20px;height:20px;"
-                  src="https://img.alicdn.com/tps/i1/TB1nFvPIXXXXXbUXXXXUAkPJpXX-87-87.png"></image>
-              </div>
-              <div>
-                <text style="font-size:20px;">Friend</text>
-              </div>
-            </div>
-            <div style="position:absolute;left:330px;top:10px;flex-direction:row;">
-              <div>
-                <image style="width:20px;height:20px;"
-                  src="https://img.alicdn.com/tps/i2/TB1CpD7IXXXXXbSXXXXUAkPJpXX-87-87.png"></image>
-              </div>
-              <div>
-                <text style="font-size:20px;">issue</text>
-              </div>
-            </div>
-            <div style="position:absolute;left:410px;top:10px;flex-direction:row;">
-              <div>
-                <image style="width:20px;height:20px;"
-                  src="https://gtms02.alicdn.com/tps/i2/TB11ZZfIVXXXXbMXFXXEDhGGXXX-32-32.png"></image>
-              </div>
-              <div>
-                <text style="font-size:20px;">super</text>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="shopBody" style="flex-direction:column;">
-          <div class="descDiv" style="margin-top:10px;margin-left:10px;">
-            <text class="shopDesc" style="font-size:25px;">{{item.shopDesc}}</text>
-          </div>
-          <div style="flex-direction:row;">
-            <div class="imgDiv" style="flex:1;height:300px;flex-direction:column;margin:10px;" v-for="img in item.shopImgList">
-              <div>
-                <image class="shopImg" :style="{ width: img.shopImgWidth, height: img.shopImgHeight }" :src="img.shopImg"></image>
-              </div>
-              <div style="flex:1;margin-top:10px;flex-direction:row;">
-                <div style="flex:1;justify-content:center;flex-direction:row;">
-                  <div>
-                    <image style="width:20px;height:20px;"
-                           src="https://img.alicdn.com/tps/i1/TB1nFvPIXXXXXbUXXXXUAkPJpXX-87-87.png"></image>
-                  </div>
-                  <div style="margin-left:5px;">
-                    <text style="font-size:20px;text-align:center;">Up</text>
-                  </div>
-                </div>
-                <div style="flex:1;justify-content:center;flex-direction:row;">
-                  <div>
-                    <image style="width:20px;height:20px;"
-                           src="https://img.alicdn.com/tps/i2/TB1CpD7IXXXXXbSXXXXUAkPJpXX-87-87.png"></image>
-                  </div>
-                  <div style="margin-left:5px;">
-                    <text style="font-size:20px;text-align:center;">down</text>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="shopFooter" style="flex-direction:row;margin-top:10px;margin-left:10px;justify-content:flex-end;">
-          <div style="margin-right:5px;">
-            <image class="shopLikeImg smallImg" :src="item.shopLikeImg"></image>
-          </div>
-          <div style="margin-right:15px;">
-            <text class="shopLikeText" style="font-size:20px;">{{item.shopLikeText}}</text>
-          </div>
-          <div style="margin-right:5px;">
-            <image class="shopCommentImg smallImg" :src="item.shopCommentImg"></image>
-          </div>
-          <div style="margin-right:15px;">
-            <text class="shopCommentText" style="font-size:20px;">{{item.shopCommentText}}</text>
-          </div>
-          <div style="margin-right:5px;">
-            <image class="shopLookImg smallImg" :src="item.shopLookImg"></image>
-          </div>
-          <div style="margin-right:15px;">
-            <text class="shopLookText" style="font-size:20px;">{{item.shopLookText}}</text>
-          </div>
-          <div style="margin-right:5px;">
-            <image class="shareImg smallImg" :src="item.shareImg"></image>
-          </div>
-          <div style="margin-right:20px;">
-            <text class="shareText" style="font-size:20px;">{{item.shareText}}</text>
-          </div>
-        </div>
-      </div>
-    </cell>
-  </list>
-</template>
-
-<style scoped>
-  .flexRow {
-    flex-direction: row;
-  }
-
-  .flexColumn {
-    flex-direction: column;
-  }
-
-  .text {
-  }
-
-  .div {
-  }
-
-  .fixed {
-    position: fixed;
-    bottom: 50px;
-    left: 50px;
-    width: 300px;
-    height: 50px;
-    align-items: center;
-    justify-content: center
-  }
-
-  .shopImg {
-    width: 220px;
-    height: 220px;
-  }
-
-  .list {
-    flex-direction: column;
-    overflow: hidden;
-    width: 750px;
-    height: 1200px;
-    background-color: #dddddd;
-  }
-
-  .cell {
-    background-color: #dddddd;
-    flex-direction: column;
-    width: 750px;
-  }
-
-  .test {
-    width:60px;
-    height:60px;
-  }
-
-  .shopDiv {
-    flex-direction: column;
-    background-color: #ffffff;
-    margin: 5px;
-    padding: 10px;
-    border-width: 1px;
-    border-color: #cccccc;
-    overflow: visible;
-  }
-
-  .shopRowList {
-    flex-direction: column;
-    border-width: 1px;
-    border-color: #cccccc;
-    overflow: visible;
-    margin: 5px;
-    padding: 10px;
-    background-color: #ffffff;
-  }
-
-  .shopHeader {
-    flex-direction: row;
-    width: 720px;
-  }
-
-  .shopFooter {
-    flex-direction: row;
-    width: 720px;
-  }
-
-  .smallImg {
-    width: 20px;
-    height: 20px;
-  }
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    data: function () {
-      return {
-        shopList: [
-          {
-            id: 1,
-            scopeValue: 1,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Mendeleyev',
-            PersonVisitTime: 'today',
-            shopDesc: 'Genius only means hard-working all one\'s life',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1rtOnHpXXXXXLaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB15KrfFVXXXXXJXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1t5YBGVXXXXXcaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 2,
-            scopeValue: 2,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Napoleon',
-            PersonVisitTime: 'yesterday',
-            shopDesc: 'The man who has made up his mind to win will never say "impossible "',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd1.alicdn.com/imgextra/i1/2655929383/TB2.qITjpXXXXcIXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd3.alicdn.com/imgextra/i3/2655929383/TB2eWwZjpXXXXbHXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/imgextra/i2/2655929383/TB2tgQWjpXXXXbZXXXXXXXXXXXX_!!2655929383.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 3,
-            scopeValue: 3,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Balzac',
-            PersonVisitTime: 'yesterday',
-            shopDesc: 'There is no such thing as a great talent without great will - power',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd1.alicdn.com/imgextra/i1/TB1AFz9LXXXXXbrXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/imgextra/i2/2557954751/TB2is2njXXXXXatXpXXXXXXXXXX_!!2557954751.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/imgextra/i2/2557954751/TB2PNYGjXXXXXbXXXXXXXXXXXXX_!!2557954751.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 4,
-            scopeValue: 4,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Thomas Carlyle',
-            PersonVisitTime: '3 day ago',
-            shopDesc: 'Cease to struggle and you cease to live',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2zbwdfXXXXXa4XpXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2L7ZAfXXXXXXOXXXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/imgextra/i4/69426324/TB2p9wufXXXXXbiXXXXXXXXXXXX_!!69426324.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 5,
-            scopeValue: 5,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Addison',
-            PersonVisitTime: 'yesterday',
-            shopDesc: 'A strong man will struggle with the storms of fate',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd3.alicdn.com/bao/uploaded/i3/TB1MQ8_KVXXXXaLXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/imgextra/i2/53218032/TB2bGSqiXXXXXXyXpXXXXXXXXXX_!!53218032.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB1kP2zKFXXXXbIXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 6,
-            scopeValue: 1,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Ruskin',
-            PersonVisitTime: 'yesterday',
-            shopDesc: 'Living without an aim is like sailing without a compass',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB11yFnHXXXXXakaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/imgextra/i4/32720628/TB2CRJUcXXXXXXwXpXXXXXXXXXX_!!32720628.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/bao/uploaded/i2/TB17LUzHXXXXXcEaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 7,
-            scopeValue: 2,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Yiming',
-            PersonVisitTime: 'today',
-            shopDesc: 'Live a noble and honest life. Reviving past times in your old age will help you to enjoy your life again',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/bao/uploaded/i4/TB1hvNoJXXXXXaMaXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/imgextra/i4/2058567235/TB2V8iygFXXXXaRXpXXXXXXXXXX_!!2058567235.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/imgextra/i2/2058567235/TB2im1QgFXXXXX8XXXXXXXXXXXX_!!2058567235.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 8,
-            scopeValue: 3,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'Brown',
-            PersonVisitTime: 'yesterday',
-            shopDesc: 'Behind every successful man there\'s a lot u unsuccessful years',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd1.alicdn.com/bao/uploaded/i1/TB18BZ2KFXXXXb8XFXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd1.alicdn.com/imgextra/i1/2775383848/TB2r012jVXXXXXHXpXXXXXXXXXX_!!2775383848.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd3.alicdn.com/imgextra/i3/2775383848/TB2iI9VjVXXXXaoXpXXXXXXXXXX_!!2775383848.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 9,
-            scopeValue: 4,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'YIMING',
-            PersonVisitTime: 'today',
-            shopDesc: 'Enrich your life today,. yesterday is history.tomorrow is mystery',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd1.alicdn.com/bao/uploaded/i1/TB1JB.rLpXXXXXLXXXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd4.alicdn.com/imgextra/i4/2702739128/TB2JdvmjVXXXXXjXXXXXXXXXXXX_!!2702739128.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd2.alicdn.com/imgextra/i2/2702739128/TB2A.e6jVXXXXXGXpXXXXXXXXXX_!!2702739128.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-
-          },
-          {
-            id: 10,
-            scopeValue: 5,
-            PersonPhoto: 'https://gw.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_60x60.jpg',
-            PersonName: 'YIMING',
-            PersonVisitTime: 'yesterday',
-            shopDesc: 'The secret of success is constancy to purpose',
-            shopImgList: [{
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd3.alicdn.com/bao/uploaded/i3/TB17zXOGXXXXXbEXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd1.alicdn.com/imgextra/i1/2265445951/TB22ACTbFXXXXXBXXXXXXXXXXXX_!!2265445951.jpg_220x220.jpg'
-            }, {
-              shopImgWidth: '220px',
-              shopImgHeight: '220px',
-              shopImg: 'https://gd3.alicdn.com/imgextra/i3/2265445951/TB2oXqUbFXXXXXIXXXXXXXXXXXX_!!2265445951.jpg_220x220.jpg'
-            }],
-            shopLikeImg: 'https://img.alicdn.com/tps/i1/TB1jTxXIVXXXXb8XXXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopLikeText: '6',
-            shopCommentImg: 'https://img.alicdn.com/tps/i1/TB1kTKyIVXXXXacXFXX07tlTXXX-200-200.png_88x88xz.jpg',
-            shopCommentText: '97',
-            shopLookImg: 'https://img.alicdn.com/imgextra/i4/397746073/TB2IseKeFXXXXcVXXXXXXXXXXXX-397746073.png_88x88xz.jpg',
-            shopLookText: '1003',
-            shareImg: 'https://cbu01.alicdn.com/cms/upload/2015/930/224/2422039_702806130.png_88x88xz.jpg',
-            shareText: "10",
-          }
-          ],
-      }
-    },
-    methods: {
-      loadmore: function(e) {
-        modal.toast({
-          'message': 'loadmore',
-          'duration': 2.0
-        });
-      },
-      oncellclick: function(id) {
-        modal.toast({
-          'message': 'row ' + id + ' clicked',
-          'duration': 2.0
-        });
-      }
-    }
-
-  }
-</script>
diff --git a/examples/vue/showcase/new-fashion.vue b/examples/vue/showcase/new-fashion.vue
deleted file mode 100644
index 03b83df..0000000
--- a/examples/vue/showcase/new-fashion.vue
+++ /dev/null
@@ -1,605 +0,0 @@
-<template>
-  <scroller class="content">
-    <refresh class="refresh" @refresh="handleRefresh" :display="displayRefresh"
-      style="flex-direction:row;">
-      <loading-indicator></loading-indicator>
-      <text style="margin-left:36px;color:#eee;">下拉刷新...</text>
-    </refresh>
-    <headlines v-if="show0" :ds="showData.header"></headlines>
-    <category v-if="show0" :ds="showData.category"></category>
-    <coupon v-if="show1" :ds="showData.coupon"></coupon>
-    <goods v-if="show1" :ds="showData.goods"></goods>
-    <resource v-if="show1" :ds="showData.resource"></resource>
-    <scene v-if="show1" :ds="showData.scene"></scene>
-    <match v-if="show2" :ds="showData.match"></match>
-    <brand v-if="show2" :ds="showData.brand"></brand>
-    <loading class="loading" @loading="handleLoading" :display="displayLoading">
-      <text style="color:#eee;">加载更多...</text>
-    </loading>
-  </scroller>
-</template>
-
-<style scoped>
-  .content {
-    color: #353535;
-    background-color: #666;
-    position: absolute;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-  }
-  .refresh {
-    align-items: center;
-    justify-content: center;
-  }
-  .loading {
-    align-items: center;
-    justify-content: center;
-  }
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  var timer = weex.requireModule('timer')
-
-  module.exports = {
-    components: {
-      headlines: require('./include/headlines.vue'),
-      category: require('./include/category.vue'),
-      coupon: require('./include/coupon.vue'),
-      goods: require('./include/goods.vue'),
-      resource: require('./include/resource.vue'),
-      scene: require('./include/scene.vue'),
-      match: require('./include/match.vue'),
-      brand: require('./include/brand.vue')
-    },
-    data: {
-      navBarHeight: 88,
-      cnt: 0,
-      show0: true,
-      show1: false,
-      show2: false,
-      displayRefresh: 'show',
-      displayLoading: 'show',
-      showData: {}
-    },
-    created: function () {
-      this.showData = {
-        "header": {
-          "topBanner": "https://gw.alicdn.com/tps/TB1J48kMXXXXXXtapXXXXXXXXXX-750-782.jpg",
-          "ruleLink": "https://chaoshi.m.tmall.com/",
-          "isShowShare": true,
-          "shareInfo": {
-            "shareTitle": "我是分享标题",
-            "shareIntro": " 我是分享内容测试",
-            "allLink": "https://www.tmall.com",
-            "mobileImage": "https://gw.alicdn.com/tps/TB1J48kMXXXXXXtapXXXXXXXXXX-750-782.jpg",
-            "pcImage": "https://img.alicdn.com/tps/i4/TB1Dyw1LVXXXXXEapXXSutbFXXX.jpg",
-            "shareScene": "我是测试业务",
-            "bizId": ""
-          },
-          "announceHdBanner": "https://gw.alicdn.com/tps/i4/TB1fzclLVXXXXaVaXXXwu0bFXXX.png",
-          "bannerItems": [{
-            "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img": "https://img.alicdn.com/tps/TB1U8LHLVXXXXa3XpXXXXXXXXXX-233-172.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          }]
-        },
-        "fashion": {
-          "isHide": false,
-          "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-          "bigBannerImg": "https://gw.alicdn.com/tps/TB1tO.aLVXXXXcvXpXXXXXXXXXX-750-262.jpg",
-          "bigBannerUrl": "https://chaoshi.m.tmall.com/",
-          "smallBannerItems": [{
-            "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          }],
-          "isHideStarBanner": false,
-          "firstStarBannerItems": [{
-            "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          }],
-          "secondStarBannerItems": [{
-            "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          }],
-          "thirdStarBannerItems": [{
-            "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img": "https://gw.alicdn.com/tps/TB1xlIVLVXXXXckXVXXXXXXXXXX-250-220.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          }]
-        },
-        "goods": {
-          "isHide": false,
-          "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-          "bannerItems": [{
-            "img1": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url1": "https://chaoshi.m.tmall.com/",
-            "img2": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url2": "https://chaoshi.m.tmall.com/",
-            "img3": "https://gw.alicdn.com/tps/TB12MPFLVXXXXXnXVXXXXXXXXXX-250-592.jpg",
-            "url3": "https://chaoshi.m.tmall.com/",
-            "img4": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url4": "https://chaoshi.m.tmall.com/",
-            "img5": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url5": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img1": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url1": "https://chaoshi.m.tmall.com/",
-            "img2": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url2": "https://chaoshi.m.tmall.com/",
-            "img3": "https://gw.alicdn.com/tps/TB12MPFLVXXXXXnXVXXXXXXXXXX-250-592.jpg",
-            "url3": "https://chaoshi.m.tmall.com/",
-            "img4": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url4": "https://chaoshi.m.tmall.com/",
-            "img5": "https://gw.alicdn.com/tps/TB1TUzGLVXXXXc1XFXXXXXXXXXX-250-296.jpg",
-            "url5": "https://chaoshi.m.tmall.com/"
-          }]
-        },
-        "coupon": {
-          "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg"
-        },
-        "scene": {
-          "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-          "_backup": {
-            "id": "03653",
-            "data": [{
-              "id": "1395",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1395&scm=1003.1.03653.MAIN_1395_710531&pos=1",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i2/TB1n6bVLVXXXXcCXVXXTCU0QpXX-300-300.jpg",
-              "sceneCat": "50008881,50008883,50008882,50008884,50012774,50012775,50012776,50012781,50008886,50012766,50012771,50012772,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,16240,50012773,50006846,50010394,50008888,50008890,50008889,50012784,50012785,50012786,50012787,50008885,50012777,50012778,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124942005,50010368,50011892,50011894,50023751,121366037,121458036,121392038,121420035,121364028,121468026,121400029,121418030,121478031,121480030,121366035,121424025,121426030,121484030,121412031,125054002,125074007,125074008,125104003,125080003,125024006,125080004,121400030,121424024,121482025,121418031,121402028,121388035",
-              "finalScore": "77.26011111111112",
-              "_pos_": 1,
-              "entityType": "MAIN",
-              "benefitImg": "//img.alicdn.com/tps/i3/TB1Onr9LVXXXXbiXpXXB8gAQpXX-300-100.png",
-            },
-            {
-              "id": "1394",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1394&scm=1003.1.03653.MAIN_1394_710531&pos=2",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i1/TB13mj1LVXXXXa.XFXXTCU0QpXX-300-300.jpg",
-              "sceneCat": "50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50011740,50006843,50006842,124986002,50010368, 50011892,50011894,121480030,121366035,121424025,121426030,121484030,121412031",
-              "finalScore": "77.06103999999999",
-              "_pos_": 2,
-              "entityType": "MAIN",
-              "benefitImg": "//img.alicdn.com/tps/i2/TB17kvVLVXXXXaTXVXXB8gAQpXX-300-100.png",
-            },
-            {
-              "id": "1396",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1396&scm=1003.1.03653.MAIN_1396_710531&pos=3",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i2/TB1ZOAXLVXXXXa0XXXXTCU0QpXX-300-300.jpg",
-              "sceneCat": "50010368,50011892,50011894,50013794,50010792,50010790,50010790,121434025,121396024,50010793,50010789,50010793,121386035,121392037,121458034,121392036,121482027,121392015,121368014,121418013,121392016,50011982,122690003,302910,50012010,122654005,50012019,50012825,50012027,50012042,50011744,50012906,50012907,50008881,50008883,50008882?,50012784?,50022889,50022728,50013228,50013896,50014775,50019578,50014822,50026394,50019694,50019279,50019272,50014079,50014078,50014076,50014077,50017238,121464011,121468014,50019130,50019127,50019126,50019128,50019125,50015984,50014803,50014802,50015980,50014788,50014787,50019526,50014791,50019520,50013932,50014677,50015978,50014786,50014785,50522001,50014493,50023100,121418021,121388027,121424021,121418020,121368020,50012036,50012044,50012043,50010368, 50011892, 50019274,50012044,50012048,50012043,50013228,50013238,50011726,50019279,50015984,50014803,50014802,50019526,50014791,50019520,50013932,50014677,50019526,50013314,50023341,50016752,50016749,50016747,50016744,50016741,50016740,50016739,50016738,50016737,50016769,50016763,50016750,50007003,302910,50012010,50012032,50012033,50011745,50011746,50011894,121458034,121756003,121426033,50011982,50011979,121390006,124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,50010850,50000671,162201,50022566,50007068,50026651,50000852,162104,162116,162205,1623,123216004,162404,162401,50011412,50011411,162402,50008903,50011413,162403,50000697,1629,50011277,121412004,50008897,50008901,50008899,50013194,50008904,50008905,50008898,162103,50008900,50013196,121434004,50005065,162702,162701,162703,1636,1512,123534001,14,50008090,50012341,50132002,50012342,50012343,50012345,50012346,50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,121450007,50013697,50010218,50005960,50005962,50012820,50012406,50023620,50023605,50008829,50024064,50023440,50008687,124392001,50023771,50006804,50012410,124482010,121398023,50023789,50011975",
-              "finalScore": "76.76379487179486",
-              "_pos_": 3,
-              "entityType": "MAIN",
-              "benefitImg": "//img.alicdn.com/tps/i3/TB1Usn.LVXXXXaoXpXXB8gAQpXX-300-100.png",
-            },
-            {
-              "id": "1619",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1619&scm=1003.1.03653.SUB_1619_710531&pos=4",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i2/TB1MpoBLVXXXXbxXpXXKofZZpXX-182-206.jpg",
-              "sceneCat": "124730001,50001748,50011130,124730001,50001748,50011130,50011129,50010160,50011161,50011159,50010159,50010158,50011127,3035,50010167,50000557,50011123,50010402,50000436,50011153,122654005,50011740,50009032,124688012,213202,121396029,121476023,121410029,213203,50023326,213205,50022686,50023293,50466023,50024999,50016885,50011894",
-              "finalScore": "75.88480000000001",
-              "_pos_": 4,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i4/TB1j0AxLVXXXXaRXFXX3bpXTXXX-170-100.png",
-            },
-            {
-              "id": "1612",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1612&scm=1003.1.03653.SUB_1612_710531&pos=5",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i3/TB1NNwyLVXXXXaEXVXXKofZZpXX-182-206.jpg",
-              "sceneCat": "50010850,50000671,162104,162116,123216004",
-              "finalScore": "75.23733333333334",
-              "_pos_": 5,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i1/TB1PsoBLVXXXXbQXpXX3bpXTXXX-170-100.png",
-            },
-            {
-              "id": "1610",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1610&scm=1003.1.03653.SUB_1610_710531&pos=6",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i4/TB1EkczLVXXXXcVXpXXKofZZpXX-182-206.jpg",
-              "sceneCat": "121484044,121452038,50012342,50012027,50012032,50006843,50010850,50000671,162104,1623,50011277,162116,123216004,50008898,121366037,121458036,121392038,121420035,121364028,121468026,121472031,121476036,121470042,121418032,121410036,121472032,121420032,121470040,121384032,121460028,121448028,121400030,121424024,121482025,121418031,121402028,121388035,121460029,121400028,121400029,121418030,121476034,121478031,121448029,121480030,121366035,121424025,121426030,121484030,121412031,121384033,121424023,121402027,121408039,121420033,121452028,121466040,121416029,121482028,121420034,121396046,121422052,121370037,121424031,21364043,121472040,121412045,121424032,125054002,125074007,125074008,125104003,125080003,125024006,125080004",
-              "finalScore": "75.00533333333334",
-              "_pos_": 6,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i2/TB1RzwFLVXXXXXsXpXX3bpXTXXX-170-100.png",
-            },
-            {
-              "id": "1620",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1620&scm=1003.1.03653.SUB_1620_710531&pos=7",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i1/TB1IJsILVXXXXbGXXXXKofZZpXX-182-206.jpg",
-              "sceneCat": "50010789,50010790,50010792,50010793,50010794,50010796,50010797,50010798,50010801,50010803,50010805,50010807,50010808,50010813,50010814,50010815,50013794,121382014,121386023,121388007,121388008,121398004,121364007,121398006,121410007,121426007,121452004,50012010,50012027,50012032,124688012, 124986002, 124942005,50010850,50000671,162104,162201,50022566,162116,1623,50011277,50008897,162401,162402",
-              "finalScore": "74.72522222222223",
-              "_pos_": 7,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i1/TB16A.yLVXXXXX8XFXX3bpXTXXX-170-100.png",
-            },
-            {
-              "id": "1608",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1608&scm=1003.1.03653.SUB_1608_710531&pos=8",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i3/TB1xA3jLVXXXXXqapXXKofZZpXX-182-206.jpg",
-              "sceneCat": "50012010,50012027,50012032,50007003,50008881,50008883,1623,162116,50010850,123216004",
-              "finalScore": "74.626",
-              "_pos_": 8,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i2/TB1WvoALVXXXXcdXpXX3bpXTXXX-170-100.png",
-            },
-            {
-              "id": "1615",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1615&scm=1003.1.03653.SUB_1615_710531&pos=9",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i1/TB1PVctLVXXXXchXFXXKofZZpXX-182-206.jpg",
-              "sceneCat": "50011978,50011979,50011980,50011993,50011996,50011997,121390006,121408011,121474010,50010789,50010790,50010792,50010793,50010803,50013794,121398004,121410007,213205,121470030,50024980,121408030",
-              "finalScore": "74.02799999999999",
-              "_pos_": 9,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i4/TB1yKwBLVXXXXa4XpXX3bpXTXXX-170-100.png",
-            },
-            {
-              "id": "1618",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1618&scm=1003.1.03653.SUB_1618_710531&pos=10",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i1/TB1vn3sLVXXXXX5XVXXKofZZpXX-182-206.jpg",
-              "sceneCat": "50008886,50012766,50012771,50012772,50012773,50008090,111219,50012100,50012082,50012478,50012475,213202,50018977,121396029,121476023,50018994,121410029,213203,50023326,50003820,213205,50022686,50012481,50013976?,50001871,122854005,121458010,121452006,121416008,50008779,50002777,121394007,121386009,50010825,50013810,121434010,50001865,50008565,50008246,50017192,121404045,121368009,121462014,50019372,50008248,121418011,50008249,50017193,50008252,50008251,50000512,121364047",
-              "finalScore": "73.94212121212121",
-              "_pos_": 10,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i4/TB1kSkpLVXXXXbTXVXX3bpXTXXX-170-100.png",
-            },
-            {
-              "id": "1617",
-              "sceneUrl": "https://pages.tmall.com/wow/act/15617/scene?acm=03653.1003.1.710531&aldid=TPMkJDIw&wh_id=1617&scm=1003.1.03653.SUB_1617_710531&pos=11",
-              "_s_": "d",
-              "itemImg": "//img.alicdn.com/tps/i1/TB1ELwrLVXXXXaNXVXXKofZZpXX-182-206.jpg",
-              "sceneCat": "50013189,50010527,121394006,50013618,50010537,50012424,121452038,121484044,50010540,50010548,50024769,50012341,50132002,50012342,50012343,50012345,50012346,50012341,50132002,50012342,50012343,50012345,50012346",
-              "finalScore": "73.78883333333334",
-              "_pos_": 11,
-              "entityType": "SUB",
-              "benefitImg": "//img.alicdn.com/tps/i3/TB1CtsuLVXXXXcJXFXX3bpXTXXX-170-100.png",
-            }],
-            "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1001_B5&com=02&acm=03653.1003.1.710531&cod=03653&cache=jWl8FJsb&aldid=TPMkJDIw&logtype=4&abtest=_AB-LR1001-PR1001&scm=1003.1.03653.710531&ip=42.120.74.104",
-            "serverTime": 1458296110334
-          }
-        },
-        "resource": {
-          "isHide": false,
-          "bigBannerImg": "https://gw.alicdn.com/tps/TB1tO.aLVXXXXcvXpXXXXXXXXXX-750-262.jpg",
-          "bigBannerUrl": "https://chaoshi.m.tmall.com/",
-          "smallBannerItems": [{
-            "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "img": "https://img.alicdn.com/tps/TB1Ff_0LVXXXXXNaXXXXXXXXXXX-375-262.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          }]
-        },
-        "category": {
-          "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-          "_backup": {
-            "main": [],
-            "sub": [{
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/dqc?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_15_735362&pos=1",
-              "entityType": "OTHER",
-              "colour": "b4ebff",
-              "industryTitle": "数码",
-              "_pos_": 1,
-              "industryBenefit": "疯抢大牌新品",
-              "industryId": "15",
-              "industryImg": "//img.alicdn.com/tps/i4/TB1_xG.LVXXXXbWaXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/xihu?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_13_735362&pos=2",
-              "entityType": "OTHER",
-              "colour": "cdffa4",
-              "industryTitle": "洗护",
-              "_pos_": 2,
-              "industryBenefit": "爆款1分钱抢",
-              "industryId": "13",
-              "industryImg": "//img.alicdn.com/tps/i3/TB1Ft_CLVXXXXX2XXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/mobilephone?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_14_735362&pos=3",
-              "entityType": "OTHER",
-              "colour": "c5ffdf",
-              "industryTitle": "手机",
-              "_pos_": 3,
-              "industryBenefit": "1元抢优惠券",
-              "industryId": "14",
-              "industryImg": "//img.alicdn.com/tps/i3/TB1mJjuLVXXXXc.XXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/xiangbaohuanxin?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_11_735362&pos=4",
-              "entityType": "OTHER",
-              "colour": "ffccdc",
-              "industryTitle": "箱包",
-              "_pos_": 4,
-              "industryBenefit": "极致焕新尖货",
-              "industryId": "11",
-              "industryImg": "//img.alicdn.com/tps/i2/TB1_5P9KVXXXXayaXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/newfood?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_12_735362&pos=5",
-              "entityType": "OTHER",
-              "colour": "fff5a3",
-              "industryTitle": "食品",
-              "_pos_": 5,
-              "industryBenefit": "新品1分试吃",
-              "industryId": "12",
-              "industryImg": "//img.alicdn.com/tps/i2/TB1HfLzLVXXXXb_XXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/zbps?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_3_735362&pos=6",
-              "entityType": "OTHER",
-              "colour": "bbffe5",
-              "industryTitle": "珠宝配饰",
-              "_pos_": 6,
-              "industryBenefit": "大牌1折秒杀",
-              "industryId": "3",
-              "industryImg": "//img.alicdn.com/tps/i1/TB1s5y.LVXXXXb.aXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/getbeauty?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_2_735362&pos=7",
-              "entityType": "OTHER",
-              "colour": "ffd1b6",
-              "industryTitle": "美妆",
-              "_pos_": 7,
-              "industryBenefit": "即刻预约美丽",
-              "industryId": "2",
-              "industryImg": "//img.alicdn.com/tps/i1/TB1lNvoLVXXXXaoXFXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/guojixfs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_1_735362&pos=8",
-              "entityType": "OTHER",
-              "colour": "b9eaf2",
-              "industryTitle": "天猫国际",
-              "_pos_": 8,
-              "industryBenefit": "唤醒全球潮流",
-              "industryId": "1",
-              "industryImg": "//img.alicdn.com/tps/i4/TB1JHbkLVXXXXblXFXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/newnv?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_10_735362&pos=9",
-              "entityType": "OTHER",
-              "colour": "fff8ee",
-              "industryTitle": "鞋履",
-              "_pos_": 9,
-              "industryBenefit": "潮品精选鞋履",
-              "industryId": "10",
-              "industryImg": "//img.alicdn.com/tps/i2/TB1RovwLVXXXXXnXpXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/nvzhuang?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_7_735362&pos=10",
-              "entityType": "OTHER",
-              "colour": "d5cbe8",
-              "industryTitle": "女装",
-              "_pos_": 10,
-              "industryBenefit": "折后用券抢新",
-              "industryId": "7",
-              "industryImg": "//img.alicdn.com/tps/i1/TB1BOncLVXXXXXSaXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/man?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_6_735362&pos=11",
-              "entityType": "OTHER",
-              "colour": "cbe9a9",
-              "industryTitle": "男装",
-              "_pos_": 11,
-              "industryBenefit": "新品低至9.9元",
-              "industryId": "6",
-              "industryImg": "//img.alicdn.com/tps/i4/TB1t9TmLVXXXXbkXFXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/myxfs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_5_735362&pos=12",
-              "entityType": "OTHER",
-              "colour": "f8e1ff",
-              "industryTitle": "母婴童装",
-              "_pos_": 12,
-              "industryBenefit": "跨店满299减40",
-              "industryId": "5",
-              "industryImg": "//img.alicdn.com/tps/i3/TB1kpziLVXXXXabXVXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/jfjs?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_4_735362&pos=13",
-              "entityType": "OTHER",
-              "colour": "bbffe5",
-              "industryTitle": "家纺家饰",
-              "_pos_": 13,
-              "industryBenefit": "全场低至9.9元",
-              "industryId": "4",
-              "industryImg": "//img.alicdn.com/tps/i1/TB1lUjzLVXXXXbAXXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/neiyi328?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_9_735362&pos=14",
-              "entityType": "OTHER",
-              "colour": "ffc7c9",
-              "industryTitle": "内衣",
-              "_pos_": 14,
-              "industryBenefit": "新品3折起",
-              "industryId": "9",
-              "industryImg": "//img.alicdn.com/tps/i1/TB1S7PuLVXXXXcVXXXXrdvGIFXX-248-155.jpg"
-            },
-            {
-              "finalScore": 0,
-              "industryUrl": "//pages.tmall.com/wow/act/15617/ydhw?abbucket=_AB-M1011_B5&acm=03654.1003.1.735362&aldid=e5zPEI6R&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.OTHER_8_735362&pos=15",
-              "entityType": "OTHER",
-              "colour": "cbdbfe",
-              "industryTitle": "运动户外",
-              "_pos_": 15,
-              "industryBenefit": "大牌新品抢券",
-              "industryId": "8",
-              "industryImg": "//img.alicdn.com/tps/i2/TB1mQDALVXXXXbdXXXXrdvGIFXX-248-155.jpg"
-            }],
-            "isFormal": false,
-            "exposureParam": "//ac.mmstat.com/1.gif?apply=vote&abbucket=_AB-M1011_B5&com=02&acm=03654.1003.1.735362&cod=03654&cache=CG5ZB02B&aldid=e5zPEI6R&logtype=4&abtest=_AB-LR1011-PR1011&scm=1003.1.03654.735362&ip=42.120.74.159",
-            "id": "03654"
-          }
-        },
-        "brand": {
-          "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-          "bannerItems": [{
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          }]
-        },
-        "match": {
-          "floorTitle": "https://gw.alicdn.com/tps/TB1._64LVXXXXatXVXXXXXXXXXX-750-100.jpg",
-          "isShowTmSpecBanner": true,
-          "tmSpecBanner": {
-            "img": "https://gw.alicdn.com/tps/TB1F2fJLVXXXXccXFXXXXXXXXXX-750-230.jpg",
-            "url": "https://chaoshi.m.tmall.com/"
-          },
-          "bannerItems": [{
-            "leftImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          },
-          {
-            "leftImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-            "leftUrl": "https://chaoshi.m.tmall.com/",
-            "rightImg": "https://gw.alicdn.com/tps/TB1OUnILVXXXXcoXFXXXXXXXXXX-374-416.jpg",
-            "rightUrl": "https://chaoshi.m.tmall.com/"
-          }]
-        }
-      }
-      this.simLoadingData(this.cnt++)
-    },
-    methods: {
-      handleRefresh: function (e) {
-        var vm = this
-        vm.displayRefresh = 'show'
-        if (timer) {
-          timer.setTimeout(function () {
-            vm.displayRefresh = 'hide'
-          }, 2000)
-        } else {
-          modal.alert({
-            message: 'refreshing.'
-          }, function () {
-            vm.displayRefresh = 'hide'
-          })
-        }
-      },
-      handleLoading: function (e) {
-        var vm = this
-        vm.displayLoading = 'show'
-        modal.toast({
-          message: 'loading.'
-        })
-        if (timer) {
-          timer.setTimeout(function () {
-            vm.simLoadingData(vm.cnt++)
-            vm.displayLoading = 'hide'
-          }, 2000)
-        } else {
-          vm.simLoadingData(vm.cnt++)
-          vm.displayLoading = 'hide'
-        }
-      },
-      simLoadingData: function (num) {
-        if (num >= 3) {
-          modal.toast({
-            message: '已到底部'
-          })
-          return
-        }
-        this['show' + num] = true
-      }
-    }
-  };
-</script>
diff --git a/examples/vue/showcase/progress.vue b/examples/vue/showcase/progress.vue
deleted file mode 100644
index 8311bcf..0000000
--- a/examples/vue/showcase/progress.vue
+++ /dev/null
@@ -1,44 +0,0 @@
-<template>
-  <scroller>
-    <panel title="Basic" type="primary">
-      <div
-        :style="{
-          width: fullW,
-          borderColor: '#333',
-          borderWidth: 1,
-          borderStyle: 'solid'
-        }">
-        <div
-          :style="{
-            width: w,
-            height: 60,
-            backgroundColor: '#333'
-          }"></div>
-      </div>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  var INC = 20;
-  module.exports = {
-    data: function () {
-      return {
-        fullW: 600,
-        w: 40
-      }
-    },
-    components: {
-      panel: require('../include/panel.vue')
-    },
-    created: function() {
-      var me = this;
-      setInterval(function () {
-        if (me.w >= me.fullW) {
-          me.w = 0
-        }
-        me.w = (me.w + INC >= me.fullW) ? me.fullW : me.w + INC
-      }, 33);
-    }
-  }
-</script>
diff --git a/examples/vue/showcase/tap-penetrate.vue b/examples/vue/showcase/tap-penetrate.vue
deleted file mode 100644
index d6ac160..0000000
--- a/examples/vue/showcase/tap-penetrate.vue
+++ /dev/null
@@ -1,206 +0,0 @@
-<template>
-  <div>
-  <div class="items-box">
-    <a weex-type="a" class="items" @click="clickitem('Tap1')">
-      <text class="text">Tap1</text>
-    </a>
-    <a weex-type="a" class="items" @click="clickitem('Tap2')">
-      <text class="text">Tap2</text>
-    </a>
-  </div>
-  <div class="items-box">
-    <a weex-type="a" class="items" @click="clickitem('Tap in the a tag')" href="http://weex.apache.org/cn/references/" target="_blank">
-      <text class="text">Tap in the A tag</text>
-    </a>
-    <a weex-type="a" class="items" @click="preventDefault" :href="href" target="_blank">
-      <text class="text">Prevent A tag from href jumping</text>
-    </a>
-  </div>
-  <div class="items-box">
-    <a weex-type="a" class="items" href="http://weex.apache.org/cn/references/" target="_blank">
-      <text class="text">Url</text>
-    </a>
-    <a weex-type="a" class="items" href="http://weex.apache.org/cn/references/" target="_blank">
-      <text class="text">Url</text>
-    </a>
-  </div>
-  <div class="items-box">
-    <a weex-type="a" class="items" href="http://weex.apache.org/cn/references/" target="_blank">
-      <text class="text">Url</text>
-    </a>
-    <a weex-type="a" class="items" href="http://weex.apache.org/cn/references/" target="_blank">
-      <text class="text">Url</text>
-    </a>
-  </div>
-  <div class="items-box">
-    <a weex-type="a" class="items" href="http://weex.apache.org/cn/references/" target="_blank">
-      <text class="text">Url</text>
-    </a>
-    <a weex-type="a" class="items" href="http://weex.apache.org/cn/references/" target="_blank">
-      <text class="text">Url</text>
-    </a>
-  </div>
-  
-
-  <div class="wrapper" @click="backTop" v-if="show">
-    <text class="text">Tap</text>
-  </div>
-  </div>
-</template>
-
-<style scoped>
-  .items-box{
-    flex-direction: row;
-    justify-content: space-between;
-    -webkit-box-orient: horizontal;
-    -webkit-box-direction: normal;
-    -webkit-box-pack: justify;
-  }
-  .items{
-    flex-flow: row nowrap; 
-    align-items: center; 
-    overflow: hidden; 
-    position: relative; 
-    top: 0px; left: 0px; 
-    box-sizing: border-box; 
-    width: 374px; 
-    height: 564px; 
-    flex-basis: auto; 
-    font-size: 0px; 
-    border-color: rgb(0, 0, 0); 
-    border-style: solid; 
-    background-color: rgb(245, 245, 245); 
-    margin-bottom: 2px; 
-    text-align: center; 
-  }
-  .flexRow {
-    flex-direction: row;
-  }
-
-  .flexColumn {
-    flex-direction: column;
-  }
-
-  .text {
-    flex: 1;
-    text-align: center;
-  }
-  
-  .fixed {
-    position: fixed;
-    bottom: 50px;
-    left: 50px;
-    width: 300px;
-    height: 50px;
-    align-items: center;
-    justify-content: center
-  }
-
-  .shopImg {
-    width: 220px;
-    height: 220px;
-  }
-
-  .list {
-    flex-direction: column;
-    overflow: hidden;
-    width: 750px;
-    height: 100%;
-    background-color: #dddddd;
-  }
-
-  .cell {
-    background-color: #dddddd;
-    flex-direction: column;
-    width: 750px;
-  }
-
-  .test {
-    width:60px;
-    height:60px;
-  }
-
-  .shopDiv {
-    flex-direction: column;
-    background-color: #ffffff;
-    margin: 5px;
-    padding: 10px;
-    border-width: 1px;
-    border-color: #cccccc;
-    overflow: visible;
-  }
-
-  .shopRowList {
-    flex-direction: column;
-    border-width: 1px;
-    border-color: #cccccc;
-    overflow: visible;
-    margin: 5px;
-    padding: 10px;
-    background-color: #ffffff;
-  }
-
-  .shopHeader {
-    flex-direction: row;
-    width: 720px;
-  }
-
-  .shopFooter {
-    flex-direction: row;
-    width: 720px;
-  }
-
-  .smallImg {
-    width: 20px;
-    height: 20px;
-  }
-  .wrapper {
-    background-color: #f8f8f8;
-    border:1px solid #ddd;
-    position: fixed;
-    bottom: 20px;
-    right: 20px;
-    width: 88px;
-    height: 88px;
-    z-index: 10100;
-    flex-flow: row nowrap; 
-    align-items: center; 
-    cursor: pointer;
-  }
-  .backTop {
-    width: 88px;
-    height: 88px;
-  }
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  var dom = weex.requireModule('dom')
-  module.exports = {
-    data: function () {
-      return {
-        show: true,
-        href: 'http://weex.apache.org/cn/references/'
-      }
-    },
-    methods: {
-      clickitem: function(e) {
-        modal.toast({
-          message:'click' + e
-        })
-      },
-      preventDefault: function(e) {
-        this.href = 'javascript:void(0)'
-        modal.toast({
-          message:'click'
-        })
-      },
-      backTop: function () {
-        let self = this
-        window.scrollTo(0, 0)
-        this.show = false
-      }
-    }
-
-  }
-</script>
diff --git a/examples/vue/style/index.vue b/examples/vue/style/index.vue
deleted file mode 100644
index abee8e7..0000000
--- a/examples/vue/style/index.vue
+++ /dev/null
@@ -1,41 +0,0 @@
-<template>
-  <scroller style="overflow-x:hidden;">
-    <style-box></style-box>
-    <style-flex></style-flex>
-    <panel title="opacity" type="primary">
-      <div style="flex-direction:row;">
-        <style-item style="opacity:1" value="1"></style-item>
-        <style-item style="opacity:0.9" value="0.9"></style-item>
-        <style-item style="opacity:0.5" value="0.5"></style-item>
-        <style-item style="opacity:0.2" value="0.2"></style-item>
-      </div>
-    </panel>
-    <panel title="background-color" type="primary">
-      <div>
-        <style-item class="bg-item" style="background-color: #333;" value="#333"></style-item>
-        <style-item class="bg-item" style="background-color: #333333;" value="#333333"></style-item>
-        <style-item class="bg-item" style="background-color: rgb(238, 162, 54);" value="rgb()"></style-item>
-        <style-item class="bg-item" style="background-color: rgba(238, 162, 54, 0.5);" value="rgba()"></style-item>
-        <style-item class="bg-item" style="background-color: red;" value="red"></style-item>
-      </div>
-    </panel>
-  </scroller>
-</template>
-
-<style scoped>
-  .bg-item {
-    width: 690px;
-    margin-bottom: 10px;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      panel: require('../include/panel.vue'),
-      styleBox: require('./style-box.vue'),
-      styleFlex: require('./style-flex.vue'),
-      styleItem: require('./style-item.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/style/style-box.vue b/examples/vue/style/style-box.vue
deleted file mode 100644
index 76d7195..0000000
--- a/examples/vue/style/style-box.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-<template>
-  <div>
-    <panel title="Box Model" padding-body="0" type="primary">
-      <text class="box">Box</text>
-    </panel>
-
-    <panel title="border" type="primary">
-      <panel title="border-width" type="">
-        <div style="flex-direction: row;">
-          <style-item style="border-style: solid;border-width: 2px;border-color: #333;" value=""></style-item>
-          <style-item style="border-style: solid;border-width: 10px;border-color: #333;" value=""></style-item>
-          <style-item style="border-style: solid;border-left-width: 4px;border-color: #333;" value=""></style-item>
-          <style-item style="border-style: solid;border-bottom-width: 4px;border-color: #333;" value=""></style-item>
-        </div>
-      </panel>
-      <panel title="border-color" type="">
-        <div style="flex-direction: row;">
-          <style-item style="border-style: solid;border-width: 4px;border-color: #333;" value=""></style-item>
-          <style-item style="border-style: solid;border-width: 4px;border-color: #ddd;" value=""></style-item>
-          <style-item style="border-style: solid;border-width: 4px;border-color: red;" value=""></style-item>
-        </div>
-      </panel>
-      <panel title="border-style" type="">
-        <tip type="warning" value="just support four edges" style="margin-bottom: 10px;"></tip>
-        <div style="flex-direction: row;">
-          <style-item style="border-style: solid;border-width: 4px;border-color: #333;" value=""></style-item>
-          <style-item style="border-style: dashed;border-width: 4px;border-color: #333;" value="" type=""></style-item>
-          <style-item style="border-style: dotted;border-width: 4px;border-color: #333;" value=""></style-item>
-        </div>
-      </panel>
-      <panel title="border-radius" type="">
-        <div style="flex-direction: row;">
-          <style-item style="width: 75px;border-radius:38px" value=""></style-item>
-          <style-item style="border-radius:20px" value=""></style-item>
-          <style-item style="border-top-left-radius:20px;border-top-right-radius:20px" value=""></style-item>
-          <style-item style="border-bottom-left-radius:20px;border-bottom-right-radius:20px" value=""></style-item>
-        </div>
-      </panel>
-    </panel>
-  </div>
-</template>
-
-<style scoped>
-  .box {
-    background-color: #f5f5f5;
-    width: 260px;
-    height: 260px;
-    padding-left: 40px;
-    padding-top: 40px;
-    padding-right: 40px;
-    padding-bottom: 40px;
-    margin-left: 40px;
-    margin-top: 40px;
-    margin-right: 40px;
-    margin-bottom: 40px;
-    border-width: 40px;
-    border-color: #333;
-    border-style: solid;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      panel: require('../include/panel.vue'),
-      tip: require('../include/tip.vue'),
-      styleItem: require('./style-item.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/style/style-flex.vue b/examples/vue/style/style-flex.vue
deleted file mode 100644
index 246014d..0000000
--- a/examples/vue/style/style-flex.vue
+++ /dev/null
@@ -1,125 +0,0 @@
-<template>
-  <div>
-    <panel title="flex-direction" type="primary">
-      <div class="row" style="flex-direction: row;">
-        <style-item value="row" style="margin-right: 0;"></style-item>
-        <style-item type="1"></style-item>
-      </div>
-      <div class="row" style="flex-direction: column">
-        <style-item value="column"></style-item>
-        <style-item type="1"></style-item>
-      </div>
-    </panel>
-
-    <panel title="justify-content" type="primary">
-      <div class="row" style="justify-content: flex-start">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-      <div class="row" style="justify-content: flex-end">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-      <div class="row" style="justify-content: center">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-      <div class="row" style="justify-content: space-between">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-    </panel>
-
-    <panel title="align-items" type="primary">
-      <div class="row row-align" style="align-items: flex-start">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-      <div class="row row-align" style="align-items: flex-end">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-      <div class="row row-align" style="align-items: center">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-      <div class="row row-align" style="align-items: stretch">
-        <style-item style="margin-right:0;"></style-item>
-        <style-item style="margin-right:0;" type="1"></style-item>
-        <style-item style="margin-right:0;"></style-item>
-      </div>
-    </panel>
-
-    <panel title="flex" type="primary">
-      <div class="row" style="align-items: flex-start">
-        <style-item style="margin-right:0;" value="no flex"></style-item>
-        <style-item style="margin-right:0;" value="no flex" type="1"></style-item>
-        <style-item style="margin-right:0;" value="no flex"></style-item>
-      </div>
-      <div class="row" style="align-items: flex-start">
-        <style-item style="margin-right:0;" value="no flex"></style-item>
-        <style-item style="margin-right:0; flex:1;" type="1" value="flex:1"></style-item>
-        <style-item style="margin-right:0; flex:2;" value="flex:2"></style-item>
-      </div>
-      <div class="row" style="align-items: flex-start">
-        <style-item style="margin-right:0; flex:1;" value="flex:1"></style-item>
-        <style-item style="margin-right:0; flex:1;" type="1" value="flex:1"></style-item>
-        <style-item style="margin-right:0; flex:1;" value="flex:1"></style-item>
-      </div>
-      <div class="row" style="align-items: flex-start">
-        <style-item style="margin-right:0; flex:1;" value="flex:1"></style-item>
-        <style-item style="margin-right:0; flex:2;" type="1" value="flex:2"></style-item>
-        <style-item style="margin-right:0; flex:3;" value="flex:3"></style-item>
-      </div>
-    </panel>
-    
-    <panel title="flex-wrap" type="primary">
-      <div class="row" style="flex-wrap:wrap;background-color:grey;padding:10;">
-        <style-item value="1:wrap"></style-item>
-        <style-item value="2:wrap"></style-item>
-        <style-item value="3:wrap"></style-item>
-        <style-item value="4:wrap"></style-item>
-        <style-item value="5:wrap"></style-item>
-        <style-item value="6:wrap"></style-item>
-      </div>
-      <div class="row" style="flex-wrap:nowrap;background-color:grey;padding:10;">
-        <style-item value="1:nowrap"></style-item>
-        <style-item value="2:nowrap"></style-item>
-        <style-item value="3:nowrap"></style-item>
-        <style-item value="4:nowrap"></style-item>
-        <style-item value="5:nowrap"></style-item>
-        <style-item value="6:nowrap"></style-item>
-      </div>
-    </panel>
-  </div>
-</template>
-
-<style scoped>
-  .row {
-    flex-direction: row;
-    margin-bottom: 10px;
-  }
-
-  .row-align {
-    height: 160px;
-    border-width: 3px;
-    border-color: #ddd;
-    border-style: solid;
-  }
-</style>
-
-<script>
-  module.exports = {
-    components: {
-      panel: require('../include/panel.vue'),
-      styleItem: require('./style-item.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/style/style-item.vue b/examples/vue/style/style-item.vue
deleted file mode 100644
index d53e243..0000000
--- a/examples/vue/style/style-item.vue
+++ /dev/null
@@ -1,37 +0,0 @@
-<template>
-  <text
-    :value="value"
-    :style="{ backgroundColor: bgColor }"
-    class="item txt"></text>
-</template>
-
-<script>
-  module.exports = {
-    props: {
-      value: { default: '' },
-      type: { default: '0' } // 0, 1
-    },
-    computed: {
-      bgColor: function () {
-        return this.type == '1' ? '#7BA3A8' : '#BEAD92';
-      }
-    }
-  }
-</script>
-
-<style scoped>
-  .item {
-    margin-right: 10px;
-    /*margin-bottom: 10px;*/
-    width: 160px;
-    height: 75px;
-    padding-left: 8px;
-    padding-right: 8px;
-    padding-top: 8px;
-    padding-bottom: 8px;
-  }
-
-  .txt {
-    color: #eee;
-  }
-</style>
diff --git a/examples/vue/syntax/hello-world-1.vue b/examples/vue/syntax/hello-world-1.vue
deleted file mode 100644
index 495b95e..0000000
--- a/examples/vue/syntax/hello-world-1.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-<!-- template: html-like syntax -->
-
-<template>
-  <div>
-    <text>Hello World</text>
-  </div>
-</template>
diff --git a/examples/vue/syntax/hello-world-2.vue b/examples/vue/syntax/hello-world-2.vue
deleted file mode 100644
index 00ae48f..0000000
--- a/examples/vue/syntax/hello-world-2.vue
+++ /dev/null
@@ -1,14 +0,0 @@
-<!--
-  * <template>: html-like syntax
-  * CSS-like inline style
--->
-
-<template>
-  <div style="align-items: center; margin-top: 120px;">
-    <image
-      src="https://alibaba.github.io/weex/img/weex_logo_blue@3x.png"
-      style="width: 360px; height: 82px;"
-    ></image>
-    <text style="font-size: 48px;">Hello World</text>
-  </div>
-</template>
diff --git a/examples/vue/syntax/hello-world-3.vue b/examples/vue/syntax/hello-world-3.vue
deleted file mode 100644
index 78b05ce..0000000
--- a/examples/vue/syntax/hello-world-3.vue
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  * <template>: html-like syntax
-  * CSS-like inline style
-  * <style scoped>: only support single-class selector
--->
-
-<template>
-  <div class="wrapper">
-    <image
-      src="https://alibaba.github.io/weex/img/weex_logo_blue@3x.png"
-      class="logo"
-    ></image>
-    <text class="title">Hello World</text>
-  </div>
-</template>
-
-<style scoped>
-  .wrapper {align-items: center; margin-top: 120px;}
-  .title {font-size: 48px;}
-  .logo {width: 360px; height: 82px;}
-</style>
diff --git a/examples/vue/syntax/hello-world-4.vue b/examples/vue/syntax/hello-world-4.vue
deleted file mode 100644
index f5898a1..0000000
--- a/examples/vue/syntax/hello-world-4.vue
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-  * <template>: html-like syntax
-  * CSS-like inline style
-  * <style scoped>: only support single-class selector
-  * <script>: define the behavior of component
-  * :attr data-binding support
--->
-
-<template>
-  <div class="wrapper">
-    <image
-      :src="logoUrl"
-      class="logo"
-    ></image>
-    <text class="title">Hello {{target}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .wrapper {align-items: center; margin-top: 120px;}
-  .title {font-size: 48px;}
-  .logo {width: 360px; height: 82px;}
-</style>
-
-<script>
-  module.exports = {
-    data: {
-      logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-      target: 'World'
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/hello-world-5.vue b/examples/vue/syntax/hello-world-5.vue
deleted file mode 100644
index 32e0e89..0000000
--- a/examples/vue/syntax/hello-world-5.vue
+++ /dev/null
@@ -1,35 +0,0 @@
-<!--
-  * <template>: html-like syntax
-  * CSS-like inline style
-  * <style scoped>: only support single-class selector
-  * <script>: define the behavior of component
-  * :attr data-binding support
-  * @xxx syntax to bind event with a component method
--->
-
-<template>
-  <div class="wrapper" @click="update">
-    <image :src="logoUrl" class="logo"></image>
-    <text class="title">Hello {{target}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .wrapper {align-items: center; margin-top: 120px;}
-  .title {font-size: 48px;}
-  .logo {width: 360px; height: 82px;}
-</style>
-
-<script>
-  module.exports = {
-    data: {
-      logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-      target: 'World'
-    },
-    methods: {
-      update: function (e) {
-        this.target = 'Weex'
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/hello-world.vue b/examples/vue/syntax/hello-world.vue
deleted file mode 100644
index 073a966..0000000
--- a/examples/vue/syntax/hello-world.vue
+++ /dev/null
@@ -1,45 +0,0 @@
-<!--
-  * <template>: html-like syntax
-  * CSS-like inline style
-  * <style scoped>: only support single-class selector
-  * <script>: define the behavior of component
-  * :attr data-binding support
-  * @xxx syntax to bind event with a component method
--->
-
-<!--
-  notes:
-  * <template> only could have just one child
-  * the text node is only allowed as the child of <text> as the shorthand of its `value` attribute
-  * the style is not inherited from parent (for example: `font-size`)
-  * <script> support ECMAScript 5
-  * all component options assigns to `module.exports`
--->
-
-<template>
-  <div class="wrapper" @click="update">
-    <image :src="logoUrl" class="logo"></image>
-    <text class="title">Hello {{target}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .wrapper {align-items: center; margin-top: 120px;}
-  .title {font-size: 48px;}
-  .logo {width: 360px; height: 82px;}
-</style>
-
-<script>
-  module.exports = {
-    data: {
-      logoUrl: 'https://alibaba.github.io/weex/img/weex_logo_blue@3x.png',
-      target: 'World'
-    },
-    methods: {
-      update: function (e) {
-        this.target = 'Weex'
-        console.log('target:', this.target)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/include/btn.vue b/examples/vue/syntax/include/btn.vue
deleted file mode 100644
index 6fed870..0000000
--- a/examples/vue/syntax/include/btn.vue
+++ /dev/null
@@ -1,9 +0,0 @@
-<template>
-  <div class="btn">
-    <slot></slot>
-  </div>
-</template>
-
-<style scoped>
-  .btn {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;}
-</style>
diff --git a/examples/vue/syntax/include/sub.vue b/examples/vue/syntax/include/sub.vue
deleted file mode 100644
index c34ccec..0000000
--- a/examples/vue/syntax/include/sub.vue
+++ /dev/null
@@ -1,16 +0,0 @@
-<template>
-  <text class="item-txt">{{title}}</text>
-</template>
-
-<style scoped>
-  .item-txt {
-    font-size: 48px;
-    color: #555;
-  }
-</style>
-
-<script>
-  module.exports = {
-    props: ['url', 'title']
-  }
-</script>
diff --git a/examples/vue/syntax/script-component.vue b/examples/vue/syntax/script-component.vue
deleted file mode 100644
index 5208fd4..0000000
--- a/examples/vue/syntax/script-component.vue
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--
-  * `components` option to require sub components
-  * use attribute to pass props to sub components
-  * see `./include/sub.vue` source code for more details
--->
-
-<template>
-  <list>
-    <cell v-for="(item,i) in items" :key="i" >
-      <text>{{item.title}}</text>
-      <item :title="'a'"></item>
-    </cell>
-  </list>
-</template>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        items: [
-          {title: 'A', url: 'a'},
-          {title: 'B', url: 'b'},
-          {title: 'C', url: 'c'}
-        ]
-      }
-    },
-    components: {
-      item: require('./include/sub.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/script-data.vue b/examples/vue/syntax/script-data.vue
deleted file mode 100644
index 355fb14..0000000
--- a/examples/vue/syntax/script-data.vue
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--
-  * in root component `data` is an plain object
-  * in sub component `data` is a function which returns an plain object
-  * `data` means (internal) data
-  * `props` means external data, only used in sub components
-  * `props` could be set from parent by an attribute with the same name
-  * `props` cound be a string array or an object
-  * `props` object may have `type`, `default`
-  * `computed` support a single getter or a getter/setter object
--->
-
-<template>
-  <div @click="update">
-    <text class="title">{{firstName}}</text>
-    <text class="title">{{lastName}}</text>
-    <text class="title">{{fullName}}</text>
-    <text class="title">{{today}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-</style>
-
-<script>
-  // // if this is a sub component and the parent component could set `firstName` and `lastName` by:
-  // // `<subcomponent first-name="John" last-name="Smith"></subcomponent>`
-  // // but the `date` won't be changed from parent component
-  // module.exports = {
-  //   props: ['firstName', 'lastName'],
-  //   data: function () {
-  //     return {
-  //       date: Date.now()
-  //     }
-  //   }
-  // }
-
-  // // more `props` formats like
-  // module.exports = {
-  //   props: {
-  //     firstName: {
-  //       default: 'John'
-  //     },
-  //     lastName: {
-  //       type: String,
-  //       default: 'Smith'
-  //     }
-  //   },
-  //   data: function () {
-  //     return {
-  //       date: Date.now()
-  //     }
-  //   }
-  // }
-
-  module.exports = {
-    data: function () {
-      return {
-        firstName: 'John',
-        lastName: 'Smith',
-        date: Date.now()
-      }
-    },
-    methods: {
-      update: function () {
-        this.today = '2016-01-01'
-        console.log('today:', this.today)
-      }
-    },
-    computed: {
-      fullName: function () {
-        return this.firstName + ' ' + this.lastName
-      },
-      today: {
-        get: function () {
-          return new Date(this.date).toDateString()
-        },
-        set: function (v) {
-          this.date = Date.parse(v)
-        }
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/script-events.vue b/examples/vue/syntax/script-events.vue
deleted file mode 100644
index 13487f9..0000000
--- a/examples/vue/syntax/script-events.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-<!--
-  * `this.$on(type, handler)`: registers a component event listener
-  * `this.$off(type, handler)`: removes a component event listener
-  * `this.$emit(type, detail)`: sends component event to itself
--->
-
-<template>
-  <div>
-    <text class="title" v-for="(value, i) in list" :key="i" >{{value}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        list: []
-      }
-    },
-    mounted: function () {
-      function custom(e) {
-        this.list.push('custom: ' + JSON.stringify(e))
-        console.log(this.list)
-      }
-
-      this.$emit('custom', {x: 1})
-
-      this.$on('custom', custom)
-      this.$emit('custom', {x: 2})
-
-      this.$off('custom', custom)
-      this.$emit('custom', {x: 3})
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/script-instance.vue b/examples/vue/syntax/script-instance.vue
deleted file mode 100644
index fb31d5d..0000000
--- a/examples/vue/syntax/script-instance.vue
+++ /dev/null
@@ -1,71 +0,0 @@
-<!--
-  * access data/props
-  * access computed
-  * call methods
-  * get config
-  * listen and fire component events
-  * parent component and sub components
-  * find element
--->
-
-<template>
-  <div>
-    <text id="title" class="title">Please check out the source code.</text>
-    <!-- <subcomponent ref="sub"></subcomponent> -->
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        x: 1,
-        y: 2
-      }
-    },
-    methods: {
-      foo: function () {
-        console.log('foo')
-      },
-      test: function () {
-
-        // access data/props
-        console.log(this.x)
-
-        // access computed
-        console.log(this.z)
-
-        // call methods
-        this.foo()
-
-        // get config
-        console.log(this.$getConfig())
-
-        // listen and fire component events
-        this.$emit('custom')
-        this.$on('custom', this.foo)
-        this.$off('custom', this.foo)
-
-        // // parent component and sub components
-        // this.$parent.$emit('custom')
-        // this.$refs['sub'].$emit('custom')
-
-        // // find element
-        // var dom = weex.requireModule('dom')
-        // dom.scrollToElement(this.$el('title'), {offset: 0})
-      }
-    },
-    computed: {
-      z: function () {
-        return this.x + this.y
-      }
-    },
-    mounted: function () {
-      this.test()
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/script-lifecycle.vue b/examples/vue/syntax/script-lifecycle.vue
deleted file mode 100644
index 63b2e32..0000000
--- a/examples/vue/syntax/script-lifecycle.vue
+++ /dev/null
@@ -1,33 +0,0 @@
-<template>
-  <div>
-    <text class="title" v-for="(value, i) in list" :key="i" >{{value}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-</style>
-
-<script>
-  var initMessage
-  module.exports = {
-    data: function () {
-      return {
-        list: ['Lifecycle List']
-      }
-    },
-    init: function () {
-      initMessage = 'component init: nothing more happen even the data initialization'
-      console.log('init:', this.list)
-    },
-    created: function () {
-      this.list.push(initMessage)
-      this.list.push('component created: data observed')
-      console.log('created:', this.list)
-    },
-    mounted: function () {
-      this.list.push('component mounted: virtual dom generated')
-      console.log('mounted:', this.list)
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/script-module.vue b/examples/vue/syntax/script-module.vue
deleted file mode 100644
index be63313..0000000
--- a/examples/vue/syntax/script-module.vue
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  * `var module = weex.requireModule('module')` to import a native module
-  * `module.method(...)` to call a native API
--->
-
-<template>
-  <div>
-    <text class="btn" @click="test">Toast!</text>
-  </div>
-</template>
-
-<style scoped>
-  .btn {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;}
-</style>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    methods: {
-      test: function () {
-        modal.toast({
-          message: 'Toast!',
-          duration: 3
-        })
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/script-options.vue b/examples/vue/syntax/script-options.vue
deleted file mode 100644
index 1b997cb..0000000
--- a/examples/vue/syntax/script-options.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<!--
-  * components
-  * props
-  * data
-  * computed
-  * methods
-  * lifecycle
--->
-
-<template>
-  <div>
-    <text class="title">Please check out the source code.</text>
-    <!-- <item ref="sub"></item> -->
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-</style>
-
-<script>
-  module.exports = {
-    // // import sub components
-    // components: {
-    //   item: require('./components/sub.vue')
-    // },
-
-    // // for sub component only
-    // props: ['a', 'b'],
-
-    // for root component only
-    data: {
-      x: 1,
-      y: 2
-    },
-    // // for sub component only
-    // data: function () {
-    //   return {
-    //     x: 1,
-    //     y: 2
-    //   }
-    // }
-
-    methods: {
-      foo: function () {
-        console.log('foo')
-      }
-    },
-
-    computed: {
-      z: function () {
-        return this.x + this.y
-      }
-    },
-
-    init: function () {},
-    created: function () {},
-    mounted: function () {}
-  }
-</script>
diff --git a/examples/vue/syntax/template-class.vue b/examples/vue/syntax/template-class.vue
deleted file mode 100644
index 5a194db..0000000
--- a/examples/vue/syntax/template-class.vue
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-  * class name with data binding
--->
-
-<template>
-  <div @click="update">
-    <text class="a">Hello</text>
-    <text class="b">Hello</text>
-    <text :class="['a', x]">Hello</text>
-  </div>
-</template>
-
-<style scoped>
-  .a {font-size: 48px;}
-  .b {color: #ff0000;}
-</style>
-
-<script>
-  module.exports = {
-    data: {
-      x: ''
-    },
-    methods: {
-      update: function (e) {
-        this.x = 'b'
-        console.log('x', this.x)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/template-content.vue b/examples/vue/syntax/template-content.vue
deleted file mode 100644
index 0b58cd6..0000000
--- a/examples/vue/syntax/template-content.vue
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--
-  * `<slot>` will let the sub component contains the parent's children
-  * see `./include/btn.vue` source code for more details
--->
-
-<template>
-  <div>
-    <btn>
-      <text>Click!</text>
-    </btn>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    components: {
-      btn: require('./include/btn.vue')
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/template-event.vue b/examples/vue/syntax/template-event.vue
deleted file mode 100644
index 4e813bd..0000000
--- a/examples/vue/syntax/template-event.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-  * inline event listener
--->
-
-<template>
-  <div>
-    <text class="title">Hello {{name}}</text>
-    <text class="btn" @click="update">Update 1</text>
-    <text class="btn" @click="update($event)">Update 1</text>
-    <text class="btn" @click="setName(temp, $event)">Update 2</text>
-    <text class="btn" @click="setName('John')">Update 3</text>
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-  .subtitle {font-size: 36px;}
-  .btn {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;}
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        name: 'Steve',
-        temp: 'Mike'
-      }
-    },
-    methods: {
-      update: function (e) {
-        this.setName('David')
-        console.log('setName', this.name)
-      },
-      setName: function (value) {
-        this.name = value
-        console.log('name', this.name)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/template-if.vue b/examples/vue/syntax/template-if.vue
deleted file mode 100644
index 0bfdcd9..0000000
--- a/examples/vue/syntax/template-if.vue
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-  * v-if="flag": display or not by the truthy/falsy result
--->
-
-<template>
-  <div>
-    <text class="btn" @click="toggle">Toggle</text>
-    <text v-if="flag" class="title">I'm ON</text>
-    <text v-if="!flag" class="title">I'm Off</text>
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-  .btn {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;}
-</style>
-
-<script>
-  module.exports = {
-    data: {
-      flag: true
-    },
-    methods: {
-      toggle: function (e) {
-        this.flag = !this.flag
-        console.log('this.flag:', this.flag)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/template-repeat-update.vue b/examples/vue/syntax/template-repeat-update.vue
deleted file mode 100644
index 5f69849..0000000
--- a/examples/vue/syntax/template-repeat-update.vue
+++ /dev/null
@@ -1,54 +0,0 @@
-<!--
-  * track-by="primary": diff array by this as the primary key, default is the index
-  * use `Vue.set(list, index, value)` to set a item value, do not use `list[index] = value`
-  * use `list.splice()`, `list.push()`, `list.pop()`, `list.shift()`, `list.unshift()`, `list.sort()`, `list.reverse()`, do not use `list.length = x`
--->
-
-<template>
-  <div>
-    <text class="title">Track by</text>
-    <text class="subtitle" v-for="(item, k, $index) in list" track-by="item.key">{{$index}}-{{item.text}}</text>
-    <text class="btn" @click="update">Update</text>
-    <text class="btn" @click="mutate">Mutate</text>
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-  .subtitle {font-size: 36px;}
-  .btn {font-size: 36px; text-align: center; color: white; background-color: gray; padding: 20px; border-radius: 5px;}
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        list: [
-          {key: 1, text: 'a'},
-          {key: 2, text: 'a'},
-          {key: 3, text: 'b'},
-          {key: 4, text: 'c'},
-          {key: 5, text: 'a'}
-        ],
-        flag: true
-      }
-    },
-    methods: {
-      update: function (e) {
-        // equals to `this.list.text = 'foo'`
-        // DO NOT USE: `this.list[2] = {key: 3, text: 'foo'}}`
-        Vue.set(this.list, 2, {key: 3, text: 'foo'})
-        console.log('this.list', this.list)
-      },
-      mutate: function (e) {
-        if (this.list.length % 2) {
-          this.list.push({key: 'x', text: 'bar'})
-        }
-        else {
-          this.list.pop()
-        }
-        console.log('this.list', this.list)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/template-repeat.vue b/examples/vue/syntax/template-repeat.vue
deleted file mode 100644
index 3a7facd..0000000
--- a/examples/vue/syntax/template-repeat.vue
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--
-  * v-for="item in list": assign item and $index to this
-  * v-for="(index, item) in list" assign index and item to this
--->
-
-<template>
-  <div>
-    <text class="title">Custom item</text>
-    <text class="subtitle" v-for="item in list" :key="item.index" >{{item}}</text>
-    <text class="title">Custom key and item</text>
-    <text class="subtitle" v-for="(v,i) in list" :key="i" >{{i}}-{{v}}</text>
-    <text class="title">Array of Object</text>
-    <text class="subtitle" v-for="(item, k, index) in list2" :key="index" >> {{index}}-{{item.text}}</text>
-  </div>
-</template>
-
-<style scoped>
-  .title {font-size: 48px;}
-  .subtitle {font-size: 36px;}
-</style>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        list: [
-          'a',
-          'b',
-          'c',
-          'd',
-          'e'
-        ],
-        list2: [
-          {text: 'a'},
-          {text: 'b'},
-          {text: 'c'},
-          {text: 'd'},
-          {text: 'e'}
-        ]
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/syntax/template-style.vue b/examples/vue/syntax/template-style.vue
deleted file mode 100644
index c150919..0000000
--- a/examples/vue/syntax/template-style.vue
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-  * inline style with data binding
--->
-
-<template>
-  <div @click="update">
-    <text style="font-size: 48px; color: #0000ff">Hello</text>
-    <text :style="{ fontSize: size, color: color }">Hello</text>
-  </div>
-</template>
-
-<script>
-  module.exports = {
-    data: function () {
-      return {
-        size: 32,
-        color: '#ff0000'
-      }
-    },
-    methods: {
-      update: function (e) {
-        this.size = 48
-        console.log('this.size', this.size)
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/template.vue b/examples/vue/template.vue
deleted file mode 100644
index 249512c..0000000
--- a/examples/vue/template.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-<template>
-  <scroller>
-    <panel title="Dialog" type="primary">
-      <tip type="success" value="It's a weex example template." style="margin-bottom: 20px;"></tip>
-      <hn level="1" value="H1"></hn>
-      <button type="primary" @click.native="toast" value="Toast"></button>
-      <hn level="2" value="H3"></hn>
-      <button type="warning" @click.native="toast" value="Toast"></button>
-    </panel>
-    <panel title="Image" type="primary">
-      <tip type="warning" value="Weex screen width is 750" style="margin-bottom: 20px;"></tip>
-      <image class="img" style="width: 400px; height: 400px;" :src="img"></image>
-      <panel title="Image" type="default">
-        <text>sub info</text>
-      </panel>
-    </panel>
-  </scroller>
-</template>
-
-<script>
-  var modal = weex.requireModule('modal')
-  module.exports = {
-    data: function () {
-      return {
-        img: '//gw.alicdn.com/tps/i2/TB1DpsmMpXXXXabaXXX20ySQVXX-512-512.png_400x400.jpg'
-      }
-    },
-    components: {
-      panel: require('./include/panel.vue'),
-      hn: require('./include/hn.vue'),
-      tip: require('./include/tip.vue'),
-      button: require('./include/button.vue')
-    },
-    methods: {
-      toast: function() {
-        modal.toast({ message: 'a toast', duration: 2 })
-      }
-    }
-  }
-</script>
diff --git a/examples/vue/transition.vue b/examples/vue/transition.vue
deleted file mode 100644
index abcf830..0000000
--- a/examples/vue/transition.vue
+++ /dev/null
@@ -1,110 +0,0 @@
-<template>
-    <list class="list">
-        <cell class="cell" v-for="(item, i) in panels" @click="change(i)">
-            <div class="panel" :style="{height: item.height,width:item.width,backgroundColor:item.bgc,opacity:item.opacity,transform:item.transform}">
-                 <text class="text">{{item.label}}</text> 
-            </div>
-            <div class="panel" :style="{height: item.height,width:item.width,backgroundColor:item.bgc,opacity:item.opacity,transform:item.transform}">
-                 <text class="text">{{item.label}}</text> 
-            </div>
-        </cell>
-    </list>
-</template>
-<script>
-    export default {
-        created () {
-            this.datasource = ['width+height','backgroundColor','opactity','transform/translateX','transform/translateY','transform/scaleX','transform/scaleY','transform/rotate']
-            this.panels = this.randomfn()
-        },
-        data () {
-            return {
-                panels: []
-            }
-        },
-        methods: {
-            change (i) {
-                const item = this.panels[i]
-                if (item) {
-
-                    if(i==0)
-                    {
-                        item.height = item.height === 330 ? 200 : 330
-                        item.width = item.width === 350 ? 730 : 350
-                    }
-                    if(i==1)
-                    {
-                        item.bgc = item.bgc ===  '#69BE96' ? 'red':'#69BE96'
-                    }
-                    if(i==2)
-                    {
-                        item.opacity = item.opacity === 1.0 ? 0.6 : 1.0
-                    }
-                    if(i==3)
-                    {
-                        item.bgc = item.bgc ===  '#69BE96' ? '#72B8DF':'#69BE96'
-                        item.transform = item.transform === 'translateX(200px)'?'translateX(0px)':'translateX(200px)'
-                    }
-                    if(i==4)
-                    {
-                        item.bgc = item.bgc ===  '#69BE96' ? '#72B8DF':'#69BE96'
-                        item.transform = item.transform === 'translateY(-150px)'?'translateY(0px)':'translateY(-150px)'
-                    }
-                    if(i==5)
-                    {
-                       item.bgc = item.bgc ===  '#69BE96' ? '#72B8DF':'#69BE96'
-                       item.transform = item.transform === 'scaleX(0.5)'?'scaleX(1)':'scaleX(0.5)'
-                    }
-                    if(i==6)
-                    {
-                       item.bgc = item.bgc ===  '#69BE96' ? '#72B8DF':'#69BE96'
-                       item.transform = item.transform === 'scaleY(0.5)'?'scaleY(1)':'scaleY(0.5)'
-                    }
-                    if(i==7)
-                    {
-                       item.bgc = item.bgc ===  '#69BE96' ? '#72B8DF':'#69BE96'
-                       item.transform = item.transform === 'rotate(40deg)'?'rotate(0deg)':'rotate(40deg)'
-                    }
-                    
-                }
-            },
-            randomfn () {
-                let ary = [];
-                for(let i = 0; i<= 7; i++) {
-                    ary.push({label: this.datasource[i] ,height: 200 , width:730, bgc:'#69BE96',opacity:1,right:20})
-                }
-                return ary;
-            },
-        }
-    }
-</script>
-
-<style scoped>
-    .panel {
-        margin: 10px;
-        top:10px;
-        align-items: center;
-        justify-content: center;
-        border: solid;
-        border-radius: 10px; 
-          
-        transition-property: right,left,top,bottom,width,height,backgroundColor,opacity,transform;
-        transition-duration: 0.5s; 
-        transition-delay: 0s;
-        transition-timing-function: cubic-bezier(0.58, 0.1, 0.42, 1.0); 
-    }
-    .cell{
-        background-color:white;
-        flex-direction: row;
-    }
-
-
-    .text {
-        font-size: 60px; 
-        text-align: center;
-        color: white;
-
-    }
-    .list{
-        background-color:white;
-    }
-</style>
diff --git a/index.html b/index.html
deleted file mode 100644
index da7ebae..0000000
--- a/index.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <title>Weex Vue Demo</title>
-
-  <!-- You should set 'weex-viewport' to your design pixel width, and the
-    viewport meta should be set like below, OTHERWISE it won't work.-->
-  <meta name="weex-viewport" content="750">
-  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
-
-  <meta name="apple-mobile-web-app-capable" content="yes" />
-  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
-  <meta name="apple-touch-fullscreen" content="yes" />
-  <meta name="format-detection" content="telephone=no, email=no" />
-
-  <!-- About style below: html's height should set to 100%, and this
-    style should be added before the weex-vue-render script loaded.
-    OTHERWISE the 'weex.config.env.deviceHeight' will not work. -->
-  <style>
-    html, body {
-      -ms-overflow-style: scrollbar;
-      -webkit-tap-highlight-color: transparent;
-      padding: 0;
-      margin: 0;
-      width: 100%;
-      height: 100%;
-      background-color: green;
-      overflow-x: hidden;
-    }
-    #info {
-      position: fixed;
-      z-index: 999999;
-      top: 100px;
-      left: 0;
-      width: 100%;
-      height: 400px;
-      font-size: 24px;
-      color: green;
-      padding: 10px;
-      overflow-x: hidden;
-      overflow-y: scroll;
-      background-color: #eee;
-      opacity: 0.7;
-    }
-  </style>
-</head>
-<body>
-  <div id="root"></div>
-  <script src="./node_modules/vue/dist/vue.runtime.js"></script>
-  <script src="./node_modules/weex-vue-render/dist/index.js"></script>
-  <script src="./packages/weex-vue-render/dist/index.js"></script>
-  <script>
-    /**
-     * these iife is just for the convenience for the showcase of demos.
-     * you can import a jsbundle by wrapping it in a <script> tag.
-     * e.g. <script src="examples/build/vue-web/vue/index.js"></*script>
-     */
-    ; (function () {
-      function getUrlParam (key) {
-        var reg = new RegExp('[?|&]' + key + '=([^&]+)')
-        var match = location.search.match(reg)
-        return match && match[1]
-      }
-
-      var page = getUrlParam('page')
-      var defaultPage = 'examples/build/vue-web/vue/index.js'
-      if (!page) {
-        var url = location.href.replace(/\?|$/, function(f) {
-          var query = '?page=' + defaultPage
-          return f ? query + '&' : query
-        })
-        return location.href = url
-      }
-
-      var bundle = document.createElement('script')
-      bundle.src = page
-      document.body.appendChild(bundle)
-    })()
-  </script>
-</body>
-</html>
diff --git a/package-lock.json b/package-lock.json
index 3d9777a..160173d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,80 +5,169 @@
   "requires": true,
   "dependencies": {
     "@babel/polyfill": {
-      "version": "7.6.0",
-      "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.6.0.tgz",
-      "integrity": "sha512-q5BZJI0n/B10VaQQvln1IlDK3BTBJFbADx7tv+oXDPIDZuTo37H5Adb9jhlXm/fEN4Y7/64qD9mnrJJG7rmaTw==",
+      "version": "7.12.1",
+      "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz",
+      "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==",
       "dev": true,
       "requires": {
         "core-js": "^2.6.5",
-        "regenerator-runtime": "^0.13.2"
+        "regenerator-runtime": "^0.13.4"
       },
       "dependencies": {
-        "core-js": {
-          "version": "2.6.10",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz",
-          "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==",
-          "dev": true
-        },
         "regenerator-runtime": {
-          "version": "0.13.3",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
-          "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
+          "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
         }
       }
     },
-    "@octokit/endpoint": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.0.tgz",
-      "integrity": "sha512-TXYS6zXeBImNB9BVj+LneMDqXX+H0exkOpyXobvp92O3B1348QsKnNioISFKgOMsb3ibZvQGwCdpiwQd3KAjIA==",
+    "@octokit/auth-token": {
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz",
+      "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==",
       "dev": true,
       "requires": {
-        "@octokit/types": "^1.0.0",
-        "is-plain-object": "^3.0.0",
-        "universal-user-agent": "^4.0.0"
+        "@octokit/types": "^6.0.3"
+      }
+    },
+    "@octokit/endpoint": {
+      "version": "6.0.11",
+      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz",
+      "integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==",
+      "dev": true,
+      "requires": {
+        "@octokit/types": "^6.0.3",
+        "is-plain-object": "^5.0.0",
+        "universal-user-agent": "^6.0.0"
+      },
+      "dependencies": {
+        "universal-user-agent": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+          "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
+          "dev": true
+        }
+      }
+    },
+    "@octokit/openapi-types": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.0.0.tgz",
+      "integrity": "sha512-gV/8DJhAL/04zjTI95a7FhQwS6jlEE0W/7xeYAzuArD0KVAVWDLP2f3vi98hs3HLTczxXdRK/mF0tRoQPpolEw==",
+      "dev": true
+    },
+    "@octokit/plugin-paginate-rest": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz",
+      "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==",
+      "dev": true,
+      "requires": {
+        "@octokit/types": "^2.0.1"
+      },
+      "dependencies": {
+        "@octokit/types": {
+          "version": "2.16.2",
+          "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+          "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+          "dev": true,
+          "requires": {
+            "@types/node": ">= 8"
+          }
+        }
+      }
+    },
+    "@octokit/plugin-request-log": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz",
+      "integrity": "sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==",
+      "dev": true
+    },
+    "@octokit/plugin-rest-endpoint-methods": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz",
+      "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==",
+      "dev": true,
+      "requires": {
+        "@octokit/types": "^2.0.1",
+        "deprecation": "^2.3.1"
+      },
+      "dependencies": {
+        "@octokit/types": {
+          "version": "2.16.2",
+          "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+          "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+          "dev": true,
+          "requires": {
+            "@types/node": ">= 8"
+          }
+        }
       }
     },
     "@octokit/request": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.0.tgz",
-      "integrity": "sha512-mMIeNrtYyNEIYNsKivDyUAukBkw0M5ckyJX56xoFRXSasDPCloIXaQOnaKNopzQ8dIOvpdq1ma8gmrS+h6O2OQ==",
+      "version": "5.4.15",
+      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.15.tgz",
+      "integrity": "sha512-6UnZfZzLwNhdLRreOtTkT9n57ZwulCve8q3IT/Z477vThu6snfdkBuhxnChpOKNGxcQ71ow561Qoa6uqLdPtag==",
       "dev": true,
       "requires": {
-        "@octokit/endpoint": "^5.5.0",
-        "@octokit/request-error": "^1.0.1",
-        "@octokit/types": "^1.0.0",
-        "deprecation": "^2.0.0",
-        "is-plain-object": "^3.0.0",
-        "node-fetch": "^2.3.0",
-        "once": "^1.4.0",
-        "universal-user-agent": "^4.0.0"
+        "@octokit/endpoint": "^6.0.1",
+        "@octokit/request-error": "^2.0.0",
+        "@octokit/types": "^6.7.1",
+        "is-plain-object": "^5.0.0",
+        "node-fetch": "^2.6.1",
+        "universal-user-agent": "^6.0.0"
       },
       "dependencies": {
-        "node-fetch": {
-          "version": "2.6.0",
-          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
-          "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==",
+        "@octokit/request-error": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz",
+          "integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==",
+          "dev": true,
+          "requires": {
+            "@octokit/types": "^6.0.3",
+            "deprecation": "^2.0.0",
+            "once": "^1.4.0"
+          }
+        },
+        "universal-user-agent": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+          "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
           "dev": true
         }
       }
     },
     "@octokit/request-error": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.0.4.tgz",
-      "integrity": "sha512-L4JaJDXn8SGT+5G0uX79rZLv0MNJmfGa4vb4vy1NnpjSnWDLJRy6m90udGwvMmavwsStgbv2QNkPzzTCMmL+ig==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz",
+      "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==",
       "dev": true,
       "requires": {
+        "@octokit/types": "^2.0.0",
         "deprecation": "^2.0.0",
         "once": "^1.4.0"
+      },
+      "dependencies": {
+        "@octokit/types": {
+          "version": "2.16.2",
+          "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+          "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+          "dev": true,
+          "requires": {
+            "@types/node": ">= 8"
+          }
+        }
       }
     },
     "@octokit/rest": {
-      "version": "16.34.1",
-      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.34.1.tgz",
-      "integrity": "sha512-JUoS12cdktf1fv86rgrjC/RvYLuL+o7p57W7zX1x7ANFJ7OvdV8emvUNkFlcidEaOkYrxK3SoWgQFt3FhNmabA==",
+      "version": "16.43.2",
+      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz",
+      "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==",
       "dev": true,
       "requires": {
+        "@octokit/auth-token": "^2.4.0",
+        "@octokit/plugin-paginate-rest": "^1.1.1",
+        "@octokit/plugin-request-log": "^1.0.0",
+        "@octokit/plugin-rest-endpoint-methods": "2.4.0",
         "@octokit/request": "^5.2.0",
         "@octokit/request-error": "^1.0.2",
         "atob-lite": "^2.0.0",
@@ -94,18 +183,18 @@
       }
     },
     "@octokit/types": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-1.1.0.tgz",
-      "integrity": "sha512-t4ZD74UnNVMq6kZBDZceflRKK3q4o5PoCKMAGht0RK84W57tqonqKL3vCxJHtbGExdan9RwV8r7VJBZxIM1O7Q==",
+      "version": "6.14.2",
+      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.14.2.tgz",
+      "integrity": "sha512-wiQtW9ZSy4OvgQ09iQOdyXYNN60GqjCL/UdMsepDr1Gr0QzpW6irIKbH3REuAHXAhxkEk9/F2a3Gcs1P6kW5jA==",
       "dev": true,
       "requires": {
-        "@types/node": "^12.11.1"
+        "@octokit/openapi-types": "^7.0.0"
       }
     },
     "@types/node": {
-      "version": "12.12.3",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.3.tgz",
-      "integrity": "sha512-opgSsy+cEF9N8MgaVPnWVtdJ3o4mV2aMHvDq7thkQUFt0EuOHJon4rQpJfhjmNHB+ikl0Cd6WhWIErOyQ+f7tw==",
+      "version": "15.0.3",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.3.tgz",
+      "integrity": "sha512-/WbxFeBU+0F79z9RdEOXH4CsDga+ibi5M8uEYr91u3CkT/pdWcV8MCook+4wDPnZBexRdwWS+PiVZ2xJviAzcQ==",
       "dev": true
     },
     "@weex-project/downgrade": {
@@ -120,9 +209,9 @@
       "dev": true
     },
     "JSONStream": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.3.tgz",
-      "integrity": "sha512-3Sp6WZZ/lXl+nTDoGpGWHEpTnnC6X5fnkolYZR6nwIfzbxxvA8utPWe1gCt7i0m9uVGsSz2IS8K8mJ7HmlduMg==",
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
       "dev": true,
       "requires": {
         "jsonparse": "^1.2.0",
@@ -152,22 +241,11 @@
         }
       }
     },
-    "acorn-dynamic-import": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
-      "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
-      "dev": true,
-      "requires": {
-        "acorn": "^5.0.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
-          "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
-          "dev": true
-        }
-      }
+    "acorn": {
+      "version": "5.7.4",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+      "dev": true
     },
     "acorn-es7-plugin": {
       "version": "1.0.18",
@@ -193,24 +271,30 @@
       }
     },
     "acorn-node": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.5.2.tgz",
-      "integrity": "sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg==",
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
+      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
       "dev": true,
       "requires": {
-        "acorn": "^5.7.1",
-        "acorn-dynamic-import": "^3.0.0",
-        "xtend": "^4.0.1"
+        "acorn": "^7.0.0",
+        "acorn-walk": "^7.0.0",
+        "xtend": "^4.0.2"
       },
       "dependencies": {
         "acorn": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
-          "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
+          "version": "7.4.1",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+          "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
           "dev": true
         }
       }
     },
+    "acorn-walk": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+      "dev": true
+    },
     "acorn5-object-spread": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/acorn5-object-spread/-/acorn5-object-spread-4.0.0.tgz",
@@ -218,49 +302,32 @@
       "dev": true,
       "requires": {
         "acorn": "^5.1.2"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
-          "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
-          "dev": true
-        }
       }
     },
     "address": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
-      "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz",
+      "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==",
       "dev": true
     },
     "agent-base": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
-      "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+      "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
       "dev": true,
       "requires": {
-        "extend": "~3.0.0",
-        "semver": "~5.0.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.0.3",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
-          "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
-          "dev": true
-        }
+        "es6-promisify": "^5.0.0"
       }
     },
     "ajv": {
-      "version": "5.5.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
-      "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "requires": {
-        "co": "^4.6.0",
-        "fast-deep-equal": "^1.0.0",
+        "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.3.0"
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
       }
     },
     "ajv-keywords": {
@@ -278,6 +345,17 @@
         "kind-of": "^3.0.2",
         "longest": "^1.0.1",
         "repeat-string": "^1.5.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
       }
     },
     "alphanum-sort": {
@@ -342,6 +420,82 @@
       "requires": {
         "micromatch": "^2.1.5",
         "normalize-path": "^2.0.0"
+      },
+      "dependencies": {
+        "arr-diff": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+          "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.0.1"
+          }
+        },
+        "array-unique": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+          "dev": true
+        },
+        "braces": {
+          "version": "1.8.5",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+          "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+          "dev": true,
+          "requires": {
+            "expand-range": "^1.8.1",
+            "preserve": "^0.2.0",
+            "repeat-element": "^1.1.2"
+          }
+        },
+        "expand-brackets": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+          "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+          "dev": true,
+          "requires": {
+            "is-posix-bracket": "^0.1.0"
+          }
+        },
+        "extglob": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+          "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        },
+        "micromatch": {
+          "version": "2.3.11",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+          "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^2.0.0",
+            "array-unique": "^0.2.1",
+            "braces": "^1.8.2",
+            "expand-brackets": "^0.1.4",
+            "extglob": "^0.3.1",
+            "filename-regex": "^2.0.0",
+            "is-extglob": "^1.0.0",
+            "is-glob": "^2.0.1",
+            "kind-of": "^3.0.2",
+            "normalize-path": "^2.0.1",
+            "object.omit": "^2.0.0",
+            "parse-glob": "^3.0.4",
+            "regex-cache": "^0.4.2"
+          }
+        }
       }
     },
     "archiver": {
@@ -423,13 +577,10 @@
       }
     },
     "arr-diff": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
-      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
-      "dev": true,
-      "requires": {
-        "arr-flatten": "^1.0.1"
-      }
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
     },
     "arr-flatten": {
       "version": "1.1.0",
@@ -443,24 +594,6 @@
       "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
       "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=",
-      "dev": true
-    },
-    "array-map": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
-      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
-      "dev": true
-    },
-    "array-reduce": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
-      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
-      "dev": true
-    },
     "array-slice": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
@@ -483,15 +616,9 @@
       "dev": true
     },
     "array-unique": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
-      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
-      "dev": true
-    },
-    "arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
       "dev": true
     },
     "asap": {
@@ -500,16 +627,20 @@
       "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0="
     },
     "asn1": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
-      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
     },
     "assert": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
-      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
       "dev": true,
       "requires": {
+        "object-assign": "^4.1.1",
         "util": "0.10.3"
       },
       "dependencies": {
@@ -560,9 +691,9 @@
       "dev": true
     },
     "async-each": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
-      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
       "dev": true
     },
     "async-retry": {
@@ -580,9 +711,9 @@
       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
     },
     "atob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
-      "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
       "dev": true
     },
     "atob-lite": {
@@ -611,9 +742,9 @@
       "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
     },
     "aws4": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
-      "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
+      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
     },
     "babel-code-frame": {
       "version": "6.26.0",
@@ -1235,9 +1366,9 @@
       "dev": true
     },
     "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
       "dev": true
     },
     "base": {
@@ -1292,40 +1423,27 @@
             "is-data-descriptor": "^1.0.0",
             "kind-of": "^6.0.2"
           }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
-        },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
-          "dev": true
         }
       }
     },
     "base64-js": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
-      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
       "dev": true
     },
     "bcrypt-pbkdf": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
       "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-      "optional": true,
       "requires": {
         "tweetnacl": "^0.14.3"
       }
     },
     "before-after-hook": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz",
-      "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz",
+      "integrity": "sha512-/6FKxSTWoJdbsLDF8tdIjaRiFXiE6UHsEHE3OPI/cwPURCVi1ukP0gmLn7XWEiFk5TcwQjjY5PWsU+j+tgXgmw==",
       "dev": true
     },
     "big.js": {
@@ -1335,11 +1453,21 @@
       "dev": true
     },
     "binary-extensions": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
-      "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
       "dev": true
     },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
     "bl": {
       "version": "0.9.5",
       "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz",
@@ -1374,18 +1502,18 @@
       }
     },
     "bluebird": {
-      "version": "3.5.1",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
-      "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+      "version": "3.7.2",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
       "dev": true
     },
     "boom": {
-      "version": "2.10.1",
-      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
-      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
+      "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
       "dev": true,
       "requires": {
-        "hoek": "2.x.x"
+        "hoek": "4.x.x"
       }
     },
     "brace-expansion": {
@@ -1399,14 +1527,32 @@
       }
     },
     "braces": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
-      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
       "dev": true,
       "requires": {
-        "expand-range": "^1.8.1",
-        "preserve": "^0.2.0",
-        "repeat-element": "^1.1.2"
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
       }
     },
     "browser-pack": {
@@ -1433,9 +1579,9 @@
       }
     },
     "browser-stdout": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
-      "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+      "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
       "dev": true
     },
     "browserify": {
@@ -1569,10 +1715,16 @@
           "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
           "dev": true
         },
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        },
         "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
           "dev": true,
           "requires": {
             "core-util-is": "~1.0.0",
@@ -1585,9 +1737,9 @@
           },
           "dependencies": {
             "process-nextick-args": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-              "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+              "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==",
               "dev": true
             },
             "string_decoder": {
@@ -1601,6 +1753,12 @@
             }
           }
         },
+        "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==",
+          "dev": true
+        },
         "timers-browserify": {
           "version": "1.4.2",
           "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
@@ -1662,12 +1820,6 @@
         "vlq": "^0.2.2"
       },
       "dependencies": {
-        "acorn": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
-          "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
-          "dev": true
-        },
         "ansi-styles": {
           "version": "3.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -1678,9 +1830,9 @@
           }
         },
         "chalk": {
-          "version": "2.4.1",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
-          "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+          "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",
@@ -1703,16 +1855,10 @@
             "vlq": "^0.2.2"
           }
         },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        },
         "supports-color": {
-          "version": "5.4.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
-          "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+          "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"
@@ -1721,9 +1867,9 @@
       }
     },
     "buffer": {
-      "version": "4.9.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
-      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "version": "4.9.2",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+      "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
       "dev": true,
       "requires": {
         "base64-js": "^1.0.2",
@@ -1752,9 +1898,15 @@
       "dev": true
     },
     "buffer-from": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
-      "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+      "dev": true
+    },
+    "builtin-modules": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz",
+      "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==",
       "dev": true
     },
     "builtin-status-codes": {
@@ -1784,14 +1936,6 @@
         "to-object-path": "^0.3.0",
         "union-value": "^1.0.0",
         "unset-value": "^1.0.0"
-      },
-      "dependencies": {
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
-        }
       }
     },
     "cached-path-relative": {
@@ -1834,9 +1978,9 @@
       }
     },
     "caniuse-db": {
-      "version": "1.0.30000870",
-      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000870.tgz",
-      "integrity": "sha1-85fNZJIsJPhdDOeAPJvVxaFXGxY=",
+      "version": "1.0.30001226",
+      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001226.tgz",
+      "integrity": "sha512-hnC3hnMKAn/VaRHFb4fCe7snQRQFy0EZrK0AAomFbqGT18KXOtnPvTm0m+NvyRrBCR1jwFCjbUQvar0r6lBvOw==",
       "dev": true
     },
     "caseless": {
@@ -1876,14 +2020,6 @@
         "has-ansi": "^2.0.0",
         "strip-ansi": "^3.0.0",
         "supports-color": "^2.0.0"
-      },
-      "dependencies": {
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
       }
     },
     "chardet": {
@@ -1922,18 +2058,24 @@
       }
     },
     "chromedriver": {
-      "version": "2.40.0",
-      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.40.0.tgz",
-      "integrity": "sha512-ewvRQ1HMk0vpFSWYCk5hKDoEz5QMPplx5w3C6/Me+03y1imr67l3Hxl9U0jn3mu2N7+c7BoC7JtNW6HzbRAwDQ==",
+      "version": "2.46.0",
+      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.46.0.tgz",
+      "integrity": "sha512-dLtKIJW3y/PuFrPmcw6Mb8Nh+HwSqgVrK1rWgTARXhHfWvV822X2VRkx2meU/tg2+YQL6/nNgT6n5qWwIDHbwg==",
       "dev": true,
       "requires": {
         "del": "^3.0.0",
         "extract-zip": "^1.6.7",
-        "kew": "^0.7.0",
         "mkdirp": "^0.5.1",
-        "request": "^2.87.0"
+        "request": "^2.88.0",
+        "tcp-port-used": "^1.0.1"
       }
     },
+    "ci-info": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+      "dev": true
+    },
     "circular-json": {
       "version": "0.3.3",
       "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
@@ -1969,12 +2111,6 @@
           "requires": {
             "is-descriptor": "^0.1.0"
           }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
         }
       }
     },
@@ -1988,9 +2124,9 @@
       }
     },
     "cli-width": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
-      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+      "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
       "dev": true
     },
     "cliui": {
@@ -2021,7 +2157,8 @@
     "co": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true
     },
     "coa": {
       "version": "1.0.4",
@@ -2054,18 +2191,18 @@
       }
     },
     "color-convert": {
-      "version": "1.9.2",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
-      "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
       "dev": true,
       "requires": {
-        "color-name": "1.1.1"
+        "color-name": "1.1.3"
       }
     },
     "color-name": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
-      "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
       "dev": true
     },
     "color-string": {
@@ -2121,17 +2258,17 @@
       }
     },
     "combined-stream": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
-      "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
       "requires": {
         "delayed-stream": "~1.0.0"
       }
     },
     "commander": {
-      "version": "2.16.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
-      "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==",
+      "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==",
       "dev": true
     },
     "commondir": {
@@ -2158,12 +2295,6 @@
         "readable-stream": "~1.0.26"
       },
       "dependencies": {
-        "node-int64": {
-          "version": "0.3.3",
-          "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz",
-          "integrity": "sha1-LW5rLs5d6FiLQ9iNG8QbJs0fqE0=",
-          "dev": true
-        },
         "readable-stream": {
           "version": "1.0.34",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
@@ -2203,9 +2334,9 @@
           "dev": true
         },
         "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
           "dev": true,
           "requires": {
             "core-util-is": "~1.0.0",
@@ -2217,6 +2348,12 @@
             "util-deprecate": "~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==",
+          "dev": true
+        },
         "string_decoder": {
           "version": "1.1.1",
           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -2229,9 +2366,9 @@
       }
     },
     "config-chain": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz",
-      "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=",
+      "version": "1.1.12",
+      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
+      "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
       "dev": true,
       "requires": {
         "ini": "^1.3.4",
@@ -2239,13 +2376,10 @@
       }
     },
     "console-browserify": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
-      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
-      "dev": true,
-      "requires": {
-        "date-now": "^0.1.4"
-      }
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+      "dev": true
     },
     "consolidate": {
       "version": "0.14.5",
@@ -2262,12 +2396,29 @@
       "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
       "dev": true
     },
-    "convert-source-map": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
-      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
+    "content-disposition": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
       "dev": true
     },
+    "convert-source-map": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+      "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      },
+      "dependencies": {
+        "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==",
+          "dev": true
+        }
+      }
+    },
     "copy-descriptor": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@@ -2285,9 +2436,9 @@
       }
     },
     "core-js": {
-      "version": "2.5.7",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
-      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+      "version": "2.6.12",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+      "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
     },
     "core-util-is": {
       "version": "1.0.2",
@@ -2315,10 +2466,10 @@
         "require-from-string": "^1.1.0"
       },
       "dependencies": {
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+        "require-from-string": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
+          "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=",
           "dev": true
         }
       }
@@ -2364,12 +2515,23 @@
       "dev": true
     },
     "cryptiles": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
-      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+      "version": "3.1.4",
+      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.4.tgz",
+      "integrity": "sha512-8I1sgZHfVwcSOY6mSGpVU3lw/GSIZvusg8dD2+OGehCJpOhQRLNcH0qb9upQnOH4XhgxxFJSg6E2kx95deb1Tw==",
       "dev": true,
       "requires": {
-        "boom": "2.x.x"
+        "boom": "5.x.x"
+      },
+      "dependencies": {
+        "boom": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
+          "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
+          "dev": true,
+          "requires": {
+            "hoek": "4.x.x"
+          }
+        }
       }
     },
     "crypto-browserify": {
@@ -2385,25 +2547,22 @@
       }
     },
     "css": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/css/-/css-2.2.3.tgz",
-      "integrity": "sha512-0W171WccAjQGGTKLhw4m2nnl0zPHUlTO/I8td4XzJgIB8Hg3ZZx71qT4G4eX8OVsSiaAKiUMy73E3nsbPlg2DQ==",
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
+      "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
       "dev": true,
       "requires": {
-        "inherits": "^2.0.1",
-        "source-map": "^0.1.38",
-        "source-map-resolve": "^0.5.1",
+        "inherits": "^2.0.3",
+        "source-map": "^0.6.1",
+        "source-map-resolve": "^0.5.2",
         "urix": "^0.1.0"
       },
       "dependencies": {
         "source-map": {
-          "version": "0.1.43",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "dev": true,
-          "requires": {
-            "amdefine": ">=0.0.4"
-          }
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
         }
       }
     },
@@ -2433,47 +2592,54 @@
         "source-list-map": "^0.1.7"
       },
       "dependencies": {
-        "loader-utils": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
-          "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+        "big.js": {
+          "version": "5.2.2",
+          "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+          "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+          "dev": true
+        },
+        "emojis-list": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+          "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+          "dev": true
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
           "dev": true,
           "requires": {
-            "big.js": "^3.1.3",
-            "emojis-list": "^2.0.0",
-            "json5": "^0.5.0"
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
           }
         }
       }
     },
     "css-selector-tokenizer": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
-      "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz",
+      "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
       "dev": true,
       "requires": {
-        "cssesc": "^0.1.0",
-        "fastparse": "^1.1.1",
-        "regexpu-core": "^1.0.0"
-      },
-      "dependencies": {
-        "regexpu-core": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
-          "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
-          "dev": true,
-          "requires": {
-            "regenerate": "^1.2.1",
-            "regjsgen": "^0.2.0",
-            "regjsparser": "^0.1.4"
-          }
-        }
+        "cssesc": "^3.0.0",
+        "fastparse": "^1.1.2"
       }
     },
     "cssesc": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
-      "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
       "dev": true
     },
     "cssnano": {
@@ -2526,20 +2692,14 @@
         "source-map": "^0.5.3"
       }
     },
-    "ctype": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
-      "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
-      "dev": true
-    },
     "danger": {
-      "version": "9.2.2",
-      "resolved": "https://registry.npmjs.org/danger/-/danger-9.2.2.tgz",
-      "integrity": "sha512-tDLIFYa1KzU7HJIvn6FEurFWqn36cFPVBLvKrUqbRxJOCPONWNvpRRbHKj3HmNPEQf5bVls78V/FZz8iRs4Qlg==",
+      "version": "9.4.0",
+      "resolved": "https://registry.npmjs.org/danger/-/danger-9.4.0.tgz",
+      "integrity": "sha512-VTuq6ZN2eZYXSTAlze8AZnEvnzghBM6fzQh+2JM04ZivN315wAQbHGoyhOOzMizpUI4FaRKlZFVMZnGQlrGaLA==",
       "dev": true,
       "requires": {
         "@babel/polyfill": "^7.2.5",
-        "@octokit/rest": "^16.14.1",
+        "@octokit/rest": "^16.43.1",
         "async-retry": "1.2.3",
         "chalk": "^2.3.0",
         "commander": "^2.18.0",
@@ -2564,7 +2724,7 @@
         "node-fetch": "^2.3.0",
         "override-require": "^1.1.1",
         "p-limit": "^2.1.0",
-        "parse-diff": "^0.5.1",
+        "parse-diff": "^0.7.0",
         "parse-git-config": "^2.0.3",
         "parse-github-url": "^1.0.2",
         "parse-link-header": "^1.0.1",
@@ -2576,15 +2736,6 @@
         "supports-hyperlinks": "^1.0.1"
       },
       "dependencies": {
-        "agent-base": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
-          "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
-          "dev": true,
-          "requires": {
-            "es6-promisify": "^5.0.0"
-          }
-        },
         "ansi-styles": {
           "version": "3.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -2594,47 +2745,6 @@
             "color-convert": "^1.9.0"
           }
         },
-        "arr-diff": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-          "dev": true
-        },
-        "array-unique": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-          "dev": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
         "chalk": {
           "version": "2.4.2",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -2646,185 +2756,13 @@
             "supports-color": "^5.3.0"
           }
         },
-        "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==",
-          "dev": true
-        },
         "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
           "dev": true,
           "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "expand-brackets": {
-          "version": "2.1.4",
-          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-          "dev": true,
-          "requires": {
-            "debug": "^2.3.3",
-            "define-property": "^0.2.5",
-            "extend-shallow": "^2.0.1",
-            "posix-character-classes": "^0.1.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "2.6.9",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-              "dev": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            },
-            "define-property": {
-              "version": "0.2.5",
-              "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-              "dev": true,
-              "requires": {
-                "is-descriptor": "^0.1.0"
-              }
-            },
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "0.1.6",
-              "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-              "dev": true,
-              "requires": {
-                "kind-of": "^3.0.2"
-              },
-              "dependencies": {
-                "kind-of": {
-                  "version": "3.2.2",
-                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                  "dev": true,
-                  "requires": {
-                    "is-buffer": "^1.1.5"
-                  }
-                }
-              }
-            },
-            "is-data-descriptor": {
-              "version": "0.1.4",
-              "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-              "dev": true,
-              "requires": {
-                "kind-of": "^3.0.2"
-              },
-              "dependencies": {
-                "kind-of": {
-                  "version": "3.2.2",
-                  "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                  "dev": true,
-                  "requires": {
-                    "is-buffer": "^1.1.5"
-                  }
-                }
-              }
-            },
-            "is-descriptor": {
-              "version": "0.1.6",
-              "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-              "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-              "dev": true,
-              "requires": {
-                "is-accessor-descriptor": "^0.1.6",
-                "is-data-descriptor": "^0.1.4",
-                "kind-of": "^5.0.0"
-              }
-            },
-            "kind-of": {
-              "version": "5.1.0",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-              "dev": true
-            },
-            "ms": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-              "dev": true
-            }
-          }
-        },
-        "extglob": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-          "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-          "dev": true,
-          "requires": {
-            "array-unique": "^0.3.2",
-            "define-property": "^1.0.0",
-            "expand-brackets": "^2.1.4",
-            "extend-shallow": "^2.0.1",
-            "fragment-cache": "^0.2.1",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "1.0.0",
-              "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-              "dev": true,
-              "requires": {
-                "is-descriptor": "^1.0.0"
-              }
-            },
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
+            "ms": "2.1.2"
           }
         },
         "has-flag": {
@@ -2833,146 +2771,25 @@
           "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
           "dev": true
         },
-        "https-proxy-agent": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
-          "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
-          "dev": true,
-          "requires": {
-            "agent-base": "^4.3.0",
-            "debug": "^3.1.0"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "3.2.6",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-              "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-              "dev": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            }
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
-        },
         "json5": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
-          "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+          "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.0"
+            "minimist": "^1.2.5"
           }
         },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
-          "dev": true
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": true,
-          "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
-          }
-        },
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "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
         },
-        "node-fetch": {
-          "version": "2.6.0",
-          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
-          "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==",
-          "dev": true
-        },
         "parse-diff": {
-          "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/parse-diff/-/parse-diff-0.5.1.tgz",
-          "integrity": "sha512-/qXjo9x/pFa5bVk/ZXaJD0yr3Tf3Yp6MWWMr4vnUmumDrE0yoE6YDH2A8vmcCD/Ko3tW2o0X+zGYh2zMLXshsg==",
-          "dev": true
-        },
-        "require-from-string": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
-          "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+          "version": "0.7.1",
+          "resolved": "https://registry.npmjs.org/parse-diff/-/parse-diff-0.7.1.tgz",
+          "integrity": "sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==",
           "dev": true
         },
         "supports-color": {
@@ -2986,6 +2803,12 @@
         }
       }
     },
+    "dash-ast": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz",
+      "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==",
+      "dev": true
+    },
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -2995,9 +2818,9 @@
       }
     },
     "datahub-nodejs-sdk": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/datahub-nodejs-sdk/-/datahub-nodejs-sdk-1.0.10.tgz",
-      "integrity": "sha512-yaK3ztQYUJTZMfsafPYy1QQnSP4rUEfCCptrbn2UMELt7gK2rJzd7agHog7cohjpj/FnJFMCYnNnNlw3AM2YGw==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/datahub-nodejs-sdk/-/datahub-nodejs-sdk-1.1.0.tgz",
+      "integrity": "sha512-OYPLVfPT3Lb5ChsocHcn5FQYvz6zPV4ThEKKs+JWN0ERMmfIaHgivKv4Ps8taUJm0v5b5hHiYw3u+QbRxS1eZQ==",
       "dev": true,
       "requires": {
         "isomorphic-fetch": "2"
@@ -3008,12 +2831,6 @@
       "resolved": "https://registry.npmjs.org/date-format/-/date-format-0.0.0.tgz",
       "integrity": "sha1-CSBoY6sHDrRZrOpVQsvYVrEZZrM="
     },
-    "date-now": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
-      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
-      "dev": true
-    },
     "dateformat": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
@@ -3113,18 +2930,6 @@
             "is-data-descriptor": "^1.0.0",
             "kind-of": "^6.0.2"
           }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
-        },
-        "kind-of": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
-          "dev": true
         }
       }
     },
@@ -3160,13 +2965,13 @@
       "dev": true
     },
     "deps-sort": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
-      "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz",
+      "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==",
       "dev": true,
       "requires": {
         "JSONStream": "^1.0.3",
-        "shasum": "^1.0.0",
+        "shasum-object": "^1.0.0",
         "subarg": "^1.0.0",
         "through2": "^2.0.0"
       }
@@ -3181,9 +2986,9 @@
       }
     },
     "detect-port": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.3.tgz",
-      "integrity": "sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz",
+      "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==",
       "dev": true,
       "requires": {
         "address": "^1.0.1",
@@ -3198,20 +3003,12 @@
       "requires": {
         "acorn": "^5.2.1",
         "defined": "^1.0.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
-          "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
-          "dev": true
-        }
       }
     },
     "diff": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
-      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
+      "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
       "dev": true
     },
     "doctrine": {
@@ -3269,9 +3066,9 @@
           "dev": true
         },
         "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
           "dev": true,
           "requires": {
             "core-util-is": "~1.0.0",
@@ -3283,6 +3080,12 @@
             "util-deprecate": "~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==",
+          "dev": true
+        },
         "string_decoder": {
           "version": "1.1.1",
           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -3295,12 +3098,12 @@
       }
     },
     "ecc-jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
-      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
-      "optional": true,
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
       "requires": {
-        "jsbn": "~0.1.0"
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
       }
     },
     "ecdsa-sig-formatter": {
@@ -3322,44 +3125,24 @@
         "mime": "^1.2.11",
         "minimist": "^1.1.0",
         "url-join": "^1.0.0"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        }
       }
     },
     "editorconfig": {
-      "version": "0.13.3",
-      "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz",
-      "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==",
+      "version": "0.15.3",
+      "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
+      "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
       "dev": true,
       "requires": {
-        "bluebird": "^3.0.5",
-        "commander": "^2.9.0",
-        "lru-cache": "^3.2.0",
-        "semver": "^5.1.0",
+        "commander": "^2.19.0",
+        "lru-cache": "^4.1.5",
+        "semver": "^5.6.0",
         "sigmund": "^1.0.1"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz",
-          "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=",
-          "dev": true,
-          "requires": {
-            "pseudomap": "^1.0.1"
-          }
-        }
       }
     },
     "electron-to-chromium": {
-      "version": "1.3.52",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz",
-      "integrity": "sha1-0tnxJwuko7lnuDHEDvcftNmrXOA=",
+      "version": "1.3.727",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz",
+      "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==",
       "dev": true
     },
     "emojis-list": {
@@ -3369,18 +3152,29 @@
       "dev": true
     },
     "encoding": {
-      "version": "0.1.12",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
-      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
       "dev": true,
       "requires": {
-        "iconv-lite": "~0.4.13"
+        "iconv-lite": "^0.6.2"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
+          "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3.0.0"
+          }
+        }
       }
     },
     "end-of-stream": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
-      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+      "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==",
       "dev": true,
       "requires": {
         "once": "^1.4.0"
@@ -3406,9 +3200,9 @@
       }
     },
     "errno": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
-      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
       "dev": true,
       "requires": {
         "prr": "~1.0.1"
@@ -3424,9 +3218,9 @@
       }
     },
     "es6-promise": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
-      "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
+      "version": "4.2.8",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
       "dev": true
     },
     "es6-promisify": {
@@ -3470,9 +3264,9 @@
       }
     },
     "eslint": {
-      "version": "4.18.2",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz",
-      "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==",
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
+      "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
       "dev": true,
       "requires": {
         "ajv": "^5.3.0",
@@ -3484,7 +3278,7 @@
         "doctrine": "^2.1.0",
         "eslint-scope": "^3.7.1",
         "eslint-visitor-keys": "^1.0.0",
-        "espree": "^3.5.2",
+        "espree": "^3.5.4",
         "esquery": "^1.0.0",
         "esutils": "^2.0.2",
         "file-entry-cache": "^2.0.0",
@@ -3506,6 +3300,7 @@
         "path-is-inside": "^1.0.2",
         "pluralize": "^7.0.0",
         "progress": "^2.0.0",
+        "regexpp": "^1.0.1",
         "require-uncached": "^1.0.3",
         "semver": "^5.3.0",
         "strip-ansi": "^4.0.0",
@@ -3514,6 +3309,18 @@
         "text-table": "~0.2.0"
       },
       "dependencies": {
+        "ajv": {
+          "version": "5.5.2",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+          "dev": true,
+          "requires": {
+            "co": "^4.6.0",
+            "fast-deep-equal": "^1.0.0",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.3.0"
+          }
+        },
         "ansi-regex": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
@@ -3552,18 +3359,24 @@
           }
         },
         "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
           "dev": true,
           "requires": {
             "ms": "^2.1.1"
           }
         },
+        "fast-deep-equal": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+          "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+          "dev": true
+        },
         "glob": {
-          "version": "7.1.5",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
-          "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
+          "version": "7.1.7",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
@@ -3586,16 +3399,16 @@
           "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
           "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==",
+        "json-schema-traverse": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+          "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
           "dev": true
         },
-        "progress": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-          "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+        "ms": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
           "dev": true
         },
         "strip-ansi": {
@@ -3619,9 +3432,9 @@
       }
     },
     "eslint-plugin-flowtype": {
-      "version": "2.50.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.0.tgz",
-      "integrity": "sha512-10FnBXCp8odYcpUFXGAh+Zko7py0hUWutTd3BN/R9riukH360qNPLYPR3/xV9eu9K7OJDjJrsflBnL6RwxFnlw==",
+      "version": "2.50.3",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz",
+      "integrity": "sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ==",
       "dev": true,
       "requires": {
         "lodash": "^4.17.10"
@@ -3638,17 +3451,17 @@
       },
       "dependencies": {
         "estraverse": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-          "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+          "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
           "dev": true
         }
       }
     },
     "eslint-visitor-keys": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
-      "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+      "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": {
@@ -3659,14 +3472,6 @@
       "requires": {
         "acorn": "^5.5.0",
         "acorn-jsx": "^3.0.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
-          "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
-          "dev": true
-        }
       }
     },
     "esprima": {
@@ -3676,35 +3481,35 @@
       "dev": true
     },
     "esquery": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
-      "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
       "dev": true,
       "requires": {
-        "estraverse": "^4.0.0"
+        "estraverse": "^5.1.0"
       },
       "dependencies": {
         "estraverse": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-          "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+          "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.2.1",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
-      "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+      "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": "^4.1.0"
+        "estraverse": "^5.2.0"
       },
       "dependencies": {
         "estraverse": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-          "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
           "dev": true
         }
       }
@@ -3716,15 +3521,15 @@
       "dev": true
     },
     "estree-walker": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
-      "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+      "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
       "dev": true
     },
     "esutils": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
       "dev": true
     },
     "event-target-shim": {
@@ -3733,9 +3538,9 @@
       "integrity": "sha1-psB/snNJWjeJ4QW0n8w8sKMI+rQ="
     },
     "eventemitter3": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
-      "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
       "dev": true
     },
     "events": {
@@ -3775,12 +3580,38 @@
       }
     },
     "expand-brackets": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
-      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
       "dev": true,
       "requires": {
-        "is-posix-bracket": "^0.1.0"
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
       }
     },
     "expand-range": {
@@ -3790,6 +3621,54 @@
       "dev": true,
       "requires": {
         "fill-range": "^2.1.0"
+      },
+      "dependencies": {
+        "fill-range": {
+          "version": "2.2.4",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+          "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+          "dev": true,
+          "requires": {
+            "is-number": "^2.1.0",
+            "isobject": "^2.0.0",
+            "randomatic": "^3.0.0",
+            "repeat-element": "^1.1.2",
+            "repeat-string": "^1.5.2"
+          }
+        },
+        "is-number": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+          "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+          "dev": true
+        },
+        "isobject": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+          "dev": true,
+          "requires": {
+            "isarray": "1.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
       }
     },
     "expand-tilde": {
@@ -3833,12 +3712,6 @@
           "requires": {
             "isobject": "^3.0.1"
           }
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
         }
       }
     },
@@ -3854,24 +3727,80 @@
       }
     },
     "extglob": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
-      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
       "dev": true,
       "requires": {
-        "is-extglob": "^1.0.0"
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
       }
     },
     "extract-zip": {
-      "version": "1.6.7",
-      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
-      "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
+      "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
       "dev": true,
       "requires": {
-        "concat-stream": "1.6.2",
-        "debug": "2.6.9",
-        "mkdirp": "0.5.1",
-        "yauzl": "2.4.1"
+        "concat-stream": "^1.6.2",
+        "debug": "^2.6.9",
+        "mkdirp": "^0.5.4",
+        "yauzl": "^2.10.0"
       }
     },
     "extsprintf": {
@@ -3880,14 +3809,14 @@
       "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
     },
     "fast-deep-equal": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
-      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
+      "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=="
     },
     "fast-json-stable-stringify": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+      "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=="
     },
     "fast-levenshtein": {
       "version": "2.0.6",
@@ -3895,6 +3824,12 @@
       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
       "dev": true
     },
+    "fast-safe-stringify": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
+      "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==",
+      "dev": true
+    },
     "fast-url-parser": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
@@ -3902,18 +3837,26 @@
       "dev": true,
       "requires": {
         "punycode": "^1.3.2"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
       }
     },
     "fastparse": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
-      "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
+      "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
       "dev": true
     },
     "fd-slicer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
-      "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
       "dev": true,
       "requires": {
         "pend": "~1.2.0"
@@ -3938,6 +3881,13 @@
         "object-assign": "^4.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==",
+      "dev": true,
+      "optional": true
+    },
     "filename-regex": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
@@ -3966,18 +3916,34 @@
       }
     },
     "fill-range": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
-      "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
       "dev": true,
       "requires": {
-        "is-number": "^2.1.0",
-        "isobject": "^2.0.0",
-        "randomatic": "^3.0.0",
-        "repeat-element": "^1.1.2",
-        "repeat-string": "^1.5.2"
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
       }
     },
+    "filter-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
+      "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=",
+      "dev": true
+    },
     "find-cache-dir": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
@@ -4006,36 +3972,21 @@
       }
     },
     "flat-cache": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
-      "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
+      "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
       "dev": true,
       "requires": {
         "circular-json": "^0.3.1",
-        "del": "^2.0.2",
         "graceful-fs": "^4.1.2",
+        "rimraf": "~2.6.2",
         "write": "^0.2.1"
       },
       "dependencies": {
-        "del": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
-          "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
-          "dev": true,
-          "requires": {
-            "globby": "^5.0.0",
-            "is-path-cwd": "^1.0.0",
-            "is-path-in-cwd": "^1.0.0",
-            "object-assign": "^4.0.1",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0",
-            "rimraf": "^2.2.8"
-          }
-        },
         "glob": {
-          "version": "7.1.2",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+          "version": "7.1.7",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
@@ -4046,32 +3997,21 @@
             "path-is-absolute": "^1.0.0"
           }
         },
-        "globby": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
-          "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+        "rimraf": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
           "dev": true,
           "requires": {
-            "array-union": "^1.0.1",
-            "arrify": "^1.0.0",
-            "glob": "^7.0.3",
-            "object-assign": "^4.0.1",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
+            "glob": "^7.1.3"
           }
-        },
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
         }
       }
     },
     "flatten": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
-      "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz",
+      "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==",
       "dev": true
     },
     "follow-redirects": {
@@ -4105,12 +4045,12 @@
       "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
     },
     "form-data": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
-      "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
       "requires": {
         "asynckit": "^0.4.0",
-        "combined-stream": "1.0.6",
+        "combined-stream": "^1.0.6",
         "mime-types": "^2.1.12"
       }
     },
@@ -4155,617 +4095,14 @@
       "dev": true
     },
     "fsevents": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
-      "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+      "version": "1.2.13",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
       "dev": true,
       "optional": true,
       "requires": {
-        "nan": "^2.9.2",
-        "node-pre-gyp": "^0.10.0"
-      },
-      "dependencies": {
-        "abbrev": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-          "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-          "dev": true,
-          "optional": true
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-          "dev": true,
-          "optional": true
-        },
-        "aproba": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-          "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-          "dev": true,
-          "optional": true
-        },
-        "are-we-there-yet": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
-          "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "delegates": "^1.0.0",
-            "readable-stream": "^2.0.6"
-          }
-        },
-        "balanced-match": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-          "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-          "dev": true,
-          "optional": true
-        },
-        "brace-expansion": {
-          "version": "1.1.11",
-          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "balanced-match": "^1.0.0",
-            "concat-map": "0.0.1"
-          }
-        },
-        "chownr": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
-          "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
-          "dev": true,
-          "optional": true
-        },
-        "code-point-at": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-          "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-          "dev": true,
-          "optional": true
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-          "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-          "dev": true,
-          "optional": true
-        },
-        "console-control-strings": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-          "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-          "dev": true,
-          "optional": 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=",
-          "dev": true,
-          "optional": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "deep-extend": {
-          "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
-          "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
-          "dev": true,
-          "optional": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-          "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-          "dev": true,
-          "optional": true
-        },
-        "detect-libc": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
-          "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
-          "dev": true,
-          "optional": true
-        },
-        "fs-minipass": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
-          "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-          "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-          "dev": true,
-          "optional": true
-        },
-        "gauge": {
-          "version": "2.7.4",
-          "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-          "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "aproba": "^1.0.3",
-            "console-control-strings": "^1.0.0",
-            "has-unicode": "^2.0.0",
-            "object-assign": "^4.1.0",
-            "signal-exit": "^3.0.0",
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wide-align": "^1.1.0"
-          }
-        },
-        "glob": {
-          "version": "7.1.2",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "has-unicode": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-          "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-          "dev": true,
-          "optional": true
-        },
-        "iconv-lite": {
-          "version": "0.4.21",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz",
-          "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safer-buffer": "^2.1.0"
-          }
-        },
-        "ignore-walk": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
-          "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minimatch": "^3.0.4"
-          }
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-          "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "once": "^1.3.0",
-            "wrappy": "1"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-          "dev": true,
-          "optional": true
-        },
-        "ini": {
-          "version": "1.3.5",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-          "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
-          "dev": true,
-          "optional": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-          "dev": true,
-          "optional": true
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "minimist": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-          "dev": true,
-          "optional": true
-        },
-        "minipass": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz",
-          "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "^5.1.1",
-            "yallist": "^3.0.0"
-          }
-        },
-        "minizlib": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz",
-          "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-          "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true,
-          "optional": true
-        },
-        "needle": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz",
-          "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "debug": "^2.1.2",
-            "iconv-lite": "^0.4.4",
-            "sax": "^1.2.4"
-          }
-        },
-        "node-pre-gyp": {
-          "version": "0.10.0",
-          "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz",
-          "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "detect-libc": "^1.0.2",
-            "mkdirp": "^0.5.1",
-            "needle": "^2.2.0",
-            "nopt": "^4.0.1",
-            "npm-packlist": "^1.1.6",
-            "npmlog": "^4.0.2",
-            "rc": "^1.1.7",
-            "rimraf": "^2.6.1",
-            "semver": "^5.3.0",
-            "tar": "^4"
-          }
-        },
-        "nopt": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
-          "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "abbrev": "1",
-            "osenv": "^0.1.4"
-          }
-        },
-        "npm-bundled": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz",
-          "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
-          "dev": true,
-          "optional": true
-        },
-        "npm-packlist": {
-          "version": "1.1.10",
-          "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz",
-          "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ignore-walk": "^3.0.1",
-            "npm-bundled": "^1.0.1"
-          }
-        },
-        "npmlog": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-          "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "are-we-there-yet": "~1.1.2",
-            "console-control-strings": "~1.1.0",
-            "gauge": "~2.7.3",
-            "set-blocking": "~2.0.0"
-          }
-        },
-        "number-is-nan": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-          "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-          "dev": true,
-          "optional": true
-        },
-        "object-assign": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-          "dev": true,
-          "optional": true
-        },
-        "once": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "wrappy": "1"
-          }
-        },
-        "os-homedir": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-          "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
-          "dev": true,
-          "optional": true
-        },
-        "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=",
-          "dev": true,
-          "optional": true
-        },
-        "osenv": {
-          "version": "0.1.5",
-          "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
-          "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "os-homedir": "^1.0.0",
-            "os-tmpdir": "^1.0.0"
-          }
-        },
-        "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=",
-          "dev": true,
-          "optional": true
-        },
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-          "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
-          "dev": true,
-          "optional": true
-        },
-        "rc": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
-          "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "deep-extend": "^0.5.1",
-            "ini": "~1.3.0",
-            "minimist": "^1.2.0",
-            "strip-json-comments": "~2.0.1"
-          },
-          "dependencies": {
-            "minimist": {
-              "version": "1.2.0",
-              "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-              "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.3",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~2.0.0",
-            "safe-buffer": "~5.1.1",
-            "string_decoder": "~1.1.1",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "rimraf": {
-          "version": "2.6.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
-          "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "glob": "^7.0.5"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-          "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
-          "dev": true,
-          "optional": true
-        },
-        "safer-buffer": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-          "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-          "dev": true,
-          "optional": true
-        },
-        "sax": {
-          "version": "1.2.4",
-          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-          "dev": true,
-          "optional": true
-        },
-        "semver": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
-          "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
-          "dev": true,
-          "optional": true
-        },
-        "set-blocking": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-          "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-          "dev": true,
-          "optional": true
-        },
-        "signal-exit": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-          "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
-          "dev": true,
-          "optional": true
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "strip-json-comments": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-          "dev": true,
-          "optional": true
-        },
-        "tar": {
-          "version": "4.4.1",
-          "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz",
-          "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chownr": "^1.0.1",
-            "fs-minipass": "^1.2.5",
-            "minipass": "^2.2.4",
-            "minizlib": "^1.1.0",
-            "mkdirp": "^0.5.0",
-            "safe-buffer": "^5.1.1",
-            "yallist": "^3.0.2"
-          }
-        },
-        "util-deprecate": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-          "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-          "dev": true,
-          "optional": true
-        },
-        "wide-align": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
-          "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "string-width": "^1.0.2"
-          }
-        },
-        "wrappy": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-          "dev": true,
-          "optional": true
-        },
-        "yallist": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
-          "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
-          "dev": true,
-          "optional": true
-        }
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1"
       }
     },
     "function-bind": {
@@ -4780,21 +4117,6 @@
       "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
       "dev": true
     },
-    "generate-function": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
-      "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
-      "dev": true
-    },
-    "generate-object-property": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
-      "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
-      "dev": true,
-      "requires": {
-        "is-property": "^1.0.0"
-      }
-    },
     "get-assigned-identifiers": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
@@ -4868,6 +4190,35 @@
         "https-proxy-agent": "^1.0.0",
         "mime": "^1.2.11",
         "netrc": "^0.1.4"
+      },
+      "dependencies": {
+        "agent-base": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
+          "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
+          "dev": true,
+          "requires": {
+            "extend": "~3.0.0",
+            "semver": "~5.0.1"
+          }
+        },
+        "https-proxy-agent": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
+          "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
+          "dev": true,
+          "requires": {
+            "agent-base": "2",
+            "debug": "2",
+            "extend": "3"
+          }
+        },
+        "semver": {
+          "version": "5.0.3",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
+          "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
+          "dev": true
+        }
       }
     },
     "gitlab": {
@@ -4897,12 +4248,13 @@
           }
         },
         "query-string": {
-          "version": "6.8.3",
-          "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.8.3.tgz",
-          "integrity": "sha512-llcxWccnyaWlODe7A9hRjkvdCKamEKTh+wH8ITdTc3OhchaqUZteiSCX/2ablWHVrkVIe04dntnaZJ7BdyW0lQ==",
+          "version": "6.14.1",
+          "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
+          "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
           "dev": true,
           "requires": {
             "decode-uri-component": "^0.2.0",
+            "filter-obj": "^1.1.0",
             "split-on-first": "^1.0.0",
             "strict-uri-encode": "^2.0.0"
           }
@@ -4995,9 +4347,9 @@
       },
       "dependencies": {
         "glob": {
-          "version": "7.1.2",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+          "version": "7.1.7",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
@@ -5017,9 +4369,9 @@
       }
     },
     "graceful-fs": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
-      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+      "version": "4.2.6",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
+      "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
       "dev": true
     },
     "graceful-readlink": {
@@ -5055,19 +4407,6 @@
             "lodash": "^4.17.14"
           }
         },
-        "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==",
-          "dev": true,
-          "optional": true
-        },
-        "lodash": {
-          "version": "4.17.15",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
-          "dev": true
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -5075,15 +4414,11 @@
           "dev": true
         },
         "uglify-js": {
-          "version": "3.6.5",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.5.tgz",
-          "integrity": "sha512-7L3W+Npia1OCr5Blp4/Vw83tK1mu5gnoIURtT1fUVfQ3Kf8WStWV6NJz0fdoBJZls0KlweruRTLVe6XLafmy5g==",
+          "version": "3.13.6",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
+          "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
           "dev": true,
-          "optional": true,
-          "requires": {
-            "commander": "~2.20.3",
-            "source-map": "~0.6.1"
-          }
+          "optional": true
         }
       }
     },
@@ -5093,11 +4428,11 @@
       "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
     },
     "har-validator": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
-      "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+      "version": "5.1.5",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
       "requires": {
-        "ajv": "^5.1.0",
+        "ajv": "^6.12.3",
         "har-schema": "^2.0.0"
       }
     },
@@ -5134,14 +4469,6 @@
         "get-value": "^2.0.6",
         "has-values": "^1.0.0",
         "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "isobject": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-          "dev": true
-        }
       }
     },
     "has-values": {
@@ -5154,26 +4481,6 @@
         "kind-of": "^4.0.0"
       },
       "dependencies": {
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
         "kind-of": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
@@ -5208,15 +4515,15 @@
       "dev": true
     },
     "hawk": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz",
-      "integrity": "sha1-HnMc45RH+h0PbXB/e87r7A/R7B8=",
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
+      "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
       "dev": true,
       "requires": {
-        "boom": "2.x.x",
-        "cryptiles": "2.x.x",
-        "hoek": "2.x.x",
-        "sntp": "1.x.x"
+        "boom": "4.x.x",
+        "cryptiles": "3.x.x",
+        "hoek": "4.x.x",
+        "sntp": "2.x.x"
       }
     },
     "he": {
@@ -5226,9 +4533,9 @@
       "dev": true
     },
     "hoek": {
-      "version": "2.16.3",
-      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
+      "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
       "dev": true
     },
     "home-or-tmp": {
@@ -5251,9 +4558,9 @@
       }
     },
     "html-comment-regex": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
-      "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
+      "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
       "dev": true
     },
     "htmlescape": {
@@ -5263,33 +4570,21 @@
       "dev": true
     },
     "http-proxy": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
-      "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+      "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
       "dev": true,
       "requires": {
-        "eventemitter3": "^3.0.0",
+        "eventemitter3": "^4.0.0",
         "follow-redirects": "^1.0.0",
         "requires-port": "^1.0.0"
       },
       "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
         "follow-redirects": {
-          "version": "1.5.1",
-          "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz",
-          "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==",
-          "dev": true,
-          "requires": {
-            "debug": "^3.1.0"
-          }
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
+          "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==",
+          "dev": true
         }
       }
     },
@@ -5303,15 +4598,6 @@
         "debug": "3.1.0"
       },
       "dependencies": {
-        "agent-base": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
-          "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
-          "dev": true,
-          "requires": {
-            "es6-promisify": "^5.0.0"
-          }
-        },
         "debug": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@@ -5364,14 +4650,30 @@
       "dev": true
     },
     "https-proxy-agent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
-      "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
+      "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
       "dev": true,
       "requires": {
-        "agent-base": "2",
-        "debug": "2",
-        "extend": "3"
+        "agent-base": "^4.3.0",
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+          "dev": true
+        }
       }
     },
     "humps": {
@@ -5387,9 +4689,9 @@
       "dev": true
     },
     "iconv-lite": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
-      "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
       "requires": {
         "safer-buffer": ">= 2.1.2 < 3"
       }
@@ -5401,9 +4703,9 @@
       "dev": true
     },
     "ieee754": {
-      "version": "1.1.12",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
-      "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
       "dev": true
     },
     "ignore": {
@@ -5441,14 +4743,14 @@
       }
     },
     "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
       "dev": true
     },
     "inline-source-map": {
@@ -5514,12 +4816,6 @@
           "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
           "dev": true
         },
-        "rx-lite": {
-          "version": "4.0.8",
-          "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
-          "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
-          "dev": true
-        },
         "strip-ansi": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
@@ -5541,9 +4837,9 @@
       }
     },
     "insert-module-globals": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz",
-      "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==",
+      "version": "7.2.1",
+      "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz",
+      "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==",
       "dev": true,
       "requires": {
         "JSONStream": "^1.0.3",
@@ -5559,9 +4855,9 @@
       }
     },
     "interpret": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
-      "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
       "dev": true
     },
     "invariant": {
@@ -5573,6 +4869,12 @@
         "loose-envify": "^1.0.0"
       }
     },
+    "ip-regex": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
+      "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==",
+      "dev": true
+    },
     "ipv4": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/ipv4/-/ipv4-1.0.4.tgz",
@@ -5603,6 +4905,17 @@
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
       }
     },
     "is-arrayish": {
@@ -5626,6 +4939,24 @@
       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
       "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==",
+      "dev": true,
+      "requires": {
+        "ci-info": "^2.0.0"
+      }
+    },
+    "is-core-module": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
+      "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
+      "dev": true,
+      "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",
@@ -5633,6 +4964,17 @@
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
       }
     },
     "is-descriptor": {
@@ -5688,13 +5030,10 @@
       "dev": true
     },
     "is-finite": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
-      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
-      "requires": {
-        "number-is-nan": "^1.0.0"
-      }
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+      "dev": true
     },
     "is-fullwidth-code-point": {
       "version": "2.0.0",
@@ -5717,32 +5056,24 @@
       "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
       "dev": true
     },
-    "is-my-ip-valid": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
-      "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
-      "dev": true
-    },
-    "is-my-json-valid": {
-      "version": "2.17.2",
-      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
-      "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
-      "dev": true,
-      "requires": {
-        "generate-function": "^2.0.0",
-        "generate-object-property": "^1.1.0",
-        "is-my-ip-valid": "^1.0.0",
-        "jsonpointer": "^4.0.0",
-        "xtend": "^4.0.0"
-      }
-    },
     "is-number": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
-      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
       }
     },
     "is-path-cwd": {
@@ -5776,21 +5107,10 @@
       "dev": true
     },
     "is-plain-object": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
-      "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
-      "dev": true,
-      "requires": {
-        "isobject": "^4.0.0"
-      },
-      "dependencies": {
-        "isobject": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
-          "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==",
-          "dev": true
-        }
-      }
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+      "dev": true
     },
     "is-posix-bracket": {
       "version": "0.1.1",
@@ -5804,18 +5124,6 @@
       "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
       "dev": true
     },
-    "is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
-      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
-      "dev": true
-    },
-    "is-property": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
-      "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
-      "dev": true
-    },
     "is-resolvable": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
@@ -5842,6 +5150,12 @@
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
       "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
     },
+    "is-url": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+      "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+      "dev": true
+    },
     "is-windows": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -5854,6 +5168,17 @@
       "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
       "dev": true
     },
+    "is2": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.7.tgz",
+      "integrity": "sha512-4vBQoURAXC6hnLFxD4VW7uc04XiwTTl/8ydYJxKvPwkWQrSjInkuM5VZVg6BGr1/natq69zDuvO9lGpLClJqvA==",
+      "dev": true,
+      "requires": {
+        "deep-is": "^0.1.3",
+        "ip-regex": "^4.1.0",
+        "is-url": "^1.2.4"
+      }
+    },
     "isarray": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -5866,21 +5191,10 @@
       "dev": true
     },
     "isobject": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-      "dev": true,
-      "requires": {
-        "isarray": "1.0.0"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-          "dev": true
-        }
-      }
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true
     },
     "isomorphic-fetch": {
       "version": "2.2.1",
@@ -5890,6 +5204,18 @@
       "requires": {
         "node-fetch": "^1.0.1",
         "whatwg-fetch": ">=0.10.0"
+      },
+      "dependencies": {
+        "node-fetch": {
+          "version": "1.7.3",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+          "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+          "dev": true,
+          "requires": {
+            "encoding": "^0.1.11",
+            "is-stream": "^1.0.1"
+          }
+        }
       }
     },
     "isstream": {
@@ -5922,21 +5248,53 @@
       }
     },
     "js-base64": {
-      "version": "2.4.8",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz",
-      "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q==",
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
       "dev": true
     },
     "js-beautify": {
-      "version": "1.7.5",
-      "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.5.tgz",
-      "integrity": "sha512-9OhfAqGOrD7hoQBLJMTA+BKuKmoEtTJXzZ7WDF/9gvjtey1koVLuZqIY6c51aPDjbNdNtIXAkiWKVhziawE9Og==",
+      "version": "1.13.13",
+      "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.13.tgz",
+      "integrity": "sha512-oH+nc0U5mOAqX8M5JO1J0Pw/7Q35sAdOsM5W3i87pir9Ntx6P/5Gx1xLNoK+MGyvHk4rqqRCE4Oq58H6xl2W7A==",
       "dev": true,
       "requires": {
-        "config-chain": "~1.1.5",
-        "editorconfig": "^0.13.2",
-        "mkdirp": "~0.5.0",
-        "nopt": "~3.0.1"
+        "config-chain": "^1.1.12",
+        "editorconfig": "^0.15.3",
+        "glob": "^7.1.3",
+        "mkdirp": "^1.0.4",
+        "nopt": "^5.0.0"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "7.1.7",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "nopt": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+          "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+          "dev": true,
+          "requires": {
+            "abbrev": "1"
+          }
+        }
       }
     },
     "js-tokens": {
@@ -5946,9 +5304,9 @@
       "dev": true
     },
     "js-yaml": {
-      "version": "3.12.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
-      "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
       "dev": true,
       "requires": {
         "argparse": "^1.0.7",
@@ -5966,8 +5324,7 @@
     "jsbn": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "optional": true
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
     },
     "jsesc": {
       "version": "1.3.0",
@@ -5987,9 +5344,18 @@
       "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
     },
     "json-schema-traverse": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
-      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-tra