diff --git a/Makefile b/Makefile index ef131a9..f2b4925 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all install build start stop server devserver client devclient updater major minor patch clean +.PHONY: all install install_client install_server build start stop server devserver client devclient updater major minor patch clean ENV = production SERVICE = null @@ -6,18 +6,24 @@ SERVICE = null all: install build start install: -ifeq ($(SERVICE), bootstrapper) - npm run install:bootstrapper +ifeq ($(SERVICE), client) + make install_client +else ifeq ($(SERVICE), server) + make install_server else - npm run install:server + make install_client + make install_server endif +install_client: + cd raspbot/web && npm install + +install_server: + cd raspbot && npm install + cd raspbot && npm run setup + build: -ifeq ($(SERVICE), bootstrapper) - npm run build:bootstrapper -else - npm run build -endif + cd raspbot && npm run build start: pm2 start process.json --only Raspbot --watch @@ -28,17 +34,11 @@ restart: stop: pm2 stop process.json --only Raspbot --watch 0 -start_bootstrapper: - pm2 start process.json --only Bootstrapper --watch - -stop_bootstrapper: - pm2 stop process.json --only Bootstrapper --watch 0 - server: ifeq ($(ENV), dev) - NODE_ENV=development npm run server + cd raspbot && NODE_ENV=development npm run dev else - NODE_ENV=production npm run server + cd raspbot && NODE_ENV=production npm run dev endif devserver: @@ -46,9 +46,9 @@ devserver: client: ifeq ($(ENV), dev) - npm run client + cd raspbot && npm run dev:client else - npm run build + cd raspbot && npm run build endif devclient: @@ -58,27 +58,27 @@ update: git pull major: -ifeq ($(SERVICE), $(filter $(SERVICE),raspbot bootstrapper)) - npm run major -- --file=$(SERVICE)/package.json +ifeq ($(SERVICE), $(filter $(SERVICE),raspbot)) + node .scripts/increment-version.js --version=major --skip-build --reset-minor --reset-patch --file=$(SERVICE)/package.json else @echo "ERROR:\tCould not increment major version." - @echo "USAGE:\tmake SERVICE=[raspbot|bootstrapper] major" + @echo "USAGE:\tmake SERVICE=[raspbot] major" endif minor: -ifeq ($(SERVICE), $(filter $(SERVICE),raspbot bootstrapper)) - npm run minor -- --file=$(SERVICE)/package.json +ifeq ($(SERVICE), $(filter $(SERVICE),raspbot)) + node .scripts/increment-version.js --version=minor --skip-build --reset-patch --file=$(SERVICE)/package.json else @echo "ERROR:\tCould not increment minor version." - @echo "USAGE:\tmake SERVICE=[raspbot|bootstrapper] minor" + @echo "USAGE:\tmake SERVICE=[raspbot] minor" endif patch: -ifeq ($(SERVICE), $(filter $(SERVICE),raspbot bootstrapper)) - npm run patch -- --file=$(SERVICE)/package.json +ifeq ($(SERVICE), $(filter $(SERVICE),raspbot)) + node .scripts/increment-version.js --version=patch --skip-build --file=$(SERVICE)/package.json else @echo "ERROR:\tCould not increment patch version." - @echo "USAGE:\tmake SERVICE=[raspbot|bootstrapper] patch" + @echo "USAGE:\tmake SERVICE=[raspbot] patch" endif clean: diff --git a/README.md b/README.md index b556c51..025fb3b 100644 --- a/README.md +++ b/README.md @@ -10,22 +10,22 @@ -``Raspbot`` is a lightweight REST API server,esigned for the **Raspberry Pi**, as well as a client web application that let's you control your device with ease. +Raspbot is a lightweight REST API server, designed for the **Raspberry Pi**, as well as a client web application that let's you control your device with ease. Built with NodeJS & Express 4 and Vue 2 & Webpack. -**``Raspbot`` is still a work in progress**. +**Raspbot is still a work in progress**. **Features:** -- [ ] Reboot and shutdown -- [x] Browse file system -- [x] Download files -- [ ] Upload files -- [x] Delete files -- [x] Create folders -- [x] Check temperature, CPU, memory and disk usage. -- [x] Interface to update Raspbot remotely +- [x] 📂 Browse file system +- [x] ⬇️ Download files +- [ ] ⬆️ Upload files +- [x] 🗑️ Delete files +- [x] 📁 Create folders +- [x] 🔌 Reboot & shutdown system +- [x] 🌡️ Check temperature, CPU, memory and disk usage. +- [x] 🎛️ Update, restart & stop Raspbot remotely ## Table of Contents @@ -48,7 +48,7 @@ Built with NodeJS & Express 4 and Vue 2 & Webpack. * NodeJS (__recommended version 10.4.1+__) * Python (__developed for version 2.7.10__) * psutil library (__developed using version 5.4.3__) -* PM2 (__required to use the Bootstrapper app__) +* PM2 (__required to update, restart or stop Raspbot remotely__) ## Installation @@ -135,7 +135,7 @@ For more information on how to use PM2, check out **[the official documentation] ## Usage -By default, ``Raspbot`` runs on port 5000 and can be accessed by ``http://ip-to-your-pi:5000``. +By default, Raspbot runs on port 5000 and can be accessed by ``http://ip-to-your-pi:5000``. The default username is ``admin`` with the password ``secret``. Be sure to change this. ## Configurations @@ -187,4 +187,4 @@ Restart the server. ## Author -Raspbot was created by **Ardalan Samimi**. +Raspbot was created by [**Ardalan Samimi**](https://github.com/pkrll). The robot icon was created by [FontAwesome](https://fontawesome.com/license) and is licensed under the [CC by 4.0 license](https://creativecommons.org/licenses/by/4.0/). diff --git a/bootstrapper/.gitignore b/bootstrapper/.gitignore deleted file mode 100644 index 238f298..0000000 --- a/bootstrapper/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -logs/ diff --git a/bootstrapper/Makefile b/bootstrapper/Makefile deleted file mode 100644 index 5b084c1..0000000 --- a/bootstrapper/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -.PHONY: build - -build: - npm run build - -install: - npm install - cd web && npm install - -run: - npm run start:server - -clean: - rm -rf dist/* - rm -f logs/info.log diff --git a/bootstrapper/app.js b/bootstrapper/app.js deleted file mode 100644 index 86b8c9b..0000000 --- a/bootstrapper/app.js +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env node -'use strict'; - -const express = require('express'); -const app = express(); -const server = require('http').Server(app); -const winston = require('winston'); - -require('./helpers/config.js')(app); -require('./helpers/socket.js')(server); -require('./app/router')(app); - -server.listen(app.get('port'), () => winston.loggers.get('logger').info('Server started. Listening on port ' + app.get('port'))); diff --git a/bootstrapper/app/controllers/.gitkeep b/bootstrapper/app/controllers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrapper/app/controllers/RaspyController.js b/bootstrapper/app/controllers/RaspyController.js deleted file mode 100644 index 391353e..0000000 --- a/bootstrapper/app/controllers/RaspyController.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict' -const Raspy = require('../models/Raspy.js'); - -exports.update = (callback) => { - Raspy.update(callback); -} - -exports.install = (callback) => { - Raspy.install(callback); -} - -exports.restart = (callback) => { - Raspy.restart(callback); -} - -exports.stop = (callback) => { - Raspy.stop(callback); -} - -exports.shutdown = (callback) => { - Raspy.shutdown(callback); -} diff --git a/bootstrapper/app/controllers/SystemController.js b/bootstrapper/app/controllers/SystemController.js deleted file mode 100644 index e0d5fc7..0000000 --- a/bootstrapper/app/controllers/SystemController.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict' -const System = require('../models/System.js'); - -exports.isNodeAppRunning = (appName, callback) => { - System.isNodeAppRunning(appName).then(response => { - callback(response); - }).catch(error => { - callback(error); - }); -} - -exports.getLogHistory = (options, callback) => { - System.getLogHistory(options).then(response => { - callback(response); - }).catch(error => { - callback(error); - }); -} diff --git a/bootstrapper/app/models/.gitkeep b/bootstrapper/app/models/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/bootstrapper/app/models/Raspy.js b/bootstrapper/app/models/Raspy.js deleted file mode 100644 index 177a803..0000000 --- a/bootstrapper/app/models/Raspy.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -exports.update = callback => execute('cd ../ && make update', callback); -exports.install = callback => execute('cd ../ && make install', callback); -exports.restart = callback => execute('cd ../ && make restart', callback); -exports.stop = callback => execute('cd ../ && make stop', callback); -exports.shutdown = callback => execute('cd ../ && make shutdown', callback); - -function execute(process, callback) { - const spawn = require('child_process').spawn; - const command = spawn(process, { shell: true }); - - let history = ''; - - command.stdout.on('data', function (data) { - history += data.toString(); - callback({ - status: 1, - result: data.toString() - }); - }); - - command.stderr.on('data', function (data) { - history += data.toString(); - callback({ - status: 0, - error: { message: data.toString() } - }); - }); - - command.on('exit', function (code) { - const winston = require('winston').loggers.get('command-logger'); - winston.log('info', history); - callback({ status: -1 }); - }); - -} diff --git a/bootstrapper/app/models/System.js b/bootstrapper/app/models/System.js deleted file mode 100644 index c699ef2..0000000 --- a/bootstrapper/app/models/System.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict' - -exports.isNodeAppRunning = appName => { - const psNode = require('ps-node'); - - return new Promise( (resolve, reject) => { - psNode.lookup({ - command: 'node', - arguments: appName - }, function(error, result) { - if (error) { - reject({status: 0, error: error}); - } else { - let isRunning = (result.length > 0); - resolve({status: 1, running: isRunning, arguments: process.arguments, pid: process.pid}); - } - }) - }); -}; - -exports.getLogHistory = options => { - const winston = require('winston').loggers.get('command-logger'); - - return new Promise( (resolve, reject) => { - winston.query(options, (error, results) => { - if (error) { - reject({status: 0, error: error}); - } else { - let result = (results.file) ? results.file.reverse() : []; - resolve({status: 1, result: result}); - } - }); - }); -} diff --git a/bootstrapper/app/router/index.js b/bootstrapper/app/router/index.js deleted file mode 100644 index 2f1a285..0000000 --- a/bootstrapper/app/router/index.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict' -const express = require('express'); -const router = express.Router(); -const path = require('path'); - -module.exports = function (app) { - - app.use(express.static(app.get('dist'))); - - app.get('*', function(req, res) { - let file = path.join(app.get('dist'), '/index.html'); - res.sendFile(file); - }); - -} diff --git a/bootstrapper/app/router/socket.js b/bootstrapper/app/router/socket.js deleted file mode 100644 index b18bf1f..0000000 --- a/bootstrapper/app/router/socket.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict' -const winston = require('winston').loggers.get('command-logger'); -const System = require('../controllers/SystemController.js'); -const Raspy = require('../controllers/RaspyController.js'); - -module.exports = socket => { - - socket.on('client:status', () => { - System.isNodeAppRunning('server.js', response => { - socket.emit('status', response); - }); - }); - - socket.on('client:perform', request => { - winston.log('info', '$ ' + request.command); - - switch (request.command) { - case 'update': - Raspy.update(message => socket.emit('command', message)); - break; - case 'install': - Raspy.install(message => socket.emit('command', message)); - break; - case 'restart': - Raspy.restart(message => socket.emit('command', message)); - break; - case 'stop': - Raspy.stop(message => socket.emit('command', message)); - break; - case 'shutdown': - Raspy.shutdown(message => socket.emit('command', message)); - break; - default: - socket.emit('command', { - status: 0, - error: { message: 'Unrecognized command ' + request.command } - }); - break; - } - }); - - socket.on('client:history', () => { - const options = { - from: new Date - 24 * 60 * 60 * 1000 * 7, - until: new Date, - limit: 20, - start: 0, - order: 'desc', - fields: ['message', 'level'] - }; - - System.getLogHistory(options, response => socket.emit('history', response)); - }); - -}; diff --git a/bootstrapper/config/index.js b/bootstrapper/config/index.js deleted file mode 100644 index 6b59e95..0000000 --- a/bootstrapper/config/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict' - -module.exports = { - logPath: 'logs', - dev: { - port: 5001, - databasePath: 'db.json', - }, - prod: { - port: 5001, - databasePath: 'db.json', - } -} diff --git a/bootstrapper/dist/index.html b/bootstrapper/dist/index.html deleted file mode 100644 index dd99cb7..0000000 --- a/bootstrapper/dist/index.html +++ /dev/null @@ -1 +0,0 @@ -Raspy Bootstrapper
\ No newline at end of file diff --git a/bootstrapper/dist/static/css/app.88b59040e51e8f164a64e02217927e89.css b/bootstrapper/dist/static/css/app.88b59040e51e8f164a64e02217927e89.css deleted file mode 100644 index 73f43f8..0000000 --- a/bootstrapper/dist/static/css/app.88b59040e51e8f164a64e02217927e89.css +++ /dev/null @@ -1,2 +0,0 @@ -body,html{margin:0;padding:0}body{background:#2c3e50}#app{color:#fff;font-family:Avenir,Helvetica,Arial,sans-serif;text-align:center;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.slide-leave-active[data-v-7542002e]{transition:opacity .75s}.slide-leave-to[data-v-7542002e]{opacity:0}.title[data-v-7542002e]{top:20%;position:absolute;font-size:8vw}.slide-up-enter-active[data-v-7542002e],.slide-up-leave-active[data-v-7542002e]{transition:1s ease-in-out;opacity:1}.slide-up-enter[data-v-7542002e],.slide-up-leave-to[data-v-7542002e]{transform:translateY(100%);opacity:0}#wrapper[data-v-7542002e]{width:100%;background:#2d3139;display:flex;height:100%;min-height:100vh;flex-direction:column;align-items:center;justify-content:center}@media only screen and (min-device-width:320px) and (max-device-width:424px) and (orientation:portrait){.title[data-v-7542002e]{font-size:10vw}}@media only screen and (min-device-width:520px) and (max-device-width:1023px) and (orientation:portrait){.title[data-v-7542002e]{font-size:10vw}.title-login[data-v-7542002e]{transition:1s;top:10%}.title-empty[data-v-7542002e]{transition:1s;position:inherit}}@media only screen and (min-device-width:1024px) and (max-device-width:2048px) and (orientation:portrait){.title[data-v-7542002e]{font-size:10vw}.title-login[data-v-7542002e]{transition:1s;top:10%}.title-empty[data-v-7542002e]{transition:1s;position:inherit}}@media only screen and (min-device-width:320px) and (max-device-width:812px) and (orientation:landscape){.title[data-v-7542002e]{position:inherit;font-size:10vw}.title-login[data-v-7542002e]{transition:1s;opacity:0}.title-empty[data-v-7542002e]{transition:1s;opacity:1}}@media only screen and (min-device-width:813px) and (max-device-width:1365px) and (orientation:landscape){.title[data-v-7542002e]{position:inherit;font-size:10vw}.title-login[data-v-7542002e]{position:absolute;font-size:3.5vw;transition:1s;top:5%}.title-empty[data-v-7542002e]{transition:1s;position:inherit}}@media only screen and (min-device-width:1366px) and (max-device-width:2560px) and (min-device-height:600px) and (orientation:landscape){.title[data-v-7542002e]{position:inherit;font-size:10vw}.title-login[data-v-7542002e]{position:absolute;font-size:5vw;transition:1s;top:10%}.title-empty[data-v-7542002e]{transition:1s;position:inherit}}.animation[data-v-7dfe688f]{font-size:6vw;animation:flicker-data-v-7dfe688f 2s ease-in-out infinite}@keyframes flicker-data-v-7dfe688f{0%{opacity:1}50%{opacity:0}to{opacity:1}}@media only screen and (min-width:1024px){.animation[data-v-7dfe688f]{font-size:3vw}}#loginBox[data-v-9595acea]{position:absolute}#loginBox>div[data-v-9595acea]{padding-top:5%}div.input>div[data-v-9595acea]{padding:5px}.title[data-v-9595acea]{font-size:8vw}input[data-v-9595acea]{border:1px solid #fff;border-radius:5px;display:block;font-family:Avenir;font-size:5vw;padding:10px 20px;-webkit-appearance:none}input[data-v-9595acea]:focus{outline:none}.button[data-v-9595acea]{background:#52ac78;border-radius:5px;cursor:pointer;font-size:4vw;padding:10px;text-align:center}.slide-enter-active[data-v-56e72c6a]{transition:opacity .2s}.slide-enter[data-v-56e72c6a]{opacity:0}.slide-menu-enter-active[data-v-56e72c6a],.slide-menu-leave-active[data-v-56e72c6a]{transition:.5s}.slide-console-enter-active[data-v-56e72c6a],.slide-console-leave-active[data-v-56e72c6a]{transition:0s}.slide-menu-enter[data-v-56e72c6a],.slide-menu-leave-to[data-v-56e72c6a]{transform:translateY(100%)}.slide-console-enter[data-v-56e72c6a],.slide-console-leave-to[data-v-56e72c6a]{transform:translate(0)}#container[data-v-56e72c6a]{align-items:stretch;display:flex;justify-content:center;min-height:100vh}.inactive[data-v-1c8e22cf]{color:grey}.container[data-v-1c8e22cf]{position:fixed;color:#2c3e50;font-family:Avenir,Helvetica,Arial,sans-serif;margin-top:0;height:100%;text-align:center;width:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;z-index:99}#updateMenu[data-v-1c8e22cf]{background:#2c3e50;color:#fff;display:flex;flex-direction:column;font-size:3vw;height:100%;transition:.5s;width:100%}#updateMenu>div[data-v-1c8e22cf]{align-items:center;display:flex;height:inherit;justify-content:center;border-bottom:1px solid #fff}#updateMenu div[data-v-1c8e22cf]:hover{cursor:pointer}#updateMenu div.grouped[data-v-1c8e22cf]{align-items:stretch}#updateMenu div.grouped>div[data-v-1c8e22cf]{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;width:100%}#updateMenu div.grouped>div[data-v-1c8e22cf]:first-child{border-right:1px solid #fff}#updateMenu>div[data-v-1c8e22cf]:last-child{border:none}@media only screen and (min-device-width:320px) and (max-device-width:736px) and (orientation:portrait){#updateMenu[data-v-1c8e22cf]{font-size:8vw}}@media only screen and (min-device-width:736px) and (max-device-width:1024px) and (orientation:portrait){#updateMenu[data-v-1c8e22cf]{font-size:8vw}}.running[data-v-1ff612e3]{color:green}.stopped[data-v-1ff612e3]{color:red}#console[data-v-1ff612e3]{background:#000;display:flex;flex-direction:column;text-align:left;color:#fff;font-size:2vw;width:100%;max-height:100vh;overflow:scroll}#output[data-v-1ff612e3]{padding:65px 10px 25px}#output pre[data-v-1ff612e3]{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}#footer[data-v-1ff612e3]{background:#2c3e50;bottom:0;position:absolute;width:100%}#footer div[data-v-1ff612e3]{padding:5px}#panel[data-v-1ff612e3]{position:absolute;padding:10px 0;background:#2c3e50;width:100%;display:flex;justify-content:space-between}#panel div[data-v-1ff612e3]{cursor:pointer;width:100%;align-items:center;justify-content:center;display:flex;text-align:center;font-size:2vw}@media only screen and (min-width:320px) and (max-width:736px) and (orientation:portrait){#console[data-v-1ff612e3],#panel div[data-v-1ff612e3]{font-size:6vw}}@media only screen and (min-width:320px) and (max-width:736px) and (orientation:landscape){#panel div[data-v-1ff612e3]{font-size:2.5vw}}@media only screen and (min-device-width:736px) and (max-device-width:1024px) and (orientation:portrait){#console[data-v-1ff612e3]{font-size:6vw}#panel div[data-v-1ff612e3]{font-size:4vw}}.animation[data-v-1ff612e3]{animation:flicker-data-v-1ff612e3 1s ease-in infinite}@keyframes flicker-data-v-1ff612e3{0%{opacity:1}50%{opacity:0}to{opacity:1}} -/*# sourceMappingURL=app.88b59040e51e8f164a64e02217927e89.css.map */ \ No newline at end of file diff --git a/bootstrapper/dist/static/css/app.88b59040e51e8f164a64e02217927e89.css.map b/bootstrapper/dist/static/css/app.88b59040e51e8f164a64e02217927e89.css.map deleted file mode 100644 index 703a07a..0000000 --- a/bootstrapper/dist/static/css/app.88b59040e51e8f164a64e02217927e89.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["app.88b59040e51e8f164a64e02217927e89.css"],"names":[],"mappings":"AACA,UACE,SAAU,AACV,SAAW,CACZ,AACD,KACE,kBAAoB,CACrB,AACD,KACE,WAA+B,AAC/B,8CAAiE,AACjE,kBAAiC,AACjC,kCAAoC,AACnC,kCAAqC,CACvC,AAED,qCACC,uBAA0B,CAC1B,AACD,iCACC,SAAW,CACX,AACD,wBACE,QAAS,AACT,kBAAmB,AACnB,aAAe,CAChB,AACD,gFAEC,0BAA2B,AAC1B,SAAW,CACZ,AAKD,qEACE,2BAA8B,AAC/B,SAAW,CACX,AACD,0BACE,WAAuB,AACvB,mBAAkC,AAClC,aAAuB,AACvB,YAAuB,AACvB,iBAAwB,AACxB,sBAAyB,AACzB,mBAAyB,AACzB,sBAAyB,CAC1B,AACD,wGAGA,wBAA0B,cAAgB,CACzC,CACA,AACD,yGAGA,wBAA0B,cAAgB,CACzC,AACD,8BACK,cAAe,AACf,OAAS,CACb,AACD,8BACK,cAAe,AACf,gBAAkB,CACtB,CACA,AACD,0GAGA,wBAA0B,cAAgB,CACzC,AACD,8BACK,cAAe,AACf,OAAS,CACb,AACD,8BACK,cAAe,AACf,gBAAkB,CACtB,CACA,AACD,yGAGA,wBACK,iBAAkB,AAClB,cAAgB,CACpB,AACD,8BACK,cAAe,AACf,SAAW,CACf,AACD,8BACK,cAAe,AACf,SAAW,CACf,CACA,AACD,0GAGA,wBACK,iBAAkB,AAClB,cAAgB,CACpB,AACD,8BACK,kBAAmB,AACnB,gBAAiB,AACjB,cAAe,AACf,MAAQ,CACZ,AACD,8BACK,cAAe,AACf,gBAAkB,CACtB,CACA,AACD,yIAIA,wBACK,iBAAkB,AAClB,cAAgB,CACpB,AACD,8BACK,kBAAmB,AACnB,cAAe,AACf,cAAe,AACf,OAAS,CACb,AACD,8BACK,cAAe,AACf,gBAAkB,CACtB,CACA,AAED,4BACE,cAAe,AAIN,yDAA2D,CACrE,AACD,mCACA,GAAO,SAAU,CAChB,AACD,IAAO,SAAU,CAChB,AACD,GAAO,SAAU,CAChB,CACA,AAyBD,0CACA,4BACG,aAAe,CACjB,CACA,AAGD,2BACE,iBAAmB,CACpB,AACD,+BACE,cAAgB,CACjB,AACD,+BACE,WAAa,CACd,AACD,wBACE,aAAe,CAChB,AACD,uBACC,sBAA6B,AAC7B,kBAAsB,AACtB,cAAqB,AACrB,mBAA0B,AAC1B,cAAoB,AACpB,kBAAmC,AACnC,uBAAyB,CACzB,AACD,6BACC,YAAc,CACd,AACD,yBACC,mBAAgC,AAChC,kBAAoB,AACpB,eAAoB,AACpB,cAAkB,AAClB,aAAiC,AACjC,iBAAqB,CACrB,AAED,qCACC,sBAAyB,CACzB,AACD,8BACC,SAAW,CACX,AACD,oFAEC,cAAiB,CACjB,AAID,0FACC,aAAe,CACf,AAID,yEACC,0BAA+B,CAC/B,AAID,+EACC,sBAA6B,CAC7B,AACD,4BACE,oBAA0B,AAC1B,aAAuB,AACvB,uBAAyB,AACzB,gBAAwB,CACzB,AAED,2BACE,UAAY,CACb,AACD,4BACE,eAAgC,AACjC,cAAyB,AACzB,8CAA2D,AAC3D,aAAqB,AACpB,YAA+B,AAChC,kBAA0B,AAC1B,WAAsB,AACtB,kCAAoC,AACpC,mCAAqC,AACrC,UAAY,CACZ,AACD,6BACC,mBAAsB,AACtB,WAAiB,AACjB,aAAkB,AAClB,sBAAuB,AACvB,cAAkB,AAClB,YAAiB,AACjB,eAAmB,AACnB,UAAiB,CACjB,AACD,iCACC,mBAAuB,AACvB,aAAmB,AACnB,eAAqB,AACrB,uBAAyB,AAGzB,4BAA8B,CAF9B,AAID,uCACC,cAAgB,CAChB,AACD,yCACC,mBAAwB,CACxB,AACD,6CACC,aAAkB,AAClB,OAAa,AACb,sBAAuB,AACvB,mBAAsB,AACtB,uBAAwB,AACxB,UAAiB,CACjB,AACD,yDACC,2BAA6B,CAC7B,AACD,4CACC,WAAa,CACb,AACD,wGAGA,6BACE,aAAe,CAChB,CACA,AACD,yGAGA,6BACE,aAAc,CACf,CACA,AAED,0BACE,WAAa,CACd,AACD,0BACE,SAAW,CACZ,AACD,0BACE,gBAAiB,AACjB,aAAc,AACd,sBAAuB,AACvB,gBAAiB,AACjB,WAAY,AACZ,cAAe,AACf,WAAY,AACZ,iBAAkB,AAClB,eAAiB,CAClB,AACD,yBACC,sBAA6B,CAC7B,AACD,6BACE,qBAAsB,AACtB,0BAA2B,AAC3B,sBAAuB,AACvB,wBAAyB,AACzB,oBAAsB,CACvB,AACD,yBACE,mBAAoB,AACpB,SAAU,AACV,kBAAmB,AACnB,UAAY,CACb,AACD,6BACE,WAAa,CACd,AACD,wBACE,kBAAmB,AACnB,eAAuB,AACvB,mBAAoB,AACpB,WAAY,AACZ,aAAc,AACd,6BAA+B,CAChC,AACD,4BACE,eAAgB,AAChB,WAAY,AACZ,mBAAoB,AACpB,uBAAwB,AACxB,aAAc,AACd,kBAAmB,AACnB,aAAe,CAChB,AACD,0FAMA,sDACE,aAAe,CAChB,CACA,AACD,2FAGA,4BACE,eAAiB,CAClB,CACA,AACD,yGAGA,0BACE,aAAe,CAChB,AACD,4BACE,aAAe,CAChB,CACA,AACD,4BAIW,qDAAuD,CACjE,AACD,mCACA,GAAO,SAAU,CAChB,AACD,IAAO,SAAU,CAChB,AACD,GAAO,SAAU,CAChB,CACA","file":"app.88b59040e51e8f164a64e02217927e89.css","sourcesContent":["\nbody, html {\n margin: 0;\n padding: 0;\n}\nbody {\n background: #2c3e50;\n}\n#app {\n color: #fff;\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n text-align: center;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n.slide-leave-active[data-v-7542002e] {\n\ttransition: opacity 0.75s;\n}\n.slide-leave-to[data-v-7542002e] {\n\topacity: 0;\n}\n.title[data-v-7542002e] {\n top: 20%;\n position: absolute;\n font-size: 8vw;\n}\n.slide-up-leave-active[data-v-7542002e],\n.slide-up-enter-active[data-v-7542002e] {\n\ttransition: 1s ease-in-out;\n opacity: 1;\n}\n.slide-up-enter[data-v-7542002e] {\n\ttransform: translate(0, 100%);\n opacity: 0;\n}\n.slide-up-leave-to[data-v-7542002e] {\n transform: translate(0, 100%);\n\topacity: 0;\n}\n#wrapper[data-v-7542002e] {\n width: 100%;\n background: rgb(45, 49, 57);\n display: flex;\n height: 100%;\n min-height: 100vh;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n@media only screen and (min-device-width: 320px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 424px)\n\t\t\t\t\t\t\t\t\t and (orientation: portrait) {\n.title[data-v-7542002e] { font-size: 10vw;\n}\n}\n@media only screen and (min-device-width: 520px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 1023px)\n\t\t\t\t\t\t\t\t\t and (orientation: portrait) {\n.title[data-v-7542002e] { font-size: 10vw;\n}\n.title-login[data-v-7542002e] {\n transition: 1s;\n top: 10%;\n}\n.title-empty[data-v-7542002e] {\n transition: 1s;\n position: inherit;\n}\n}\n@media only screen and (min-device-width: 1024px)\n and (max-device-width: 2048px)\n\t\t\t\t\t\t\t\t\t and (orientation: portrait) {\n.title[data-v-7542002e] { font-size: 10vw;\n}\n.title-login[data-v-7542002e] {\n transition: 1s;\n top: 10%;\n}\n.title-empty[data-v-7542002e] {\n transition: 1s;\n position: inherit;\n}\n}\n@media only screen and (min-device-width: 320px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 812px)\n\t\t\t\t\t\t\t\t\t and (orientation: landscape) {\n.title[data-v-7542002e] {\n position: inherit;\n font-size: 10vw;\n}\n.title-login[data-v-7542002e] {\n transition: 1s;\n opacity: 0;\n}\n.title-empty[data-v-7542002e] {\n transition: 1s;\n opacity: 1;\n}\n}\n@media only screen and (min-device-width: 813px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 1365px)\n\t\t\t\t\t\t\t\t\t and (orientation: landscape) {\n.title[data-v-7542002e] {\n position: inherit;\n font-size: 10vw;\n}\n.title-login[data-v-7542002e] {\n position: absolute;\n font-size: 3.5vw;\n transition: 1s;\n top: 5%;\n}\n.title-empty[data-v-7542002e] {\n transition: 1s;\n position: inherit;\n}\n}\n@media only screen and (min-device-width: 1366px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 2560px)\n and (min-device-height: 600px)\n\t\t\t\t\t\t\t\t\t and (orientation: landscape) {\n.title[data-v-7542002e] {\n position: inherit;\n font-size: 10vw;\n}\n.title-login[data-v-7542002e] {\n position: absolute;\n font-size: 5vw;\n transition: 1s;\n top: 10%;\n}\n.title-empty[data-v-7542002e] {\n transition: 1s;\n position: inherit;\n}\n}\n\n.animation[data-v-7dfe688f] {\n font-size: 6vw;\n -webkit-animation: flicker-data-v-7dfe688f 2s ease-in-out infinite;\n -moz-animation: flicker-data-v-7dfe688f 2s ease-in-out infinite;\n -o-animation: flicker-data-v-7dfe688f 2s ease-in-out infinite;\n animation: flicker-data-v-7dfe688f 2s ease-in-out infinite;\n}\n@keyframes flicker-data-v-7dfe688f {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n@-o-keyframes flicker-data-v-7dfe688f {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n@-moz-keyframes flicker-data-v-7dfe688f {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n@-webkit-keyframes flicker-data-v-7dfe688f {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n@media only screen and (min-width: 1024px) {\n.animation[data-v-7dfe688f] {\n font-size: 3vw;\n}\n}\n\n\n#loginBox[data-v-9595acea] {\n position: absolute;\n}\n#loginBox > div[data-v-9595acea] {\n padding-top: 5%;\n}\ndiv.input > div[data-v-9595acea] {\n padding: 5px;\n}\n.title[data-v-9595acea] {\n font-size: 8vw;\n}\ninput[data-v-9595acea] {\n\tborder: \t\t\t\t\t\t1px solid #fff;\n\tborder-radius: \t\t\t5px;\n\tdisplay: \t\t\t\t\t\tblock;\n\tfont-family: \t\t\t\t'Avenir';\n\tfont-size: \t\t\t\t\t5vw;\n\tpadding: \t\t\t\t\t\t10px 20px 10px 20px;\n\t-webkit-appearance: none;\n}\ninput[data-v-9595acea]:focus {\n\toutline: none;\n}\n.button[data-v-9595acea] {\n\tbackground: \t\trgb(82, 172, 120);\n\tborder-radius: \t5px;\n\tcursor:\t\t\t\t\tpointer;\n\tfont-size: \t\t\t4vw;\n\tpadding: \t\t\t\t10px 10px 10px 10px;\n\ttext-align: \t\tcenter;\n}\n\n.slide-enter-active[data-v-56e72c6a] {\n\ttransition: opacity 0.2s;\n}\n.slide-enter[data-v-56e72c6a] {\n\topacity: 0;\n}\n.slide-menu-leave-active[data-v-56e72c6a],\n.slide-menu-enter-active[data-v-56e72c6a] {\n\ttransition: 0.5s;\n}\n.slide-console-enter-active[data-v-56e72c6a] {\n\ttransition: 0s;\n}\n.slide-console-leave-active[data-v-56e72c6a] {\n\ttransition: 0s;\n}\n.slide-menu-enter[data-v-56e72c6a] {\n\ttransform: translate(0%, 100%);\n}\n.slide-menu-leave-to[data-v-56e72c6a] {\n\ttransform: translate(0%, 100%);\n}\n.slide-console-enter[data-v-56e72c6a] {\n\ttransform: translate(0%, 0%);\n}\n.slide-console-leave-to[data-v-56e72c6a] {\n\ttransform: translate(0%, 0%);\n}\n#container[data-v-56e72c6a] {\n align-items: stretch;\n display: flex;\n justify-content: center;\n min-height: 100vh;\n}\n\n.inactive[data-v-1c8e22cf] {\n color: grey;\n}\n.container[data-v-1c8e22cf] {\n position: fixed;\n\tcolor: \t\t\t\t\t\t\t\t\t\t#2c3e50;\n\tfont-family: \t\t\t\t\t\t\t'Avenir', Helvetica, Arial, sans-serif;\n\tmargin-top: \t\t\t\t\t\t\t0;\n height: 100%;\n\ttext-align: \t\t\t\t\t\t\tcenter;\n\twidth: \t\t\t\t\t\t\t\t\t\t100%;\n\t-moz-osx-font-smoothing: \tgrayscale;\n\t-webkit-font-smoothing:\t\tantialiased;\n\tz-index: 99;\n}\n#updateMenu[data-v-1c8e22cf] {\n\tbackground: \t\t#2c3e50;\n\tcolor: \t\t\t\t\t#fff;\n\tdisplay: \t\t\t\tflex;\n\tflex-direction: column;\n\tfont-size: \t\t\t3vw;\n\theight: \t\t\t\t100%;\n\ttransition: \t\t0.5s;\n\twidth: \t\t\t\t\t100%;\n}\n#updateMenu > div[data-v-1c8e22cf] {\n\talign-items: \t\t\tcenter;\n\tdisplay: \t\t\t\t\tflex;\n\theight: \t\t\t\t\tinherit;\n\tjustify-content: \tcenter;\n}\n#updateMenu > div[data-v-1c8e22cf] {\n\tborder-bottom: 1px solid #fff;\n}\n#updateMenu div[data-v-1c8e22cf]:hover {\n\tcursor: pointer;\n}\n#updateMenu div.grouped[data-v-1c8e22cf] {\n\talign-items: \t\t\tstretch;\n}\n#updateMenu div.grouped > div[data-v-1c8e22cf] {\n\tdisplay: \t\t\t\tflex;\n\tflex: \t\t\t\t\t1;\n\tflex-direction: column;\n\talign-items: \t\tcenter;\n\tjustify-content: center;\n\twidth: \t\t\t\t\t100%;\n}\n#updateMenu div.grouped > div[data-v-1c8e22cf]:first-child {\n\tborder-right: 1px solid #fff;\n}\n#updateMenu> div[data-v-1c8e22cf]:last-child {\n\tborder: none;\n}\n@media only screen and (min-device-width: 320px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 736px)\n\t\t\t\t\t\t\t\t\t and (orientation: portrait) {\n#updateMenu[data-v-1c8e22cf] {\n\t\tfont-size: 8vw;\n}\n}\n@media only screen and (min-device-width: 736px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 1024px)\n\t\t\t\t\t\t\t\t\t and (orientation: portrait) {\n#updateMenu[data-v-1c8e22cf] {\n\t\tfont-size: 8vw\n}\n}\n\n.running[data-v-1ff612e3] {\n color: green;\n}\n.stopped[data-v-1ff612e3] {\n color: red;\n}\n#console[data-v-1ff612e3] {\n background: #000;\n display: flex;\n flex-direction: column;\n text-align: left;\n color: #fff;\n font-size: 2vw;\n width: 100%;\n max-height: 100vh;\n overflow: scroll;\n}\n#output[data-v-1ff612e3] {\n\tpadding: 65px 10px 25px 10px;\n}\n#output pre[data-v-1ff612e3] {\n white-space: pre-wrap;\n white-space: -moz-pre-wrap;\n white-space: -pre-wrap;\n white-space: -o-pre-wrap;\n word-wrap: break-word;\n}\n#footer[data-v-1ff612e3] {\n background: #2c3e50;\n bottom: 0;\n position: absolute;\n width: 100%;\n}\n#footer div[data-v-1ff612e3] {\n padding: 5px;\n}\n#panel[data-v-1ff612e3] {\n position: absolute;\n padding: 10px 0 10px 0;\n background: #2c3e50;\n width: 100%;\n display: flex;\n justify-content: space-between;\n}\n#panel div[data-v-1ff612e3] {\n cursor: pointer;\n width: 100%;\n align-items: center;\n justify-content: center;\n display: flex;\n text-align: center;\n font-size: 2vw;\n}\n@media only screen and (min-width: 320px)\n\t\t\t\t\t\t\t\t\t and (max-width: 736px)\n\t\t\t\t\t\t\t\t\t and (orientation: portrait) {\n#console[data-v-1ff612e3] {\n\t\tfont-size: 6vw;\n}\n#panel div[data-v-1ff612e3] {\n\t\tfont-size: 6vw;\n}\n}\n@media only screen and (min-width: 320px)\n\t\t\t\t\t\t\t\t\t and (max-width: 736px)\n\t\t\t\t\t\t\t\t\t and (orientation: landscape) {\n#panel div[data-v-1ff612e3] {\n\t\tfont-size: 2.5vw;\n}\n}\n@media only screen and (min-device-width: 736px)\n\t\t\t\t\t\t\t\t\t and (max-device-width: 1024px)\n\t\t\t\t\t\t\t\t\t and (orientation: portrait) {\n#console[data-v-1ff612e3] {\n\t\tfont-size: 6vw;\n}\n#panel div[data-v-1ff612e3] {\n\t\tfont-size: 4vw;\n}\n}\n.animation[data-v-1ff612e3] {\n -webkit-animation: flicker-data-v-1ff612e3 1s ease-in infinite;\n -moz-animation: flicker-data-v-1ff612e3 1s ease-in infinite;\n -o-animation: flicker-data-v-1ff612e3 1s ease-in infinite;\n animation: flicker-data-v-1ff612e3 1s ease-in infinite;\n}\n@keyframes flicker-data-v-1ff612e3 {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n@-o-keyframes flicker-data-v-1ff612e3 {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n@-moz-keyframes flicker-data-v-1ff612e3 {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n@-webkit-keyframes flicker-data-v-1ff612e3 {\n0% { opacity:1;\n}\n50% { opacity:0;\n}\n100% { opacity:1;\n}\n}\n"]} \ No newline at end of file diff --git a/bootstrapper/dist/static/js/app.ff26e31b087bf2adab86.js b/bootstrapper/dist/static/js/app.ff26e31b087bf2adab86.js deleted file mode 100644 index 66cb220..0000000 --- a/bootstrapper/dist/static/js/app.ff26e31b087bf2adab86.js +++ /dev/null @@ -1,2 +0,0 @@ -webpackJsonp([0],{"23/c":function(t,n,e){"use strict";n.data=function(){return{commandInprogress:!1,overlayComponent:"Console",menuHidden:!0,logs:[]}},n.methods={performCommand:function(t){this.$socket.emit("client:perform",{command:t}),this.logs.push("$ "+t),this.showConsole(!0),this.commandInprogress=!0},showConsole:function(t){this.overlayComponent=t?"Console":"Menu",this.menuHidden=t},clearConsole:function(){this.logs=[]}},n.created=function(){var t=this;this.$socket.on("command",function(n){if(1==n.status)t.logs.push(n.result);else if(0==n.status)t.logs.push(n.error.message);else{t.commandInprogress=!1;var e=setInterval(function(){clearInterval(e),t.$socket.emit("client:status",null)},1e3)}}),this.$socket.on("history",function(n){1==n.status&&n.result.forEach(function(n){t.logs.push(n.message)})}),this.$socket.emit("client:history",null)}},"2TBi":function(t,n){},COBk:function(t,n,e){"use strict";n.data=function(){return{message:"Initializing...",component:"Splash"}},n.computed={onLogin:function(){return"Login"==this.component},onEmpty:function(){return""==this.component}},n.methods={handleAuthResponse:function(t,n){t?this.requestStatusCheck():this.message=n},requestStatusCheck:function(){this.$socket.emit("client:status",null)}},n.mounted=function(){var t=this,n=setInterval(function(){0==t.$root.isLoggedIn?t.$root.connected?(clearInterval(n),t.component="Login",t.message=""):t.message="Server not responding...":(clearInterval(n),t.requestStatusCheck())},1e3)}},FqfT:function(t,n){},LLb9:function(t,n){},MqTn:function(t,n){},NHnr:function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var s=e("7+uW"),o={render:function(){var t=this.$createElement,n=this._self._c||t;return n("div",{attrs:{id:"app"}},[n("transition",{attrs:{name:"slide",mode:"out-in"}},[n("router-view")],1)],1)},staticRenderFns:[]};var i=e("VU/8")({name:"App",created:function(){0==this.$root.isLoggedIn&&this.$root._router.push("/")}},o,!1,function(t){e("2TBi")},null,null).exports,a=e("/ocq"),r=e("COBk"),c=e("C/JF"),l=e("fhbW"),u={render:function(){var t=this.$createElement,n=this._self._c||t;return n("div",[n("div",{staticClass:"animation"},[this._v(this._s(this.message))])])},staticRenderFns:[]};var d=e("VU/8")({name:"Splash",props:["message"]},u,!1,function(t){e("MqTn")},"data-v-7dfe688f",null).exports,p=e("jTjE");c.library.add(l.h);var m={name:"Login",props:["message"],data:p.data,methods:p.methods,mounted:p.mounted},v={render:function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"loginBox"}},[e("div",{staticClass:"input"},[e("div",[e("input",{directives:[{name:"model",rawName:"v-model",value:t.username,expression:"username"}],attrs:{type:"text",name:"username",placeholder:"Username"},domProps:{value:t.username},on:{input:function(n){n.target.composing||(t.username=n.target.value)}}})]),t._v(" "),e("div",[e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{type:"password",name:"password",placeholder:"Password"},domProps:{value:t.password},on:{input:function(n){n.target.composing||(t.password=n.target.value)}}})]),t._v(" "),e("div",[e("div",{staticClass:"button noselect",on:{click:t.signIn}},[t._v("Sign in")])]),t._v(" "),e("div",[t._v(t._s(t.message)+" ")])])])},staticRenderFns:[]};var h=e("VU/8")(m,v,!1,function(t){e("oFL3")},"data-v-9595acea",null).exports;c.library.add(l.h);var f={name:"Main",components:{Login:h,Splash:d},data:r.data,computed:r.computed,methods:r.methods,mounted:r.mounted},g={render:function(){var t=this.$createElement,n=this._self._c||t;return n("div",{attrs:{id:"wrapper"}},[n("div",{staticClass:"title",class:{"title-login":this.onLogin,"title-empty":this.onEmpty}},[n("font-awesome-icon",{attrs:{icon:"robot"}}),n("br"),this._v("Raspbot\n ")],1),this._v(" "),n("transition",{attrs:{name:"slide-up"}},[n(this.component,{tag:"component",attrs:{message:this.message},on:{handleAuthResponse:this.handleAuthResponse}})],1)],1)},staticRenderFns:[]};var _=e("VU/8")(f,g,!1,function(t){e("plUm")},"data-v-7542002e",null).exports,$=e("23/c");c.library.add(l.i,l.b,l.c,l.f,l.g,l.e);var w={render:function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("section",{staticClass:"container"},[e("div",{attrs:{id:"updateMenu"}},[e("div",{on:{click:function(n){t.$emit("showConsole",!0)}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"terminal"}}),e("br"),t._v("Show Console")],1)]),t._v(" "),e("div",{staticClass:"grouped"},[e("div",{class:{inactive:t.commandInprogress},on:{click:function(n){t.call("update")}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"cloud-download-alt"}}),e("br"),t._v("Update")],1)]),t._v(" "),e("div",{class:{inactive:t.commandInprogress},on:{click:function(n){t.call("install")}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"cog"}}),e("br"),t._v("Install")],1)])]),t._v(" "),e("div",{staticClass:"grouped"},[e("div",{class:{inactive:t.commandInprogress},on:{click:function(n){t.call("restart")}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"redo-alt"}}),e("br"),t._v("(Re)start")],1)]),t._v(" "),e("div",{class:{inactive:t.commandInprogress},on:{click:function(n){t.call("stop")}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"plug"}}),e("br"),t._v("Stop")],1)])]),t._v(" "),e("div",{class:{inactive:t.commandInprogress},on:{click:function(n){t.call("shutdown")}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"power-off"}}),e("br"),t._v("Exit Updater")],1)])])])},staticRenderFns:[]};var k=e("VU/8")({name:"Menu",props:["commandInprogress"],methods:{call:function(t){this.commandInprogress||this.$emit("call",t)}}},w,!1,function(t){e("u/Oq")},"data-v-1c8e22cf",null).exports;c.library.add(l.d,l.a);var C={render:function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"console"}},[e("div",{attrs:{id:"panel"}},[e("div",{on:{click:function(n){t.$emit("showConsole",!1)}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"caret-square-down"}}),e("br"),t._v("Show menu")],1)]),t._v(" "),e("div",{on:{click:function(n){t.$emit("clearConsole")}}},[e("span",[e("font-awesome-icon",{attrs:{icon:"minus-square"}}),e("br"),t._v("Clear console")],1)])]),t._v(" "),e("div",{attrs:{id:"output"}},[t._l(t.logs,function(n){return e("pre",[t._v(t._s(n))])}),t._v(" "),t.commandInprogress?t._e():e("pre",{attrs:{id:"cursor"}},[t._v("$ "),e("span",{staticClass:"animation"},[t._v("_")])])],2),t._v(" "),e("div",{attrs:{id:"footer"}},[e("div",[t._v(t._s(this.$Application.appName)+" "+t._s(this.$Application.version)+": "),e("span",{class:t.status},[t._v(t._s(t.status))])])])])},staticRenderFns:[]};var I={name:"ConsoleMain",components:{Menu:k,Console:e("VU/8")({name:"Console",props:["logs","commandInprogress"],watch:{logs:function(t,n){this.$nextTick(function(){this.$el.scrollTop=this.$el.scrollHeight})},commandInprogress:function(t,n){0==t&&this.$nextTick(function(){this.$el.scrollTop=this.$el.scrollHeight})}},computed:{status:function(){return this.$root.serverStatus?"running":"stopped"}}},C,!1,function(t){e("LLb9")},"data-v-1ff612e3",null).exports},data:$.data,methods:$.methods,created:$.created},b={render:function(){var t=this.$createElement,n=this._self._c||t;return n("section",{attrs:{id:"container"}},[n("transition",{attrs:{name:"slide-menu"}},[n(this.overlayComponent,{tag:"component",attrs:{commandInprogress:this.commandInprogress,logs:this.logs},on:{call:this.performCommand,showConsole:this.showConsole,clearConsole:this.clearConsole}})],1)],1)},staticRenderFns:[]};var y=e("VU/8")(I,b,!1,function(t){e("FqfT")},"data-v-56e72c6a",null).exports;s.a.use(a.a);var L=new a.a({mode:"history",routes:[{path:"/",name:"Main",component:_},{path:"/login",name:"Login",component:h},{path:"/console",name:"ConsoleMain",component:y}]}),x=e("K/Lq"),S=e.n(x),A=e("OjAK"),R=e.n(A),q={install:function(t){t.prototype.$Application={appName:R.a.name,version:R.a.version}}},E=e("hMcO"),F=e.n(E),T=e("U0v6");s.a.use(S.a),s.a.use(q),s.a.use(F.a,":5001"),s.a.component("font-awesome-icon",T.FontAwesomeIcon),s.a.config.productionTip=!1,new s.a({el:"#app",router:L,components:{App:i},template:"",data:function(){return{isLoggedIn:!1,serverStatus:!1,connected:!0}},methods:{authenticate:function(t,n,e){var s=this,o={username:t,password:n};this.$socket.emit("authentication",o),this.$socket.on("authenticated",function(){s.$cookie.set("username",t,{expires:"1Y"}),s.$cookie.set("password",n,{expires:"1Y"}),s.isLoggedIn=!0,"function"==typeof e&&e(!0,null)}),this.$socket.on("unauthorized",function(t){"function"==typeof e&&e(!1,t.message)})}},created:function(){var t=this;this.$socket.on("status",function(n){t.serverStatus=n.running,"/console"!=t.$route.path&&t._router.push("/console")}),this.$socket.on("connect",function(){t.connected=!0}),this.$socket.on("disconnect",function(){t.isLoggedIn=!1,t.serverStatus=!1,t.connected=!1,t._router.push("/")});var n=this.$cookie.get("username"),e=this.$cookie.get("password");void 0==n&&null==n||this.authenticate(n,e)}})},OjAK:function(t,n){t.exports={name:"raspy",version:"0.2.2",description:"Raspy lets you control your Raspberry Pi.",author:"Ardalan Samimi ",license:"AGPL-3.0",private:!0,repository:{type:"git",url:"https://github.com/pkrll/raspy"},scripts:{install:"npm run install_client && npm run install_server",install_client:"cd client && npm install",install_server:"cd server && npm install",dev_server:"cd server && npm run dev",dev_client:"cd client && npm run dev",setup:"cd server && npm run setup",build:"cd client && npm run build",patch:"node .scripts/increment-version.js --version=patch --skip-build",minor:"node .scripts/increment-version.js --version=minor --skip-build --reset-patch",major:"node .scripts/increment-version.js --version=major --skip-build --reset-minor --reset-patch"}}},jTjE:function(t,n,e){"use strict";n.data=function(){return{username:"",password:""}},n.methods={signIn:function(){var t=this;this.$root.authenticate(this.username,this.password,function(n,e){t.$emit("handleAuthResponse",n,e)})}},n.mounted=function(){}},oFL3:function(t,n){},plUm:function(t,n){},"u/Oq":function(t,n){}},["NHnr"]); -//# sourceMappingURL=app.ff26e31b087bf2adab86.js.map \ No newline at end of file diff --git a/bootstrapper/dist/static/js/app.ff26e31b087bf2adab86.js.map b/bootstrapper/dist/static/js/app.ff26e31b087bf2adab86.js.map deleted file mode 100644 index e4d37fb..0000000 --- a/bootstrapper/dist/static/js/app.ff26e31b087bf2adab86.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/Console/Main.js","webpack:///./src/components/Main/Main.js","webpack:///./src/App.vue?6177","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/components/Main/Splash.vue?1235","webpack:///./src/components/Main/Splash.vue","webpack:///src/components/Main/Splash.vue","webpack:///src/components/Login/Main.vue","webpack:///./src/components/Login/Main.vue?59b6","webpack:///./src/components/Login/Main.vue","webpack:///src/components/Main/Main.vue","webpack:///./src/components/Main/Main.vue?7aa3","webpack:///./src/components/Main/Main.vue","webpack:///src/components/Menu/Main.vue","webpack:///./src/components/Menu/Main.vue?e918","webpack:///./src/components/Menu/Main.vue","webpack:///src/components/Console/Console.vue","webpack:///./src/components/Console/Console.vue?b995","webpack:///./src/components/Console/Console.vue","webpack:///src/components/Console/Main.vue","webpack:///./src/components/Console/Main.vue?efe0","webpack:///./src/components/Console/Main.vue","webpack:///./src/router/index.js","webpack:///./src/shared/Application.js","webpack:///./src/main.js","webpack:////Users/ardalansamimi/Public/Git/Raspy/package.json","webpack:///./src/components/Login/Main.js"],"names":["exports","data","commandInprogress","overlayComponent","menuHidden","logs","methods","performCommand","command","this","$socket","emit","push","showConsole","value","clearConsole","created","_this","on","response","status","result","error","message","timer","setInterval","clearInterval","forEach","item","component","computed","onLogin","onEmpty","handleAuthResponse","didSucceed","requestStatusCheck","mounted","$root","isLoggedIn","connected","selectortype_template_index_0_src_App","render","_h","$createElement","_c","_self","attrs","id","name","mode","staticRenderFns","src_App","__webpack_require__","normalizeComponent","_router","ssrContext","Main_Splash","staticClass","_v","_s","components_Main_Splash","Splash_normalizeComponent","props","index_es","add","free_solid_svg_icons_index_es","components_Login_Main","Login_Main","selectortype_template_index_0_src_components_Login_Main","_vm","directives","rawName","expression","type","placeholder","domProps","input","$event","target","composing","username","password","click","signIn","src_components_Login_Main","Main_normalizeComponent","components","Login","Splash","Main","components_Main_Main","class","title-login","title-empty","icon","tag","src_components_Main_Main","Main_Main_normalizeComponent","Main_Main","components_Menu_Main","$emit","inactive","call","src_components_Menu_Main","Menu_Main_normalizeComponent","Console_Console","_l","log","_e","$Application","appName","version","components_Console_Main","Menu","Console","Console_normalizeComponent","watch","newValue","oldValue","$nextTick","$el","scrollTop","scrollHeight","serverStatus","Console_Main","selectortype_template_index_0_src_components_Console_Main","src_components_Console_Main","Console_Main_normalizeComponent","vue_esm","use","vue_router_esm","router","routes","path","Application","install","Vue","prototype","package_default","a","vue_cookie_default","build_default","vue_fontawesome","config","productionTip","el","App","template","authenticate","callback","auth","$cookie","set","expires","_this2","running","$route","get","undefined","module","description","author","license","private","repository","url","scripts","install_client","install_server","dev_server","dev_client","setup","build","patch","minor","major"],"mappings":"sDAEAA,EAAQC,KAAO,WACb,OACEC,mBAAmB,EACnBC,iBAAkB,UAClBC,YAAY,EACZC,UAIJL,EAAQM,SAQNC,eAAgB,SAAUC,GACxBC,KAAKC,QAAQC,KAAK,kBAAoBH,QAASA,IAC/CC,KAAKJ,KAAKO,KAAK,KAAOJ,GACtBC,KAAKI,aAAY,GACjBJ,KAAKP,mBAAoB,GAO3BW,YAAa,SAAUC,GACrBL,KAAKN,iBAAoBW,EAAS,UAAY,OAC9CL,KAAKL,WAAaU,GAKpBC,aAAc,WACZN,KAAKJ,UAITL,EAAQgB,QAAU,WAAW,IAAAC,EAAAR,KAC3BA,KAAKC,QAAQQ,GAAG,UAAW,SAAAC,GACzB,GAAuB,GAAnBA,EAASC,OACXH,EAAKZ,KAAKO,KAAKO,EAASE,aACnB,GAAuB,GAAnBF,EAASC,OAClBH,EAAKZ,KAAKO,KAAKO,EAASG,MAAMC,aACzB,CACLN,EAAKf,mBAAoB,EAEzB,IAAIsB,EAAQC,YAAa,WACvBC,cAAcF,GACdP,EAAKP,QAAQC,KAAK,gBAAiB,OAClC,QAIPF,KAAKC,QAAQQ,GAAG,UAAW,SAAAC,GACF,GAAnBA,EAASC,QACXD,EAASE,OAAOM,QAAQ,SAAAC,GACzBX,EAAKZ,KAAKO,KAAKgB,EAAKL,aAKvBd,KAAKC,QAAQC,KAAK,iBAAkB,iEChEtCX,EAAQC,KAAO,WACb,OACEsB,QAAS,kBACTM,UAAW,WAIf7B,EAAQ8B,UAQNC,QAAS,WACP,MAA0B,SAAlBtB,KAAKoB,WASfG,QAAS,WACP,MAA0B,IAAlBvB,KAAKoB,YAIjB7B,EAAQM,SAWN2B,mBAAoB,SAAUC,EAAYX,GACpCW,EACFzB,KAAK0B,qBAEL1B,KAAKc,QAAUA,GASnBY,mBAAoB,WAClB1B,KAAKC,QAAQC,KAAK,gBAAiB,QAIvCX,EAAQoC,QAAU,WAAY,IAAAnB,EAAAR,KACxBe,EAAQC,YAAa,WACM,GAAzBR,EAAKoB,MAAMC,WACTrB,EAAKoB,MAAME,WACbb,cAAcF,GACdP,EAAKY,UAAY,QACjBZ,EAAKM,QAAU,IAEfN,EAAKM,QAAU,4BAGjBG,cAAcF,GACdP,EAAKkB,uBAEN,yKCxELK,GADiBC,OAFjB,WAA0B,IAAaC,EAAbjC,KAAakC,eAA0BC,EAAvCnC,KAAuCoC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOC,GAAA,SAAYH,EAAA,cAAmBE,OAAOE,KAAA,QAAAC,KAAA,YAAgCL,EAAA,wBAEtKM,oBCCjB,IAuBAC,EAvBAC,EAAA,OAcAC,ECNAL,KAAA,MACAhC,QAAA,WACA,GAAAP,KAAA4B,MAAAC,YACA7B,KAAA4B,MAAAiB,QAAA1C,KAAA,ODKA4B,GATA,EAVA,SAAAe,GACAH,EAAA,SAaA,KAEA,MAUA,wDEvBAI,GADiBf,OAFjB,WAA0B,IAAaC,EAAbjC,KAAakC,eAA0BC,EAAvCnC,KAAuCoC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAA,EAAA,OAA2Ba,YAAA,cAA1FhD,KAAkHiD,GAAlHjD,KAAkHkD,GAAlHlD,KAAkHc,eAE3H2B,oBCCjB,IAuBAU,EAvBAR,EAAA,OAcAS,ECRAb,KAAA,SACAc,OAAA,YDSAN,GATA,EAVA,SAAAD,GACAH,EAAA,SAaA,kBAEA,MAUA,oBEVAW,EAAA,QAAAC,IAAAC,EAAA,GAEA,IAAAC,GACAlB,KAAA,QACAc,OAAA,WACA7D,KAAAkE,EAAA,KACA7D,QAAA6D,EAAA,QACA/B,QAAA+B,EAAA,SCpBAC,GADiB3B,OAFjB,WAA0B,IAAA4B,EAAA5D,KAAaiC,EAAA2B,EAAA1B,eAA0BC,EAAAyB,EAAAxB,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOC,GAAA,cAAiBH,EAAA,OAAYa,YAAA,UAAoBb,EAAA,OAAAA,EAAA,SAAwB0B,aAAatB,KAAA,QAAAuB,QAAA,UAAAzD,MAAAuD,EAAA,SAAAG,WAAA,aAA0E1B,OAAS2B,KAAA,OAAAzB,KAAA,WAAA0B,YAAA,YAAyDC,UAAW7D,MAAAuD,EAAA,UAAuBnD,IAAK0D,MAAA,SAAAC,GAAyBA,EAAAC,OAAAC,YAAsCV,EAAAW,SAAAH,EAAAC,OAAAhE,aAAmCuD,EAAAX,GAAA,KAAAd,EAAA,OAAAA,EAAA,SAAsC0B,aAAatB,KAAA,QAAAuB,QAAA,UAAAzD,MAAAuD,EAAA,SAAAG,WAAA,aAA0E1B,OAAS2B,KAAA,WAAAzB,KAAA,WAAA0B,YAAA,YAA6DC,UAAW7D,MAAAuD,EAAA,UAAuBnD,IAAK0D,MAAA,SAAAC,GAAyBA,EAAAC,OAAAC,YAAsCV,EAAAY,SAAAJ,EAAAC,OAAAhE,aAAmCuD,EAAAX,GAAA,KAAAd,EAAA,OAAAA,EAAA,OAAoCa,YAAA,kBAAAvC,IAAkCgE,MAAAb,EAAAc,UAAoBd,EAAAX,GAAA,eAAAW,EAAAX,GAAA,KAAAd,EAAA,OAAAyB,EAAAX,GAAAW,EAAAV,GAAAU,EAAA9C,SAAA,YAEj3B2B,oBCCjB,IAuBAkC,EAvBAhC,EAAA,OAcAiC,CACAnB,EACAE,GATA,EAVA,SAAAb,GACAH,EAAA,SAaA,kBAEA,MAUA,QCNAW,EAAA,QAAAC,IAAAC,EAAA,UAGAjB,KAAA,OACAsC,YAAAC,MAAAH,EAAAI,OAAA5B,GACA3D,KAAAwF,EAAA,KACA3D,SAAA2D,EAAA,SACAnF,QAAAmF,EAAA,QACArD,QAAAqD,EAAA,SCzBAC,GADiBjD,OAFjB,WAA0B,IAAaC,EAAbjC,KAAakC,eAA0BC,EAAvCnC,KAAuCoC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOC,GAAA,aAAgBH,EAAA,OAAYa,YAAA,QAAAkC,OAA2BC,cAA9InF,KAA8IsB,QAAA8D,cAA9IpF,KAA8IuB,WAA0DY,EAAA,qBAA0BE,OAAOgD,KAAA,WAAgBlD,EAAA,MAAzPnC,KAAyPiD,GAAA,mBAAzPjD,KAAyPiD,GAAA,KAAAd,EAAA,cAAkEE,OAAOE,KAAA,cAAmBJ,EAArVnC,KAAqVoB,WAAoBkE,IAAA,YAAAjD,OAAuBvB,QAAhYd,KAAgYc,SAAsBL,IAAKe,mBAA3ZxB,KAA2ZwB,uBAA6C,QAEjdiB,oBCCjB,IAuBA8C,EAvBA5C,EAAA,OAcA6C,CACAC,EACAR,GATA,EAVA,SAAAnC,GACAH,EAAA,SAaA,kBAEA,MAUA,oBCOAW,EAAA,QAAAC,IAAAC,EAAA,EAAAA,EAAA,EAAAA,EAAA,EAAAA,EAAA,EAAAA,EAAA,EAAAA,EAAA,GAEA,IChCAkC,GADiB1D,OAFjB,WAA0B,IAAA4B,EAAA5D,KAAaiC,EAAA2B,EAAA1B,eAA0BC,EAAAyB,EAAAxB,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBa,YAAA,cAAwBb,EAAA,OAAYE,OAAOC,GAAA,gBAAmBH,EAAA,OAAY1B,IAAIgE,MAAA,SAAAL,GAAyBR,EAAA+B,MAAA,sBAAiCxD,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,cAAmBlD,EAAA,MAAAyB,EAAAX,GAAA,sBAAAW,EAAAX,GAAA,KAAAd,EAAA,OAA8Da,YAAA,YAAsBb,EAAA,OAAY+C,OAAOU,SAAAhC,EAAAnE,mBAAgCgB,IAAKgE,MAAA,SAAAL,GAAyBR,EAAAiC,KAAA,cAAqB1D,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,wBAA6BlD,EAAA,MAAAyB,EAAAX,GAAA,gBAAAW,EAAAX,GAAA,KAAAd,EAAA,OAAwD+C,OAAOU,SAAAhC,EAAAnE,mBAAgCgB,IAAKgE,MAAA,SAAAL,GAAyBR,EAAAiC,KAAA,eAAsB1D,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,SAAclD,EAAA,MAAAyB,EAAAX,GAAA,mBAAAW,EAAAX,GAAA,KAAAd,EAAA,OAA2Da,YAAA,YAAsBb,EAAA,OAAY+C,OAAOU,SAAAhC,EAAAnE,mBAAgCgB,IAAKgE,MAAA,SAAAL,GAAyBR,EAAAiC,KAAA,eAAsB1D,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,cAAmBlD,EAAA,MAAAyB,EAAAX,GAAA,mBAAAW,EAAAX,GAAA,KAAAd,EAAA,OAA2D+C,OAAOU,SAAAhC,EAAAnE,mBAAgCgB,IAAKgE,MAAA,SAAAL,GAAyBR,EAAAiC,KAAA,YAAmB1D,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,UAAelD,EAAA,MAAAyB,EAAAX,GAAA,gBAAAW,EAAAX,GAAA,KAAAd,EAAA,OAAwD+C,OAAOU,SAAAhC,EAAAnE,mBAAgCgB,IAAKgE,MAAA,SAAAL,GAAyBR,EAAAiC,KAAA,gBAAuB1D,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,eAAoBlD,EAAA,MAAAyB,EAAAX,GAAA,2BAE74CR,oBCCjB,IAuBAqD,EAvBAnD,EAAA,OAcAoD,EFmBAxD,KAAA,OACAc,OAAA,qBACAxD,SACAgG,KAAA,SAAA9F,GACAC,KAAAP,mBAIAO,KAAA2F,MAAA,OAAA5F,MEzBA2F,GATA,EAVA,SAAA5C,GACAH,EAAA,SAaA,kBAEA,MAUA,QCFAW,EAAA,QAAAC,IAAAC,EAAA,EAAAA,EAAA,GAEA,ICvBAwC,GADiBhE,OAFjB,WAA0B,IAAA4B,EAAA5D,KAAaiC,EAAA2B,EAAA1B,eAA0BC,EAAAyB,EAAAxB,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,OAAOC,GAAA,aAAgBH,EAAA,OAAYE,OAAOC,GAAA,WAAcH,EAAA,OAAY1B,IAAIgE,MAAA,SAAAL,GAAyBR,EAAA+B,MAAA,sBAAkCxD,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,uBAA4BlD,EAAA,MAAAyB,EAAAX,GAAA,mBAAAW,EAAAX,GAAA,KAAAd,EAAA,OAA2D1B,IAAIgE,MAAA,SAAAL,GAAyBR,EAAA+B,MAAA,oBAA4BxD,EAAA,QAAAA,EAAA,qBAAqCE,OAAOgD,KAAA,kBAAuBlD,EAAA,MAAAyB,EAAAX,GAAA,yBAAAW,EAAAX,GAAA,KAAAd,EAAA,OAAiEE,OAAOC,GAAA,YAAesB,EAAAqC,GAAArC,EAAA,cAAAsC,GAAkC,OAAA/D,EAAA,OAAAyB,EAAAX,GAAAW,EAAAV,GAAAgD,QAAuCtC,EAAAX,GAAA,KAAAW,EAAAnE,kBAAyHmE,EAAAuC,KAAzHhE,EAAA,OAAiDE,OAAOC,GAAA,YAAesB,EAAAX,GAAA,MAAAd,EAAA,QAA0Ba,YAAA,cAAwBY,EAAAX,GAAA,aAAAW,EAAAX,GAAA,KAAAd,EAAA,OAAqDE,OAAOC,GAAA,YAAeH,EAAA,OAAAyB,EAAAX,GAAAW,EAAAV,GAAAlD,KAAAoG,aAAAC,SAAA,IAAAzC,EAAAV,GAAAlD,KAAAoG,aAAAE,SAAA,MAAAnE,EAAA,QAA4G+C,MAAAtB,EAAAjD,SAAiBiD,EAAAX,GAAAW,EAAAV,GAAAU,EAAAjD,kBAE57B8B,oBCCjB,ICgBA8D,GACAhE,KAAA,cACAsC,YAAA2B,KAAAV,EAAAW,QDlBA9D,EAAA,OAcA+D,EFUAnE,KAAA,UACAc,OAAA,4BACAsD,OAQA/G,KAAA,SAAAgH,EAAAC,GACA7G,KAAA8G,UAAA,WACA9G,KAAA+G,IAAAC,UAAAhH,KAAA+G,IAAAE,gBAUAxH,kBAAA,SAAAmH,EAAAC,GACA,GAAAD,GACA5G,KAAA8G,UAAA,WACA9G,KAAA+G,IAAAC,UAAAhH,KAAA+G,IAAAE,iBAKA5F,UACAV,OAAA,WACA,OAAAX,KAAA4B,MAAAsF,aAAA,uBExCAlB,GATA,EAVA,SAAAlD,GACAH,EAAA,SAaA,kBAEA,MAUA,SCJAnD,KAAA2H,EAAA,KACAtH,QAAAsH,EAAA,QACA5G,QAAA4G,EAAA,SCrBAC,GADiBpF,OAFjB,WAA0B,IAAaC,EAAbjC,KAAakC,eAA0BC,EAAvCnC,KAAuCoC,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBE,OAAOC,GAAA,eAAkBH,EAAA,cAAmBE,OAAOE,KAAA,gBAAqBJ,EAA5JnC,KAA4JN,kBAA2B4F,IAAA,YAAAjD,OAAuB5C,kBAA9MO,KAA8MP,kBAAAG,KAA9MI,KAA8MJ,MAA0Da,IAAKoF,KAA7Q7F,KAA6QF,eAAAM,YAA7QJ,KAA6QI,YAAAE,aAA7QN,KAA6QM,iBAAyF,QAE/WmC,oBCCjB,IAuBA4E,EAvBA1E,EAAA,OAcA2E,CACAf,EACAa,GATA,EAVA,SAAAtE,GACAH,EAAA,SAaA,kBAEA,MAUA,QCpBA4E,EAAA,EAAIC,IAAIC,EAAA,GAER,IAAAC,EAAA,IAAmBD,EAAA,GACjBjF,KAAM,UACNmF,SAEIC,KAAM,IACNrF,KAAM,OACNnB,UAAWmE,IAGXqC,KAAM,SACNrF,KAAM,QACNnB,UAAWuD,IAGXiD,KAAM,WACNrF,KAAM,cACNnB,UAAWiG,gDCtBjBQ,GACEC,QAAS,SAACC,GAERA,EAAIC,UAAU5B,cACfC,QAAS4B,EAAAC,EAAK3F,KACZ+D,QAAS2B,EAAAC,EAAK5B,4CCGnBiB,EAAA,EAAIC,IAAIW,EAAAD,GACRX,EAAA,EAAIC,IAAIK,GACRN,EAAA,EAAIC,IAAIY,EAAAF,EAAa,SAErBX,EAAA,EAAInG,UAAU,oBAAqBiH,EAAA,iBACnCd,EAAA,EAAIe,OAAOC,eAAgB,EAG3B,IAAIhB,EAAA,GACFiB,GAAI,OACJd,SACA7C,YAAc4D,IAAA/F,GACdgG,SAAU,SACVlJ,KAAM,WACJ,OACEqC,YAAY,EACZqF,cAAc,EACdpF,WAAW,IAGfjC,SAQE8I,aAAc,SAAUpE,EAAUC,EAAUoE,GAAU,IAAApI,EAAAR,KAChD6I,GAAStE,SAAUA,EAAUC,SAAUA,GAC3CxE,KAAKC,QAAQC,KAAK,iBAAkB2I,GAEpC7I,KAAKC,QAAQQ,GAAG,gBAAiB,WAC/BD,EAAKsI,QAAQC,IAAI,WAAYxE,GAAYyE,QAAS,OAClDxI,EAAKsI,QAAQC,IAAI,WAAYvE,GAAYwE,QAAS,OAClDxI,EAAKqB,YAAa,EAEM,mBAAb+G,GAAyBA,GAAS,EAAM,QAGrD5I,KAAKC,QAAQQ,GAAG,eAAgB,SAACI,GACP,mBAAb+H,GAAyBA,GAAS,EAAO/H,EAAMC,aAIhEP,QAAS,WAAW,IAAA0I,EAAAjJ,KAElBA,KAAKC,QAAQQ,GAAG,SAAU,SAAAC,GACxBuI,EAAK/B,aAAexG,EAASwI,QACL,YAApBD,EAAKE,OAAOvB,MACdqB,EAAKpG,QAAQ1C,KAAK,cAItBH,KAAKC,QAAQQ,GAAG,UAAW,WACzBwI,EAAKnH,WAAY,IAGnB9B,KAAKC,QAAQQ,GAAG,aAAc,WAC5BwI,EAAKpH,YAAa,EAClBoH,EAAK/B,cAAe,EACpB+B,EAAKnH,WAAY,EACjBmH,EAAKpG,QAAQ1C,KAAK,OAGpB,IAAIoE,EAAWvE,KAAK8I,QAAQM,IAAI,YAC5B5E,EAAWxE,KAAK8I,QAAQM,IAAI,iBAEhBC,GAAZ9E,GAAqC,MAAZA,GAC3BvE,KAAK2I,aAAapE,EAAUC,0BC/ElC8E,EAAA/J,SAAkBgD,KAAA,QAAA+D,QAAA,QAAAiD,YAAA,4CAAAC,OAAA,yCAAAC,QAAA,WAAAC,SAAA,EAAAC,YAA+L3F,KAAA,MAAA4F,IAAA,kCAAoDC,SAAY/B,QAAA,mDAAAgC,eAAA,2BAAAC,eAAA,2BAAAC,WAAA,2BAAAC,WAAA,2BAAAC,MAAA,6BAAAC,MAAA,6BAAAC,MAAA,kEAAAC,MAAA,gFAAAC,MAAA,mICEjR/K,EAAQC,KAAO,WACb,OACE+E,SAAU,GACVC,SAAU,KAIdjF,EAAQM,SAON6E,OAAQ,WAAY,IAAAlE,EAAAR,KAClBA,KAAK4B,MAAM+G,aAAa3I,KAAKuE,SAAUvE,KAAKwE,SAAU,SAAC7D,EAAQG,GAC7DN,EAAKmF,MAAM,qBAAsBhF,EAAQG,OAK/CvB,EAAQoC,QAAU","file":"static/js/app.ff26e31b087bf2adab86.js","sourcesContent":["'use strict'\n\nexports.data = function() {\n return {\n commandInprogress: false,\n overlayComponent: 'Console',\n menuHidden: true,\n logs: []\n }\n}\n\nexports.methods = {\n /**\n * Requests the server to perform the specified command.\n *\n * The response can be caught by listening on 'command'.\n *\n * @param String command The command to perform.\n */\n performCommand: function (command) {\n this.$socket.emit('client:perform', { command: command });\n this.logs.push(\"$ \" + command);\n this.showConsole(true);\n this.commandInprogress = true;\n },\n /**\n * Toggles the console.\n *\n * @param Boolean value \tTrue to show the console, otherwise false.\n */\n showConsole: function (value) {\n this.overlayComponent = (value) ? 'Console' : 'Menu';\n this.menuHidden = value;\n },\n /**\n * Clears the console.\n */\n clearConsole: function () {\n this.logs = [];\n },\n}\n\nexports.created = function() {\n this.$socket.on('command', response => {\n if (response.status == 1) {\n this.logs.push(response.result);\n } else if (response.status == 0) {\n this.logs.push(response.error.message);\n } else {\n this.commandInprogress = false;\n\n let timer = setInterval( () => {\n clearInterval(timer);\n this.$socket.emit('client:status', null);\n }, 1000);\n }\n });\n\n this.$socket.on('history', response => {\n if (response.status == 1) {\n response.result.forEach(item => {\n \t\t\tthis.logs.push(item.message);\n \t\t});\n }\n });\n\n this.$socket.emit('client:history', null);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Console/Main.js","'use strict'\n\nexports.data = function () {\n return {\n message: 'Initializing...',\n component: 'Splash'\n }\n}\n\nexports.computed = {\n /**\n * Determines if the current view is on login or not.\n *\n * This function is used to make sure the design is responsive.\n *\n * @return Boolean True if the view is Login.\n */\n onLogin: function () {\n return (this.component == 'Login')\n },\n /**\n * Determines if the current view is empty.\n *\n * This function is used to make sure the design is responsive.\n *\n * @return Boolean True if the view is Login.\n */\n onEmpty: function () {\n return (this.component == '')\n }\n}\n\nexports.methods = {\n /**\n * Invoked by the Login component on an authentication attempt.\n *\n * This function is responsible for changing router view to\n * /console, if the login was successful.\n *\n * @param Boolean didSucced True if the login was successful,\n * otherwise false.\n * @param String message The error message on failure.\n */\n handleAuthResponse: function (didSucceed, message) {\n if (didSucceed) {\n this.requestStatusCheck();\n } else {\n this.message = message;\n }\n },\n /**\n * Requests a status check from the server. Invoked after the user\n * has been authenticated.\n *\n * The Vue root instance is responsible for handling the response.\n */\n requestStatusCheck: function () {\n this.$socket.emit('client:status', null);\n }\n}\n\nexports.mounted = function () {\n let timer = setInterval( () => {\n if (this.$root.isLoggedIn == false) {\n if (this.$root.connected) {\n clearInterval(timer);\n this.component = 'Login';\n this.message = '';\n } else {\n this.message = 'Server not responding...';\n }\n } else {\n clearInterval(timer);\n this.requestStatusCheck();\n }\n }, 1000);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Main/Main.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('transition',{attrs:{\"name\":\"slide\",\"mode\":\"out-in\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-bc46a0f0\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-bc46a0f0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-bc46a0f0\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"animation\"},[_vm._v(_vm._s(_vm.message))])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7dfe688f\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Main/Splash.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7dfe688f\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Splash.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Splash.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Splash.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7dfe688f\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Splash.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7dfe688f\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Main/Splash.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Main/Splash.vue","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Login/Main.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"loginBox\"}},[_c('div',{staticClass:\"input\"},[_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],attrs:{\"type\":\"text\",\"name\":\"username\",\"placeholder\":\"Username\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}})]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\",\"name\":\"password\",\"placeholder\":\"Password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),_c('div',[_c('div',{staticClass:\"button noselect\",on:{\"click\":_vm.signIn}},[_vm._v(\"Sign in\")])]),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.message)+\" \")])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-9595acea\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Login/Main.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-9595acea\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Main.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9595acea\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Main.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-9595acea\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Login/Main.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Main/Main.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"wrapper\"}},[_c('div',{staticClass:\"title\",class:{ 'title-login': _vm.onLogin, 'title-empty': _vm.onEmpty }},[_c('font-awesome-icon',{attrs:{\"icon\":\"robot\"}}),_c('br'),_vm._v(\"Raspbot\\n \")],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"slide-up\"}},[_c(_vm.component,{tag:\"component\",attrs:{\"message\":_vm.message},on:{\"handleAuthResponse\":_vm.handleAuthResponse}})],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7542002e\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Main/Main.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7542002e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!@/components/Main/Main.css\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7542002e\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Main.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7542002e\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Main/Main.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Menu/Main.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"container\"},[_c('div',{attrs:{\"id\":\"updateMenu\"}},[_c('div',{on:{\"click\":function($event){_vm.$emit('showConsole', true)}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"terminal\"}}),_c('br'),_vm._v(\"Show Console\")],1)]),_vm._v(\" \"),_c('div',{staticClass:\"grouped\"},[_c('div',{class:{inactive: _vm.commandInprogress},on:{\"click\":function($event){_vm.call('update')}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"cloud-download-alt\"}}),_c('br'),_vm._v(\"Update\")],1)]),_vm._v(\" \"),_c('div',{class:{inactive: _vm.commandInprogress},on:{\"click\":function($event){_vm.call('install')}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"cog\"}}),_c('br'),_vm._v(\"Install\")],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"grouped\"},[_c('div',{class:{inactive: _vm.commandInprogress},on:{\"click\":function($event){_vm.call('restart')}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"redo-alt\"}}),_c('br'),_vm._v(\"(Re)start\")],1)]),_vm._v(\" \"),_c('div',{class:{inactive: _vm.commandInprogress},on:{\"click\":function($event){_vm.call('stop')}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"plug\"}}),_c('br'),_vm._v(\"Stop\")],1)])]),_vm._v(\" \"),_c('div',{class:{inactive: _vm.commandInprogress},on:{\"click\":function($event){_vm.call('shutdown')}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"power-off\"}}),_c('br'),_vm._v(\"Exit Updater\")],1)])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1c8e22cf\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Menu/Main.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1c8e22cf\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!@/components/Menu/Main.css\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1c8e22cf\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Main.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1c8e22cf\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Menu/Main.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Console/Console.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"console\"}},[_c('div',{attrs:{\"id\":\"panel\"}},[_c('div',{on:{\"click\":function($event){_vm.$emit('showConsole', false)}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"caret-square-down\"}}),_c('br'),_vm._v(\"Show menu\")],1)]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){_vm.$emit('clearConsole')}}},[_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"minus-square\"}}),_c('br'),_vm._v(\"Clear console\")],1)])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"output\"}},[_vm._l((_vm.logs),function(log){return _c('pre',[_vm._v(_vm._s(log))])}),_vm._v(\" \"),(!_vm.commandInprogress)?_c('pre',{attrs:{\"id\":\"cursor\"}},[_vm._v(\"$ \"),_c('span',{staticClass:\"animation\"},[_vm._v(\"_\")])]):_vm._e()],2),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"footer\"}},[_c('div',[_vm._v(_vm._s(this.$Application.appName)+\" \"+_vm._s(this.$Application.version)+\": \"),_c('span',{class:_vm.status},[_vm._v(_vm._s(_vm.status))])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1ff612e3\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Console/Console.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1ff612e3\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!@/components/Console/Console.css\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Console.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Console.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1ff612e3\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Console.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1ff612e3\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Console/Console.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Console/Main.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{attrs:{\"id\":\"container\"}},[_c('transition',{attrs:{\"name\":\"slide-menu\"}},[_c(_vm.overlayComponent,{tag:\"component\",attrs:{\"commandInprogress\":_vm.commandInprogress,\"logs\":_vm.logs},on:{\"call\":_vm.performCommand,\"showConsole\":_vm.showConsole,\"clearConsole\":_vm.clearConsole}})],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-56e72c6a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Console/Main.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-56e72c6a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!@/components/Console/Main.css\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-56e72c6a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Main.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-56e72c6a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Console/Main.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Router from 'vue-router'\nimport Main from '@/components/Main/Main.vue'\nimport Login from '@/components/Login/Main.vue'\nimport Console from '@/components/Console/Main.vue'\n\nVue.use(Router);\n\nexport default new Router({\n mode: 'history',\n routes: [\n {\n path: '/',\n name: 'Main',\n component: Main\n },\n {\n path: '/login',\n name: 'Login',\n component: Login\n },\n {\n path: '/console',\n name: 'ConsoleMain',\n component: Console\n }\n ]\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import json from '@/../../../package.json'\n\nexport default {\n install: (Vue) => {\n\n Vue.prototype.$Application = {\n\t\t\tappName: json.name,\n\t version: json.version\n\t\t}\n\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/Application.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue';\nimport App from './App';\nimport router from './router';\nimport VueCookie from 'vue-cookie';\nimport Application from '@/shared/Application.js';\nimport VueSocketio from 'vue-socket.io';\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\n\nVue.use(VueCookie);\nVue.use(Application);\nVue.use(VueSocketio, process.env.SOCKET_URL);\n\nVue.component('font-awesome-icon', FontAwesomeIcon);\nVue.config.productionTip = false;\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n components: { App },\n template: '',\n data: function() {\n return {\n isLoggedIn: false,\n serverStatus: false,\n connected: true\n }\n },\n methods: {\n /**\n * Attempts to authenticate with the server.\n *\n * @param String username The username.\n * @param String password The password.\n * @param Function callback A callback invoked on response.\n */\n authenticate: function (username, password, callback) {\n let auth = { username: username, password: password };\n this.$socket.emit('authentication', auth);\n\n this.$socket.on('authenticated', () => {\n this.$cookie.set('username', username, { expires: '1Y' });\n this.$cookie.set('password', password, { expires: '1Y' });\n this.isLoggedIn = true;\n\n if (typeof callback === 'function') callback(true, null);\n });\n\n this.$socket.on('unauthorized', (error) => {\n if (typeof callback === 'function') callback(false, error.message);\n });\n }\n },\n created: function() {\n // 'Status' events just tells if Raspy is running.\n this.$socket.on('status', response => {\n this.serverStatus = response.running;\n if (this.$route.path != '/console') {\n this._router.push('/console');\n }\n });\n\n this.$socket.on('connect', () => {\n this.connected = true;\n });\n\n this.$socket.on('disconnect', () => {\n this.isLoggedIn = false;\n this.serverStatus = false;\n this.connected = false;\n this._router.push('/');\n });\n\n let username = this.$cookie.get('username');\n let password = this.$cookie.get('password');\n\n if (username != undefined || username != null) {\n this.authenticate(username, password);\n }\n }\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","module.exports = {\"name\":\"raspy\",\"version\":\"0.2.2\",\"description\":\"Raspy lets you control your Raspberry Pi.\",\"author\":\"Ardalan Samimi \",\"license\":\"AGPL-3.0\",\"private\":true,\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/pkrll/raspy\"},\"scripts\":{\"install\":\"npm run install_client && npm run install_server\",\"install_client\":\"cd client && npm install\",\"install_server\":\"cd server && npm install\",\"dev_server\":\"cd server && npm run dev\",\"dev_client\":\"cd client && npm run dev\",\"setup\":\"cd server && npm run setup\",\"build\":\"cd client && npm run build\",\"patch\":\"node .scripts/increment-version.js --version=patch --skip-build\",\"minor\":\"node .scripts/increment-version.js --version=minor --skip-build --reset-patch\",\"major\":\"node .scripts/increment-version.js --version=major --skip-build --reset-minor --reset-patch\"}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/ardalansamimi/Public/Git/Raspy/package.json\n// module id = OjAK\n// module chunks = 0","'use strict'\n\nexports.data = function () {\n return {\n username: '',\n password: ''\n }\n}\n\nexports.methods = {\n /**\n * Invoked when the user presses the sign in button.\n *\n * This function sends an authentication request to\n * the server.\n */\n signIn: function () {\n this.$root.authenticate(this.username, this.password, (status, message) => {\n this.$emit('handleAuthResponse', status, message);\n });\n }\n}\n\nexports.mounted = function () {\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Login/Main.js"],"sourceRoot":""} \ No newline at end of file diff --git a/bootstrapper/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js b/bootstrapper/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js deleted file mode 100644 index 20fc5d9..0000000 --- a/bootstrapper/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a-1}var o={name:"router-view",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,i=e.parent,o=e.data;o.routerView=!0;for(var a=i.$createElement,s=n.name,c=i.$route,u=i._routerViewCache||(i._routerViewCache={}),f=0,l=!1;i&&i._routerRoot!==i;)i.$vnode&&i.$vnode.data.routerView&&f++,i._inactive&&(l=!0),i=i.$parent;if(o.routerViewDepth=f,l)return a(u[s],o,r);var p=c.matched[f];if(!p)return u[s]=null,a();var h=u[s]=p.components[s];o.registerRouteInstance=function(t,e){var n=p.instances[s];(e&&n!==t||!e&&n===t)&&(p.instances[s]=e)},(o.hook||(o.hook={})).prepatch=function(t,e){p.instances[s]=e.componentInstance};var d=o.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(c,p.props&&p.props[s]);if(d){d=o.props=function(t,e){for(var n in e)t[n]=e[n];return t}({},d);var v=o.attrs=o.attrs||{};for(var m in d)h.props&&m in h.props||(v[m]=d[m],delete d[m])}return a(h,o,r)}};var a=/[!'()*]/g,s=function(t){return"%"+t.charCodeAt(0).toString(16)},c=/%2C/g,u=function(t){return encodeURIComponent(t).replace(a,s).replace(c,",")},f=decodeURIComponent;function l(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var n=t.replace(/\+/g," ").split("="),r=f(n.shift()),i=n.length>0?f(n.join("=")):null;void 0===e[r]?e[r]=i:Array.isArray(e[r])?e[r].push(i):e[r]=[e[r],i]}),e):e}function p(t){var e=t?Object.keys(t).map(function(e){var n=t[e];if(void 0===n)return"";if(null===n)return u(e);if(Array.isArray(n)){var r=[];return n.forEach(function(t){void 0!==t&&(null===t?r.push(u(e)):r.push(u(e)+"="+u(t)))}),r.join("&")}return u(e)+"="+u(n)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}var h=/\/?$/;function d(t,e,n,r){var i=r&&r.options.stringifyQuery,o=e.query||{};try{o=v(o)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:o,params:e.params||{},fullPath:y(e,i),matched:t?function(t){var e=[];for(;t;)e.unshift(t),t=t.parent;return e}(t):[]};return n&&(a.redirectedFrom=y(n,i)),Object.freeze(a)}function v(t){if(Array.isArray(t))return t.map(v);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=v(t[n]);return e}return t}var m=d(null,{path:"/"});function y(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var i=t.hash;return void 0===i&&(i=""),(n||"/")+(e||p)(r)+i}function g(t,e){return e===m?t===e:!!e&&(t.path&&e.path?t.path.replace(h,"")===e.path.replace(h,"")&&t.hash===e.hash&&b(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&b(t.query,e.query)&&b(t.params,e.params)))}function b(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every(function(n){var r=t[n],i=e[n];return"object"==typeof r&&"object"==typeof i?b(r,i):String(r)===String(i)})}var w,_=[String,Object],x=[String,Array],k={name:"router-link",props:{to:{type:_,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:x,default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),o=i.location,a=i.route,s=i.href,c={},u=n.options.linkActiveClass,f=n.options.linkExactActiveClass,l=null==u?"router-link-active":u,p=null==f?"router-link-exact-active":f,v=null==this.activeClass?l:this.activeClass,m=null==this.exactActiveClass?p:this.exactActiveClass,y=o.path?d(null,o,null,n):a;c[m]=g(r,y),c[v]=this.exact?c[m]:function(t,e){return 0===t.path.replace(h,"/").indexOf(e.path.replace(h,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,y);var b=function(t){A(t)&&(e.replace?n.replace(o):n.push(o))},_={click:A};Array.isArray(this.event)?this.event.forEach(function(t){_[t]=b}):_[this.event]=b;var x={class:c};if("a"===this.tag)x.on=_,x.attrs={href:s};else{var k=function t(e){if(e)for(var n,r=0;r=0&&(e=t.slice(r),t=t.slice(0,r));var i=t.indexOf("?");return i>=0&&(n=t.slice(i+1),t=t.slice(0,i)),{path:t,query:n,hash:e}}(i.path||""),c=e&&e.path||"/",u=s.path?S(s.path,c,n||i.append):c,f=function(t,e,n){void 0===e&&(e={});var r,i=n||l;try{r=i(t||"")}catch(t){r={}}for(var o in e)r[o]=e[o];return r}(s.query,i.query,r&&r.options.parseQuery),p=i.hash||s.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:u,query:f,hash:p}}function J(t,e){for(var n in e)t[n]=e[n];return t}function Y(t,e){var n=X(t),r=n.pathList,i=n.pathMap,o=n.nameMap;function a(t,n,a){var s=K(t,n,!1,e),u=s.name;if(u){var f=o[u];if(!f)return c(null,s);var l=f.regex.keys.filter(function(t){return!t.optional}).map(function(t){return t.name});if("object"!=typeof s.params&&(s.params={}),n&&"object"==typeof n.params)for(var p in n.params)!(p in s.params)&&l.indexOf(p)>-1&&(s.params[p]=n.params[p]);if(f)return s.path=W(f.path,s.params),c(f,s,a)}else if(s.path){s.params={};for(var h=0;h=t.length?n():t[i]?e(t[i],function(){r(i+1)}):r(i+1)};r(0)}function vt(t){return function(e,n,r){var o=!1,a=0,s=null;mt(t,function(t,e,n,c){if("function"==typeof t&&void 0===t.cid){o=!0,a++;var u,f=bt(function(e){var i;((i=e).__esModule||gt&&"Module"===i[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:w.extend(e),n.components[c]=e,--a<=0&&r()}),l=bt(function(t){var e="Failed to resolve async component "+c+": "+t;s||(s=i(t)?t:new Error(e),r(s))});try{u=t(f,l)}catch(t){l(t)}if(u)if("function"==typeof u.then)u.then(f,l);else{var p=u.component;p&&"function"==typeof p.then&&p.then(f,l)}}}),o||r()}}function mt(t,e){return yt(t.map(function(t){return Object.keys(t.components).map(function(n){return e(t.components[n],t.instances[n],t,n)})}))}function yt(t){return Array.prototype.concat.apply([],t)}var gt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function bt(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var wt=function(t,e){this.router=t,this.base=function(t){if(!t)if(O){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function _t(t,e,n,r){var i=mt(t,function(t,r,i,o){var a=function(t,e){"function"!=typeof t&&(t=w.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map(function(t){return n(t,r,i,o)}):n(a,r,i,o)});return yt(r?i.reverse():i)}function xt(t,e){if(e)return function(){return t.apply(e,arguments)}}wt.prototype.listen=function(t){this.cb=t},wt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},wt.prototype.onError=function(t){this.errorCbs.push(t)},wt.prototype.transitionTo=function(t,e,n){var r=this,i=this.router.match(t,this.current);this.confirmTransition(i,function(){r.updateRoute(i),e&&e(i),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach(function(t){t(i)}))},function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach(function(e){e(t)}))})},wt.prototype.confirmTransition=function(t,e,n){var o=this,a=this.current,s=function(t){i(t)&&(o.errorCbs.length?o.errorCbs.forEach(function(e){e(t)}):(r(),console.error(t))),n&&n(t)};if(g(t,a)&&t.matched.length===a.matched.length)return this.ensureURL(),s();var c=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n=0?e.slice(0,n):e)+"#"+t}function Tt(t){st?pt(Et(t)):window.location.hash=t}function $t(t){st?ht(Et(t)):window.location.replace(Et(t))}var jt=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)},n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)},n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,function(){e.index=n,e.updateRoute(r)})}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(wt),Nt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Y(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!st&&!1!==t.fallback,this.fallback&&(e="hash"),O||(e="abstract"),this.mode=e,e){case"history":this.history=new kt(this,t.base);break;case"hash":this.history=new Ct(this,t.base,this.fallback);break;case"abstract":this.history=new jt(this,t.base);break;default:0}},Pt={currentRoute:{configurable:!0}};function Rt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Nt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Pt.currentRoute.get=function(){return this.history&&this.history.current},Nt.prototype.init=function(t){var e=this;if(this.apps.push(t),!this.app){this.app=t;var n=this.history;if(n instanceof kt)n.transitionTo(n.getCurrentLocation());else if(n instanceof Ct){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},Nt.prototype.beforeEach=function(t){return Rt(this.beforeHooks,t)},Nt.prototype.beforeResolve=function(t){return Rt(this.resolveHooks,t)},Nt.prototype.afterEach=function(t){return Rt(this.afterHooks,t)},Nt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Nt.prototype.onError=function(t){this.history.onError(t)},Nt.prototype.push=function(t,e,n){this.history.push(t,e,n)},Nt.prototype.replace=function(t,e,n){this.history.replace(t,e,n)},Nt.prototype.go=function(t){this.history.go(t)},Nt.prototype.back=function(){this.go(-1)},Nt.prototype.forward=function(){this.go(1)},Nt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},Nt.prototype.resolve=function(t,e,n){var r=K(t,e||this.history.current,n,this),i=this.match(r,e),o=i.redirectedFrom||i.fullPath;return{location:r,route:i,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?E(t+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:i}},Nt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Nt.prototype,Pt),Nt.install=C,Nt.version="3.0.1",O&&window.Vue&&window.Vue.use(Nt),e.a=Nt},"2DS2":function(t,e,n){var r,i; -/*! - * tiny-cookie - A tiny cookie manipulation plugin - * https://github.com/Alex1990/tiny-cookie - * Under the MIT license | (c) Alex Chao - */void 0===(i="function"==typeof(r=function(){"use strict";function t(e,n,r){if(void 0===n)return t.get(e);null===n?t.remove(e):t.set(e,n,r)}function e(t){var e="";for(var r in t)if(t.hasOwnProperty(r)){if("expires"===r){var i=t[r];"object"!=typeof i&&(i=n(i+="number"==typeof i?"D":"")),t[r]=i.toUTCString()}if("secure"===r){t[r]&&(e+=";"+r);continue}e+=";"+r+"="+t[r]}return t.hasOwnProperty("path")||(e+=";path=/"),e}function n(t){var e=new Date,n=t.charAt(t.length-1),r=parseInt(t,10);switch(n){case"Y":e.setFullYear(e.getFullYear()+r);break;case"M":e.setMonth(e.getMonth()+r);break;case"D":e.setDate(e.getDate()+r);break;case"h":e.setHours(e.getHours()+r);break;case"m":e.setMinutes(e.getMinutes()+r);break;case"s":e.setSeconds(e.getSeconds()+r);break;default:e=new Date(t)}return e}return t.enabled=function(){var e,n="__test_key";return document.cookie=n+"=1",(e=!!document.cookie)&&t.remove(n),e},t.get=function(t,e){if("string"!=typeof t||!t)return null;t="(?:^|; )"+t.replace(/[.*+?^$|[\](){}\\-]/g,"\\$&")+"(?:=([^;]*?))?(?:;|$)";var n=new RegExp(t).exec(document.cookie);return null!==n?e?n[1]:decodeURIComponent(n[1]):null},t.getRaw=function(e){return t.get(e,!0)},t.set=function(t,n,r,i){!0!==r&&(i=r,r=!1),i=e(i||{});var o=t+"="+(r?n:encodeURIComponent(n))+i;document.cookie=o},t.setRaw=function(e,n,r){t.set(e,n,!0,r)},t.remove=function(e){t.set(e,"a",{expires:new Date})},t})?r.call(e,n,e,t):r)||(t.exports=i)},"7+uW":function(t,e,n){"use strict";(function(t){ -/*! - * Vue.js v2.5.16 - * (c) 2014-2018 Evan You - * Released under the MIT License. - */ -var n=Object.freeze({});function r(t){return void 0===t||null===t}function i(t){return void 0!==t&&null!==t}function o(t){return!0===t}function a(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function s(t){return null!==t&&"object"==typeof t}var c=Object.prototype.toString;function u(t){return"[object Object]"===c.call(t)}function f(t){return"[object RegExp]"===c.call(t)}function l(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function h(t){var e=parseFloat(t);return isNaN(e)?t:e}function d(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i-1)return t.splice(n,1)}}var g=Object.prototype.hasOwnProperty;function b(t,e){return g.call(t,e)}function w(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var _=/-(\w)/g,x=w(function(t){return t.replace(_,function(t,e){return e?e.toUpperCase():""})}),k=w(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),A=/\B([A-Z])/g,C=w(function(t){return t.replace(A,"-$1").toLowerCase()});var O=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function S(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function E(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n0,Z=K&&K.indexOf("edge/")>0,G=(K&&K.indexOf("android"),K&&/iphone|ipad|ipod|ios/.test(K)||"ios"===X),Q=(K&&/chrome\/\d+/.test(K),{}.watch),tt=!1;if(V)try{var et={};Object.defineProperty(et,"passive",{get:function(){tt=!0}}),window.addEventListener("test-passive",null,et)}catch(t){}var nt=function(){return void 0===F&&(F=!V&&!W&&void 0!==t&&"server"===t.process.env.VUE_ENV),F},rt=V&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function it(t){return"function"==typeof t&&/native code/.test(t.toString())}var ot,at="undefined"!=typeof Symbol&&it(Symbol)&&"undefined"!=typeof Reflect&&it(Reflect.ownKeys);ot="undefined"!=typeof Set&&it(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var st=$,ct=0,ut=function(){this.id=ct++,this.subs=[]};ut.prototype.addSub=function(t){this.subs.push(t)},ut.prototype.removeSub=function(t){y(this.subs,t)},ut.prototype.depend=function(){ut.target&&ut.target.addDep(this)},ut.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e-1)if(o&&!b(i,"default"))a=!1;else if(""===a||a===C(t)){var c=Ut(String,i.type);(c<0||s0&&(fe((u=t(u,(n||"")+"_"+c))[0])&&fe(l)&&(s[f]=mt(l.text+u[0].text),u.shift()),s.push.apply(s,u)):a(u)?fe(l)?s[f]=mt(l.text+u):""!==u&&s.push(mt(u)):fe(u)&&fe(l)?s[f]=mt(l.text+u.text):(o(e._isVList)&&i(u.tag)&&r(u.key)&&i(n)&&(u.key="__vlist"+n+"_"+c+"__"),s.push(u)));return s}(t):void 0}function fe(t){return i(t)&&i(t.text)&&!1===t.isComment}function le(t,e){return(t.__esModule||at&&"Module"===t[Symbol.toStringTag])&&(t=t.default),s(t)?e.extend(t):t}function pe(t){return t.isComment&&t.asyncFactory}function he(t){if(Array.isArray(t))for(var e=0;eTe&&Ae[n].id>t.id;)n--;Ae.splice(n+1,0,t)}else Ae.push(t);Se||(Se=!0,te($e))}}(this)},Ne.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){qt(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},Ne.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Ne.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},Ne.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var Pe={enumerable:!0,configurable:!0,get:$,set:$};function Re(t,e,n){Pe.get=function(){return this[e][n]},Pe.set=function(t){this[e][n]=t},Object.defineProperty(t,n,Pe)}function Me(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[];t.$parent&&xt(!1);var o=function(o){i.push(o);var a=It(o,e,n,t);St(r,o,a),o in t||Re(t,"_props",o)};for(var a in e)o(a);xt(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?$:O(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;u(e=t._data="function"==typeof e?function(t,e){lt();try{return t.call(e,e)}catch(t){return qt(t,e,"data()"),{}}finally{pt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,i=(t.$options.methods,n.length);for(;i--;){var o=n[i];0,r&&b(r,o)||z(o)||Re(t,"_data",o)}Ot(e,!0)}(t):Ot(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=nt();for(var i in e){var o=e[i],a="function"==typeof o?o:o.get;0,r||(n[i]=new Ne(t,a||$,$,Le)),i in t||Be(t,i,o)}}(t,e.computed),e.watch&&e.watch!==Q&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i=0||n.indexOf(t[i])<0)&&r.push(t[i]);return r}return t}function pn(t){this._init(t)}function hn(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var o=t.name||n.options.name;var a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Lt(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)Re(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)Be(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,B.forEach(function(t){a[t]=n[t]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=E({},a.options),i[r]=a,a}}function dn(t){return t&&(t.Ctor.options.name||t.tag)}function vn(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function mn(t,e){var n=t.cache,r=t.keys,i=t._vnode;for(var o in n){var a=n[o];if(a){var s=dn(a.componentOptions);s&&!e(s)&&yn(n,o,r,i)}}}function yn(t,e,n,r){var i=t[e];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),t[e]=null,y(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=un++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r,n._parentElm=e._parentElm,n._refElm=e._refElm;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Lt(fn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&me(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,r=t.$vnode=e._parentVnode,i=r&&r.context;t.$slots=ye(e._renderChildren,i),t.$scopedSlots=n,t._c=function(e,n,r,i){return cn(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return cn(t,e,n,r,i,!0)};var o=r&&r.data;St(t,"$attrs",o&&o.attrs||n,null,!0),St(t,"$listeners",e._parentListeners||n,null,!0)}(e),ke(e,"beforeCreate"),function(t){var e=ze(t.$options.inject,t);e&&(xt(!1),Object.keys(e).forEach(function(n){St(t,n,e[n])}),xt(!0))}(e),Me(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),ke(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(pn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=Et,t.prototype.$delete=Tt,t.prototype.$watch=function(t,e,n){if(u(e))return De(this,t,e,n);(n=n||{}).user=!0;var r=new Ne(this,t,e,n);return n.immediate&&e.call(this,r.value),function(){r.teardown()}}}(pn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){if(Array.isArray(t))for(var r=0,i=t.length;r1?S(n):n;for(var r=S(arguments,1),i=0,o=n.length;iparseInt(this.max)&&yn(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return D}};Object.defineProperty(t,"config",e),t.util={warn:st,extend:E,mergeOptions:Lt,defineReactive:St},t.set=Et,t.delete=Tt,t.nextTick=te,t.options=Object.create(null),B.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,E(t.options.components,bn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=S(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Lt(this.options,t),this}}(t),hn(t),function(t){B.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}(t)}(pn),Object.defineProperty(pn.prototype,"$isServer",{get:nt}),Object.defineProperty(pn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(pn,"FunctionalRenderContext",{value:Qe}),pn.version="2.5.16";var wn=d("style,class"),_n=d("input,textarea,option,select,progress"),xn=function(t,e,n){return"value"===n&&_n(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},kn=d("contenteditable,draggable,spellcheck"),An=d("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Cn="http://www.w3.org/1999/xlink",On=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Sn=function(t){return On(t)?t.slice(6,t.length):""},En=function(t){return null==t||!1===t};function Tn(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=$n(r.data,e));for(;i(n=n.parent);)n&&n.data&&(e=$n(e,n.data));return function(t,e){if(i(t)||i(e))return jn(t,Nn(e));return""}(e.staticClass,e.class)}function $n(t,e){return{staticClass:jn(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function jn(t,e){return t?e?t+" "+e:t:e||""}function Nn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?rr(t,e,n):An(e)?En(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):kn(e)?t.setAttribute(e,En(n)||"false"===n?"false":"true"):On(e)?En(n)?t.removeAttributeNS(Cn,Sn(e)):t.setAttributeNS(Cn,e,n):rr(t,e,n)}function rr(t,e,n){if(En(n))t.removeAttribute(e);else{if(J&&!Y&&"TEXTAREA"===t.tagName&&"placeholder"===e&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var ir={create:er,update:er};function or(t,e){var n=e.elm,o=e.data,a=t.data;if(!(r(o.staticClass)&&r(o.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Tn(e),c=n._transitionClasses;i(c)&&(s=jn(s,Nn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var ar,sr,cr,ur,fr,lr,pr={create:or,update:or},hr=/[\w).+\-_$\]]/;function dr(t){var e,n,r,i,o,a=!1,s=!1,c=!1,u=!1,f=0,l=0,p=0,h=0;for(r=0;r=0&&" "===(v=t.charAt(d));d--);v&&hr.test(v)||(u=!0)}}else void 0===i?(h=r+1,i=t.slice(0,r).trim()):m();function m(){(o||(o=[])).push(t.slice(h,r).trim()),h=r+1}if(void 0===i?i=t.slice(0,r).trim():0!==h&&m(),o)for(r=0;r-1?{exp:t.slice(0,ur),key:'"'+t.slice(ur+1)+'"'}:{exp:t,key:null};sr=t,ur=fr=lr=0;for(;!Er();)Tr(cr=Sr())?jr(cr):91===cr&&$r(cr);return{exp:t.slice(0,fr),key:t.slice(fr+1,lr)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Sr(){return sr.charCodeAt(++ur)}function Er(){return ur>=ar}function Tr(t){return 34===t||39===t}function $r(t){var e=1;for(fr=ur;!Er();)if(Tr(t=Sr()))jr(t);else if(91===t&&e++,93===t&&e--,0===e){lr=ur;break}}function jr(t){for(var e=t;!Er()&&(t=Sr())!==e;);}var Nr,Pr="__r",Rr="__c";function Mr(t,e,n,r,i){var o;e=(o=e)._withTask||(o._withTask=function(){Yt=!0;var t=o.apply(null,arguments);return Yt=!1,t}),n&&(e=function(t,e,n){var r=Nr;return function i(){null!==t.apply(null,arguments)&&Lr(e,i,n,r)}}(e,t,r)),Nr.addEventListener(t,e,tt?{capture:r,passive:i}:r)}function Lr(t,e,n,r){(r||Nr).removeEventListener(t,e._withTask||e,n)}function Br(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Nr=e.elm,function(t){if(i(t[Pr])){var e=J?"change":"input";t[e]=[].concat(t[Pr],t[e]||[]),delete t[Pr]}i(t[Rr])&&(t.change=[].concat(t[Rr],t.change||[]),delete t[Rr])}(n),ae(n,o,Mr,Lr,e.context),Nr=void 0}}var Ir={create:Br,update:Br};function Dr(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,o,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in i(c.__ob__)&&(c=e.data.domProps=E({},c)),s)r(c[n])&&(a[n]="");for(n in c){if(o=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),o===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n){a._value=o;var u=r(o)?"":String(o);zr(a,u)&&(a.value=u)}else a[n]=o}}}function zr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.lazy)return!1;if(r.number)return h(n)!==h(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Ur={create:Dr,update:Dr},qr=w(function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach(function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}}),e});function Fr(t){var e=Hr(t.style);return t.staticStyle?E(t.staticStyle,e):e}function Hr(t){return Array.isArray(t)?T(t):"string"==typeof t?qr(t):t}var Vr,Wr=/^--/,Xr=/\s*!important$/,Kr=function(t,e,n){if(Wr.test(e))t.style.setProperty(e,n);else if(Xr.test(n))t.style.setProperty(e,n.replace(Xr,""),"important");else{var r=Yr(e);if(Array.isArray(n))for(var i=0,o=n.length;i-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function ti(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function ei(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&E(e,ni(t.name||"v")),E(e,t),e}return"string"==typeof t?ni(t):void 0}}var ni=w(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),ri=V&&!Y,ii="transition",oi="animation",ai="transition",si="transitionend",ci="animation",ui="animationend";ri&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ai="WebkitTransition",si="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ci="WebkitAnimation",ui="webkitAnimationEnd"));var fi=V?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function li(t){fi(function(){fi(t)})}function pi(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Qr(t,e))}function hi(t,e){t._transitionClasses&&y(t._transitionClasses,e),ti(t,e)}function di(t,e,n){var r=mi(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===ii?si:ui,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=ii,f=a,l=o.length):e===oi?u>0&&(n=oi,f=u,l=c.length):l=(n=(f=Math.max(a,u))>0?a>u?ii:oi:null)?n===ii?o.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:n===ii&&vi.test(r[ai+"Property"])}}function yi(t,e){for(;t.length1}function ki(t,e){!0!==e.data.show&&bi(e)}var Ai=function(t){var e,n,s={},c=t.modules,u=t.nodeOps;for(e=0;ed?b(t,r(n[y+1])?null:n[y+1].elm,n,h,y,o):h>y&&_(0,e,p,d)}(c,h,d,n,a):i(d)?(i(t.text)&&u.setTextContent(c,""),b(c,null,d,0,d.length-1,n)):i(h)?_(0,h,0,h.length-1):i(t.text)&&u.setTextContent(c,""):t.text!==e.text&&u.setTextContent(c,e.text),i(p)&&i(f=p.hook)&&i(f=f.postpatch)&&f(t,e)}}}function C(t,e,n){if(o(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==o&&(a.selected=o);else if(P(Ti(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function Ei(t,e){return e.every(function(e){return!P(e,t)})}function Ti(t){return"_value"in t?t._value:t.value}function $i(t){t.target.composing=!0}function ji(t){t.target.composing&&(t.target.composing=!1,Ni(t.target,"input"))}function Ni(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Pi(t){return!t.componentInstance||t.data&&t.data.transition?t:Pi(t.componentInstance._vnode)}var Ri={model:Ci,show:{bind:function(t,e,n){var r=e.value,i=(n=Pi(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,bi(n,function(){t.style.display=o})):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Pi(n)).data&&n.data.transition?(n.data.show=!0,r?bi(n,function(){t.style.display=t.__vOriginalDisplay}):wi(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}}},Mi={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Li(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Li(he(e.children)):t}function Bi(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[x(o)]=i[o];return e}function Ii(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Di={name:"transition",props:Mi,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(function(t){return t.tag||pe(t)})).length){0;var r=this.mode;0;var i=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return i;var o=Li(i);if(!o)return i;if(this._leaving)return Ii(t,i);var s="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?s+"comment":s+o.tag:a(o.key)?0===String(o.key).indexOf(s)?o.key:s+o.key:o.key;var c=(o.data||(o.data={})).transition=Bi(this),u=this._vnode,f=Li(u);if(o.data.directives&&o.data.directives.some(function(t){return"show"===t.name})&&(o.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(o,f)&&!pe(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=E({},c);if("out-in"===r)return this._leaving=!0,se(l,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),Ii(t,i);if("in-out"===r){if(pe(o))return u;var p,h=function(){p()};se(c,"afterEnter",h),se(c,"enterCancelled",h),se(l,"delayLeave",function(t){p=t})}}return i}}},zi=E({tag:String,moveClass:String},Mi);function Ui(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function qi(t){t.data.newPos=t.elm.getBoundingClientRect()}function Fi(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete zi.mode;var Hi={Transition:Di,TransitionGroup:{props:zi,render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Bi(this),s=0;s-1?In[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:In[t]=/HTMLUnknownElement/.test(e.toString())},E(pn.options.directives,Ri),E(pn.options.components,Hi),pn.prototype.__patch__=V?Ai:$,pn.prototype.$mount=function(t,e){return function(t,e,n){return t.$el=e,t.$options.render||(t.$options.render=vt),ke(t,"beforeMount"),new Ne(t,function(){t._update(t._render(),n)},$,null,!0),n=!1,null==t.$vnode&&(t._isMounted=!0,ke(t,"mounted")),t}(this,t=t&&V?zn(t):void 0,e)},V&&setTimeout(function(){D.devtools&&rt&&rt.emit("init",pn)},0);var Vi=/\{\{((?:.|\n)+?)\}\}/g,Wi=/[-.*+?^${}()|[\]\/\\]/g,Xi=w(function(t){var e=t[0].replace(Wi,"\\$&"),n=t[1].replace(Wi,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")});function Ki(t,e){var n=e?Xi(e):Vi;if(n.test(t)){for(var r,i,o,a=[],s=[],c=n.lastIndex=0;r=n.exec(t);){(i=r.index)>c&&(s.push(o=t.slice(c,i)),a.push(JSON.stringify(o)));var u=dr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ro="[a-zA-Z_][\\w\\-\\.]*",io="((?:"+ro+"\\:)?"+ro+")",oo=new RegExp("^<"+io),ao=/^\s*(\/?)>/,so=new RegExp("^<\\/"+io+"[^>]*>"),co=/^]+>/i,uo=/^",""":'"',"&":"&"," ":"\n"," ":"\t"},mo=/&(?:lt|gt|quot|amp);/g,yo=/&(?:lt|gt|quot|amp|#10|#9);/g,go=d("pre,textarea",!0),bo=function(t,e){return t&&go(t)&&"\n"===e[0]};function wo(t,e){var n=e?yo:mo;return t.replace(n,function(t){return vo[t]})}var _o,xo,ko,Ao,Co,Oo,So,Eo,To=/^@|^v-on:/,$o=/^v-|^@|^:/,jo=/([^]*?)\s+(?:in|of)\s+([^]*)/,No=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Po=/^\(|\)$/g,Ro=/:(.*)$/,Mo=/^:|^v-bind:/,Lo=/\.[^.]+/g,Bo=w(Gi);function Io(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:function(t){for(var e={},n=0,r=t.length;n]*>)","i")),p=t.replace(l,function(t,n,r){return u=r.length,po(f)||"noscript"===f||(n=n.replace(//g,"$1").replace(//g,"$1")),bo(f,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""});c+=t.length-p.length,t=p,O(f,c-u,c)}else{var h=t.indexOf("<");if(0===h){if(uo.test(t)){var d=t.indexOf("--\x3e");if(d>=0){e.shouldKeepComment&&e.comment(t.substring(4,d)),k(d+3);continue}}if(fo.test(t)){var v=t.indexOf("]>");if(v>=0){k(v+2);continue}}var m=t.match(co);if(m){k(m[0].length);continue}var y=t.match(so);if(y){var g=c;k(y[0].length),O(y[1],g,c);continue}var b=A();if(b){C(b),bo(r,t)&&k(1);continue}}var w=void 0,_=void 0,x=void 0;if(h>=0){for(_=t.slice(h);!(so.test(_)||oo.test(_)||uo.test(_)||fo.test(_)||(x=_.indexOf("<",1))<0);)h+=x,_=t.slice(h);w=t.substring(0,h),k(h)}h<0&&(w=t,t=""),e.chars&&w&&e.chars(w)}if(t===n){e.chars&&e.chars(t);break}}function k(e){c+=e,t=t.substring(e)}function A(){var e=t.match(oo);if(e){var n,r,i={tagName:e[1],attrs:[],start:c};for(k(e[0].length);!(n=t.match(ao))&&(r=t.match(no));)k(r[0].length),i.attrs.push(r);if(n)return i.unarySlash=n[1],k(n[0].length),i.end=c,i}}function C(t){var n=t.tagName,c=t.unarySlash;o&&("p"===r&&eo(n)&&O(r),s(n)&&r===n&&O(n));for(var u=a(n)||!!c,f=t.attrs.length,l=new Array(f),p=0;p=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)e.end&&e.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,o):"p"===s&&(e.start&&e.start(t,[],!1,n,o),e.end&&e.end(t,n,o))}O()}(t,{warn:_o,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,start:function(t,o,u){var f=r&&r.ns||Eo(t);J&&"svg"===f&&(o=function(t){for(var e=[],n=0;n-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),xr(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Or(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Or(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Or(e,"$$c")+"}",null,!0)}(t,r,i);else if("input"===o&&"radio"===a)!function(t,e,n){var r=n&&n.number,i=kr(t,"value")||"null";gr(t,"checked","_q("+e+","+(i=r?"_n("+i+")":i)+")"),xr(t,"change",Or(e,i),null,!0)}(t,r,i);else if("input"===o||"textarea"===o)!function(t,e,n){var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Pr:"input",f="$event.target.value";s&&(f="$event.target.value.trim()"),a&&(f="_n("+f+")");var l=Or(e,f);c&&(l="if($event.target.composing)return;"+l),gr(t,"value","("+e+")"),xr(t,u,l,null,!0),(s||a)&&xr(t,"blur","$forceUpdate()")}(t,r,i);else if(!D.isReservedTag(o))return Cr(t,r,i),!1;return!0},text:function(t,e){e.value&&gr(t,"textContent","_s("+e.value+")")},html:function(t,e){e.value&&gr(t,"innerHTML","_s("+e.value+")")}},isPreTag:function(t){return"pre"===t},isUnaryTag:Qi,mustUseProp:xn,canBeLeftOpenTag:to,isReservedTag:Ln,getTagNamespace:Bn,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(Xo)},Zo=w(function(t){return d("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(t?","+t:""))});function Go(t,e){t&&(Ko=Zo(e.staticKeys||""),Jo=e.isReservedTag||j,function t(e){e.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||v(t.tag)||!Jo(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(Ko)))}(e);if(1===e.type){if(!Jo(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,r=e.children.length;n|^function\s*\(/,ta=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,ea={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},na={esc:"Escape",tab:"Tab",enter:"Enter",space:" ",up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete"]},ra=function(t){return"if("+t+")return null;"},ia={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:ra("$event.target !== $event.currentTarget"),ctrl:ra("!$event.ctrlKey"),shift:ra("!$event.shiftKey"),alt:ra("!$event.altKey"),meta:ra("!$event.metaKey"),left:ra("'button' in $event && $event.button !== 0"),middle:ra("'button' in $event && $event.button !== 1"),right:ra("'button' in $event && $event.button !== 2")};function oa(t,e,n){var r=e?"nativeOn:{":"on:{";for(var i in t)r+='"'+i+'":'+aa(i,t[i])+",";return r.slice(0,-1)+"}"}function aa(t,e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return aa(t,e)}).join(",")+"]";var n=ta.test(e.value),r=Qo.test(e.value);if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)if(ia[s])o+=ia[s],ea[s]&&a.push(s);else if("exact"===s){var c=e.modifiers;o+=ra(["ctrl","shift","alt","meta"].filter(function(t){return!c[t]}).map(function(t){return"$event."+t+"Key"}).join("||"))}else a.push(s);return a.length&&(i+=function(t){return"if(!('button' in $event)&&"+t.map(sa).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(n?"return "+e.value+"($event)":r?"return ("+e.value+")($event)":e.value)+"}"}return n||r?e.value:"function($event){"+e.value+"}"}function sa(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=ea[t],r=na[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var ca={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:$},ua=function(t){this.options=t,this.warn=t.warn||mr,this.transforms=yr(t.modules,"transformCode"),this.dataGenFns=yr(t.modules,"genData"),this.directives=E(E({},ca),t.directives);var e=t.isReservedTag||j;this.maybeComponent=function(t){return!e(t.tag)},this.onceId=0,this.staticRenderFns=[]};function fa(t,e){var n=new ua(e);return{render:"with(this){return "+(t?la(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function la(t,e){if(t.staticRoot&&!t.staticProcessed)return pa(t,e);if(t.once&&!t.onceProcessed)return ha(t,e);if(t.for&&!t.forProcessed)return function(t,e,n,r){var i=t.for,o=t.alias,a=t.iterator1?","+t.iterator1:"",s=t.iterator2?","+t.iterator2:"";0;return t.forProcessed=!0,(r||"_l")+"(("+i+"),function("+o+a+s+"){return "+(n||la)(t,e)+"})"}(t,e);if(t.if&&!t.ifProcessed)return da(t,e);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=ya(t,e),i="_t("+n+(r?","+r:""),o=t.attrs&&"{"+t.attrs.map(function(t){return x(t.name)+":"+t.value}).join(",")+"}",a=t.attrsMap["v-bind"];!o&&!a||r||(i+=",null");o&&(i+=","+o);a&&(i+=(o?"":",null")+","+a);return i+")"}(t,e);var n;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:ya(e,n,!0);return"_c("+t+","+va(e,n)+(r?","+r:"")+")"}(t.component,t,e);else{var r=t.plain?void 0:va(t,e),i=t.inlineTemplate?null:ya(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o':'
',Aa.innerHTML.indexOf(" ")>0}var Sa=!!V&&Oa(!1),Ea=!!V&&Oa(!0),Ta=w(function(t){var e=zn(t);return e&&e.innerHTML}),$a=pn.prototype.$mount;pn.prototype.$mount=function(t,e){if((t=t&&zn(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=Ta(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){0;var i=Ca(r,{shouldDecodeNewlines:Sa,shouldDecodeNewlinesForHref:Ea,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return $a.call(this,t,e)},pn.compile=Ca,e.a=pn}).call(e,n("DuR2"))},"C/JF":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"icon",function(){return ue}),n.d(e,"noAuto",function(){return oe}),n.d(e,"config",function(){return M}),n.d(e,"toHtml",function(){return wt}),n.d(e,"layer",function(){return pe}),n.d(e,"text",function(){return fe}),n.d(e,"counter",function(){return le}),n.d(e,"library",function(){return ie}),n.d(e,"dom",function(){return se}),n.d(e,"parse",function(){return ce}),n.d(e,"findIconDefinition",function(){return ne}); -/*! - * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */ -var r=function(){},i={},o={},a=null,s={mark:r,measure:r};try{"undefined"!=typeof window&&(i=window),"undefined"!=typeof document&&(o=document),"undefined"!=typeof MutationObserver&&(a=MutationObserver),"undefined"!=typeof performance&&(s=performance)}catch(t){}var c=(i.navigator||{}).userAgent,u=void 0===c?"":c,f=i,l=o,p=a,h=s,d=!!l.documentElement&&!!l.head&&"function"==typeof l.addEventListener&&"function"==typeof l.createElement,v=~u.indexOf("MSIE")||~u.indexOf("Trident/"),m=16,y="data-fa-i2svg",g="data-fa-pseudo-element",b="data-prefix",w="data-icon",_="fontawesome-i2svg",x=["HTML","HEAD","STYLE","SCRIPT"],k=function(){try{return!0}catch(t){return!1}}(),A=[1,2,3,4,5,6,7,8,9,10],C=A.concat([11,12,13,14,15,16,17,18,19,20]),O=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],S=["xs","sm","lg","fw","ul","li","border","pull-left","pull-right","spin","pulse","rotate-90","rotate-180","rotate-270","flip-horizontal","flip-vertical","stack","stack-1x","stack-2x","inverse","layers","layers-text","layers-counter"].concat(A.map(function(t){return t+"x"})).concat(C.map(function(t){return"w-"+t})),E=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},T=function(){function t(t,e){for(var n=0;n-1;i--){var o=n[i],a=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=o)}return l.head.insertBefore(e,r),t}}var F=0;function H(){return++F}function V(t){for(var e=[],n=(t||[]).length>>>0;n--;)e[n]=t[n];return e}function W(t){return t.classList?V(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(t){return t})}function X(t,e){var n,r=e.split("-"),i=r[0],o=r.slice(1).join("-");return i!==t||""===o||(n=o,~S.indexOf(n))?null:o}function K(t){return(""+t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function J(t){return Object.keys(t||{}).reduce(function(e,n){return e+(n+": ")+t[n]+";"},"")}function Y(t){return t.size!==U.size||t.x!==U.x||t.y!==U.y||t.rotate!==U.rotate||t.flipX||t.flipY}function Z(t){var e=t.transform,n=t.containerWidth,r=t.iconWidth;return{outer:{transform:"translate("+n/2+" 256)"},inner:{transform:"translate("+32*e.x+", "+32*e.y+") "+" "+("scale("+e.size/16*(e.flipX?-1:1)+", "+e.size/16*(e.flipY?-1:1)+") ")+" "+("rotate("+e.rotate+" 0 0)")},path:{transform:"translate("+r/2*-1+" -256)"}}}var G={x:0,y:0,width:"100%",height:"100%"},Q=function(t){var e=t.children,n=t.attributes,r=t.main,i=t.mask,o=t.transform,a=r.width,s=r.icon,c=i.width,u=i.icon,f=Z({transform:o,containerWidth:c,iconWidth:a}),l={tag:"rect",attributes:$({},G,{fill:"white"})},p={tag:"g",attributes:$({},f.inner),children:[{tag:"path",attributes:$({},s.attributes,f.path,{fill:"black"})}]},h={tag:"g",attributes:$({},f.outer),children:[p]},d="mask-"+H(),v="clip-"+H(),m={tag:"defs",children:[{tag:"clipPath",attributes:{id:v},children:[u]},{tag:"mask",attributes:$({},G,{id:d,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[l,h]}]};return e.push(m,{tag:"rect",attributes:$({fill:"currentColor","clip-path":"url(#"+v+")",mask:"url(#"+d+")"},G)}),{children:e,attributes:n}},tt=function(t){var e=t.children,n=t.attributes,r=t.main,i=t.transform,o=J(t.styles);if(o.length>0&&(n.style=o),Y(i)){var a=Z({transform:i,containerWidth:r.width,iconWidth:r.width});e.push({tag:"g",attributes:$({},a.outer),children:[{tag:"g",attributes:$({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:$({},r.icon.attributes,a.path)}]}]})}else e.push(r.icon);return{children:e,attributes:n}},et=function(t){var e=t.children,n=t.main,r=t.mask,i=t.attributes,o=t.styles,a=t.transform;if(Y(a)&&n.found&&!r.found){var s={x:n.width/n.height/2,y:.5};i.style=J($({},o,{"transform-origin":s.x+a.x/16+"em "+(s.y+a.y/16)+"em"}))}return[{tag:"svg",attributes:i,children:e}]},nt=function(t){var e=t.prefix,n=t.iconName,r=t.children,i=t.attributes,o=t.symbol,a=!0===o?e+"-"+M.familyPrefix+"-"+n:o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:$({},i,{id:a}),children:r}]}]};function rt(t){var e=t.icons,n=e.main,r=e.mask,i=t.prefix,o=t.iconName,a=t.transform,s=t.symbol,c=t.title,u=t.extra,f=t.watchable,l=void 0!==f&&f,p=r.found?r:n,h=p.width,d=p.height,v="fa-w-"+Math.ceil(h/d*16),m=[M.replacementClass,o?M.familyPrefix+"-"+o:"",v].filter(function(t){return-1===u.classes.indexOf(t)}).concat(u.classes).join(" "),g={children:[],attributes:$({},u.attributes,{"data-prefix":i,"data-icon":o,class:m,role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 "+h+" "+d})};l&&(g.attributes[y]=""),c&&g.children.push({tag:"title",attributes:{id:g.attributes["aria-labelledby"]||"title-"+H()},children:[c]});var b=$({},g,{prefix:i,iconName:o,main:n,mask:r,transform:a,symbol:s,styles:u.styles}),w=r.found&&n.found?Q(b):tt(b),_=w.children,x=w.attributes;return b.children=_,b.attributes=x,s?nt(b):et(b)}function it(t){var e=t.content,n=t.width,r=t.height,i=t.transform,o=t.title,a=t.extra,s=t.watchable,c=void 0!==s&&s,u=$({},a.attributes,o?{title:o}:{},{class:a.classes.join(" ")});c&&(u[y]="");var f=$({},a.styles);Y(i)&&(f.transform=function(t){var e=t.transform,n=t.width,r=void 0===n?m:n,i=t.height,o=void 0===i?m:i,a=t.startCentered,s=void 0!==a&&a,c="";return c+=s&&v?"translate("+(e.x/z-r/2)+"em, "+(e.y/z-o/2)+"em) ":s?"translate(calc(-50% + "+e.x/z+"em), calc(-50% + "+e.y/z+"em)) ":"translate("+e.x/z+"em, "+e.y/z+"em) ",c+="scale("+e.size/z*(e.flipX?-1:1)+", "+e.size/z*(e.flipY?-1:1)+") ",c+="rotate("+e.rotate+"deg) "}({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var l=J(f);l.length>0&&(u.style=l);var p=[];return p.push({tag:"span",attributes:u,children:[e]}),o&&p.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),p}var ot=function(){},at=M.measurePerformance&&h&&h.mark&&h.measure?h:{mark:ot,measure:ot},st=function(t){at.mark('FA "5.1.0" '+t+" ends"),at.measure('FA "5.1.0" '+t,'FA "5.1.0" '+t+" begins",'FA "5.1.0" '+t+" ends")},ct={begin:function(t){return at.mark('FA "5.1.0" '+t+" begins"),function(){return st(t)}},end:st},ut=function(t,e,n,r){var i,o,a,s=Object.keys(t),c=s.length,u=void 0!==r?function(t,e){return function(n,r,i,o){return t.call(e,n,r,i,o)}}(e,r):e;for(void 0===n?(i=1,a=t[s[0]]):(i=0,a=n);i"+o.map(wt).join("")+""}var _t=function(){};function xt(t){return"string"==typeof(t.getAttribute?t.getAttribute(y):null)}var kt={replace:function(t){var e=t[0],n=t[1].map(function(t){return wt(t)}).join("\n");if(e.parentNode&&e.outerHTML)e.outerHTML=n+(M.keepOriginalSource&&"svg"!==e.tagName.toLowerCase()?"\x3c!-- "+e.outerHTML+" --\x3e":"");else if(e.parentNode){var r=document.createElement("span");e.parentNode.replaceChild(r,e),r.outerHTML=n}},nest:function(t){var e=t[0],n=t[1];if(~W(e).indexOf(M.replacementClass))return kt.replace(t);var r=new RegExp(M.familyPrefix+"-.*");delete n[0].attributes.style;var i=n[0].attributes.class.split(" ").reduce(function(t,e){return e===M.replacementClass||e.match(r)?t.toSvg.push(e):t.toNode.push(e),t},{toNode:[],toSvg:[]});n[0].attributes.class=i.toSvg.join(" ");var o=n.map(function(t){return wt(t)}).join("\n");e.setAttribute("class",i.toNode.join(" ")),e.setAttribute(y,""),e.innerHTML=o}};function At(t,e){var n="function"==typeof e?e:_t;0===t.length?n():(f.requestAnimationFrame||function(t){return t()})(function(){var e=!0===M.autoReplaceSvg?kt.replace:kt[M.autoReplaceSvg]||kt.replace,r=ct.begin("mutate");t.map(e),r(),n()})}var Ct=!1;var Ot=null;var St=function(t){var e=t.getAttribute("style"),n=[];return e&&(n=e.split(";").reduce(function(t,e){var n=e.split(":"),r=n[0],i=n.slice(1);return r&&i.length>0&&(t[r]=i.join(":").trim()),t},{})),n};function Et(t){for(var e="",n=0;n1?a.iconName=(e=a.prefix,n=t.innerText,ht[e][n]):a.prefix&&1===o.length&&(a.iconName=vt(a.prefix,Et(t.innerText))),a},$t=function(t){var e={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t?t.toLowerCase().split(" ").reduce(function(t,e){var n=e.toLowerCase().split("-"),r=n[0],i=n.slice(1).join("-");if(r&&"h"===i)return t.flipX=!0,t;if(r&&"v"===i)return t.flipY=!0,t;if(i=parseFloat(i),isNaN(i))return t;switch(r){case"grow":t.size=t.size+i;break;case"shrink":t.size=t.size-i;break;case"left":t.x=t.x-i;break;case"right":t.x=t.x+i;break;case"up":t.y=t.y-i;break;case"down":t.y=t.y+i;break;case"rotate":t.rotate=t.rotate+i}return t},e):e},jt=function(t){return $t(t.getAttribute("data-fa-transform"))},Nt=function(t){var e=t.getAttribute("data-fa-symbol");return null!==e&&(""===e||e)},Pt=function(t){var e=V(t.attributes).reduce(function(t,e){return"class"!==t.name&&"style"!==t.name&&(t[e.name]=e.value),t},{}),n=t.getAttribute("title");return M.autoA11y&&(n?e["aria-labelledby"]=M.replacementClass+"-title-"+H():e["aria-hidden"]="true"),e},Rt=function(t){var e=t.getAttribute("data-fa-mask");return e?gt(e.split(" ").map(function(t){return t.trim()})):yt()},Mt={iconName:null,title:null,prefix:null,transform:U,symbol:!1,mask:null,extra:{classes:[],styles:{},attributes:{}}};function Lt(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=(new Error).stack}Lt.prototype=Object.create(Error.prototype),Lt.prototype.constructor=Lt;var Bt={fill:"currentColor"},It={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},Dt={tag:"path",attributes:$({},Bt,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},zt=$({},It,{attributeName:"opacity"}),Ut={tag:"g",children:[Dt,{tag:"circle",attributes:$({},Bt,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:$({},It,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:$({},zt,{values:"1;0;1;1;0;1;"})}]},{tag:"path",attributes:$({},Bt,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:$({},zt,{values:"1;0;0;0;0;1;"})}]},{tag:"path",attributes:$({},Bt,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:$({},zt,{values:"0;0;1;1;0;0;"})}]}]},qt=B.styles,Ft="fa-layers-text",Ht=/Font Awesome 5 (Solid|Regular|Light|Brands|Free|Pro)/,Vt={Solid:"fas",Regular:"far",Light:"fal",Brands:"fab"},Wt={900:"fas",400:"far",300:"fal"};function Xt(t,e){var n={found:!1,width:512,height:512,icon:Ut};if(t&&e&&qt[e]&&qt[e][t]){var r=qt[e][t];n={found:!0,width:r[0],height:r[1],icon:{tag:"path",attributes:{fill:"currentColor",d:r.slice(4)[0]}}}}else if(t&&e&&!M.showMissingIcons)throw new Lt("Icon is missing for prefix "+e+" with icon name "+t);return n}function Kt(t){var e=function(t){var e=Tt(t),n=e.iconName,r=e.prefix,i=e.rest,o=St(t),a=jt(t),s=Nt(t),c=Pt(t),u=Rt(t);return{iconName:n,title:t.getAttribute("title"),prefix:r,transform:a,symbol:s,mask:u,extra:{classes:i,styles:o,attributes:c}}}(t);return~e.extra.classes.indexOf(Ft)?function(t,e){var n=e.title,r=e.transform,i=e.extra,o=null,a=null;if(v){var s=parseInt(getComputedStyle(t).fontSize,10),c=t.getBoundingClientRect();o=c.width/s,a=c.height/s}return M.autoA11y&&!n&&(i.attributes["aria-hidden"]="true"),[t,it({content:t.innerHTML,width:o,height:a,transform:r,title:n,extra:i,watchable:!0})]}(t,e):function(t,e){var n=e.iconName,r=e.title,i=e.prefix,o=e.transform,a=e.symbol,s=e.mask,c=e.extra;return[t,rt({icons:{main:Xt(n,i),mask:Xt(s.iconName,s.prefix)},prefix:i,iconName:n,transform:o,symbol:a,mask:s,title:r,extra:c,watchable:!0})]}(t,e)}function Jt(t){if(d){var e=ct.begin("searchPseudoElements");Ct=!0,function(){V(t.querySelectorAll("*")).filter(function(t){return!(t.parentNode===document.head||~x.indexOf(t.tagName.toUpperCase())||t.getAttribute(g)||t.parentNode&&"svg"===t.parentNode.tagName)}).forEach(function(t){[":before",":after"].forEach(function(e){var n=V(t.children).filter(function(t){return t.getAttribute(g)===e})[0],r=f.getComputedStyle(t,e),i=r.getPropertyValue("font-family").match(Ht),o=r.getPropertyValue("font-weight");if(n&&!i)t.removeChild(n);else if(i){var a=r.getPropertyValue("content"),s=~["Light","Regular","Solid"].indexOf(i[1])?Vt[i[1]]:Wt[o],c=vt(s,Et(3===a.length?a.substr(1,1):a));if(!n||n.getAttribute(b)!==s||n.getAttribute(w)!==c){n&&t.removeChild(n);var u=Mt.extra;u.attributes[g]=e;var p=rt($({},Mt,{icons:{main:Xt(c,s),mask:yt()},prefix:s,iconName:c,extra:u,watchable:!0})),h=l.createElement("svg");":before"===e?t.insertBefore(h,t.firstChild):t.appendChild(h),h.outerHTML=p.map(function(t){return wt(t)}).join("\n")}}})})}(),Ct=!1,e()}}function Yt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(d){var n=l.documentElement.classList,r=function(t){return n.add(_+"-"+t)},i=function(t){return n.remove(_+"-"+t)},o=Object.keys(qt),a=["."+Ft+":not(["+y+"])"].concat(o.map(function(t){return"."+t+":not(["+y+"])"})).join(", ");if(0!==a.length){var s=V(t.querySelectorAll(a));if(s.length>0){r("pending"),i("complete");var c=ct.begin("onTree"),u=s.reduce(function(t,e){try{var n=Kt(e);n&&t.push(n)}catch(t){k||t instanceof Lt&&console.error(t)}return t},[]);c(),At(u,function(){r("active"),r("complete"),i("pending"),"function"==typeof e&&e()})}}}}function Zt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=Kt(t);n&&At([n],e)}var Gt=function(){var t="svg-inline--fa",e=M.familyPrefix,n=M.replacementClass,r='svg:not(:root).svg-inline--fa {\n overflow: visible; }\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -.125em; }\n .svg-inline--fa.fa-lg {\n vertical-align: -.225em; }\n .svg-inline--fa.fa-w-1 {\n width: 0.0625em; }\n .svg-inline--fa.fa-w-2 {\n width: 0.125em; }\n .svg-inline--fa.fa-w-3 {\n width: 0.1875em; }\n .svg-inline--fa.fa-w-4 {\n width: 0.25em; }\n .svg-inline--fa.fa-w-5 {\n width: 0.3125em; }\n .svg-inline--fa.fa-w-6 {\n width: 0.375em; }\n .svg-inline--fa.fa-w-7 {\n width: 0.4375em; }\n .svg-inline--fa.fa-w-8 {\n width: 0.5em; }\n .svg-inline--fa.fa-w-9 {\n width: 0.5625em; }\n .svg-inline--fa.fa-w-10 {\n width: 0.625em; }\n .svg-inline--fa.fa-w-11 {\n width: 0.6875em; }\n .svg-inline--fa.fa-w-12 {\n width: 0.75em; }\n .svg-inline--fa.fa-w-13 {\n width: 0.8125em; }\n .svg-inline--fa.fa-w-14 {\n width: 0.875em; }\n .svg-inline--fa.fa-w-15 {\n width: 0.9375em; }\n .svg-inline--fa.fa-w-16 {\n width: 1em; }\n .svg-inline--fa.fa-w-17 {\n width: 1.0625em; }\n .svg-inline--fa.fa-w-18 {\n width: 1.125em; }\n .svg-inline--fa.fa-w-19 {\n width: 1.1875em; }\n .svg-inline--fa.fa-w-20 {\n width: 1.25em; }\n .svg-inline--fa.fa-pull-left {\n margin-right: .3em;\n width: auto; }\n .svg-inline--fa.fa-pull-right {\n margin-left: .3em;\n width: auto; }\n .svg-inline--fa.fa-border {\n height: 1.5em; }\n .svg-inline--fa.fa-li {\n width: 2em; }\n .svg-inline--fa.fa-fw {\n width: 1.25em; }\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0; }\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -.125em;\n width: 1em; }\n .fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center; }\n\n.fa-layers-text, .fa-layers-counter {\n display: inline-block;\n position: absolute;\n text-align: center; }\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center; }\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: .25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right; }\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right; }\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left; }\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right; }\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0; }\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1em; }\n\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n';if("fa"!==e||n!==t){var i=new RegExp("\\.fa\\-","g"),o=new RegExp("\\."+t,"g");r=r.replace(i,"."+e+"-").replace(o,"."+n)}return r};function Qt(t){return{found:!0,width:t[0],height:t[1],icon:{tag:"path",attributes:{fill:"currentColor",d:t.slice(4)[0]}}}}function te(){M.autoAddCss&&!ae&&(q(Gt()),ae=!0)}function ee(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map(function(t){return wt(t)})}}),Object.defineProperty(t,"node",{get:function(){if(d){var e=l.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function ne(t){var e=t.prefix,n=void 0===e?"fa":e,r=t.iconName;if(r)return bt(ie.definitions,n,r)||bt(B.styles,n,r)}var re,ie=new(function(){function t(){E(this,t),this.definitions={}}return T(t,[{key:"add",value:function(){for(var t=this,e=arguments.length,n=Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:{};if(d){te();var e=t.node,n=void 0===e?l:e,r=t.callback,i=void 0===r?function(){}:r;M.searchPseudoElements&&Jt(n),Yt(n,i)}},css:Gt,insertCss:function(){ae||(q(Gt()),ae=!0)},watch:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.autoReplaceSvgRoot,r=e.observeMutationsRoot;!1===M.autoReplaceSvg&&(M.autoReplaceSvg=!0),M.observeMutations=!0,t=function(){de({autoReplaceSvgRoot:n}),function(t){if(p&&M.observeMutations){var e=t.treeCallback,n=t.nodeCallback,r=t.pseudoElementsCallback,i=t.observeMutationsRoot,o=void 0===i?l.body:i;Ot=new p(function(t){Ct||V(t).forEach(function(t){if("childList"===t.type&&t.addedNodes.length>0&&!xt(t.addedNodes[0])&&(M.searchPseudoElements&&r(t.target),e(t.target)),"attributes"===t.type&&t.target.parentNode&&M.searchPseudoElements&&r(t.target.parentNode),"attributes"===t.type&&xt(t.target)&&~O.indexOf(t.attributeName))if("class"===t.attributeName){var i=gt(W(t.target)),o=i.prefix,a=i.iconName;o&&t.target.setAttribute("data-prefix",o),a&&t.target.setAttribute("data-icon",a)}else n(t.target)})}),d&&Ot.observe(o,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}({treeCallback:Yt,nodeCallback:Zt,pseudoElementsCallback:Jt,observeMutationsRoot:r})},d&&(D?setTimeout(t,0):I.push(t))}},ce={transform:function(t){return $t(t)}},ue=(re=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,r=void 0===n?U:n,i=e.symbol,o=void 0!==i&&i,a=e.mask,s=void 0===a?null:a,c=e.title,u=void 0===c?null:c,f=e.classes,l=void 0===f?[]:f,p=e.attributes,h=void 0===p?{}:p,d=e.styles,v=void 0===d?{}:d;if(t){var m=t.prefix,y=t.iconName,g=t.icon;return ee($({type:"icon"},t),function(){return te(),M.autoA11y&&(u?h["aria-labelledby"]=M.replacementClass+"-title-"+H():h["aria-hidden"]="true"),rt({icons:{main:Qt(g),mask:s?Qt(s.icon):{found:!1,width:null,height:null,icon:{}}},prefix:m,iconName:y,transform:$({},U,r),symbol:o,title:u,extra:{attributes:h,styles:v,classes:l}})})}},function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(t||{}).icon?t:ne(t||{}),r=e.mask;return r&&(r=(r||{}).icon?r:ne(r||{})),re(n,$({},e,{mask:r}))}),fe=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.transform,r=void 0===n?U:n,i=e.title,o=void 0===i?null:i,a=e.classes,s=void 0===a?[]:a,c=e.attributes,u=void 0===c?{}:c,f=e.styles,l=void 0===f?{}:f;return ee({type:"text",content:t},function(){return te(),it({content:t,transform:$({},U,r),title:o,extra:{attributes:u,styles:l,classes:[M.familyPrefix+"-layers-text"].concat(N(s))}})})},le=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.title,r=void 0===n?null:n,i=e.classes,o=void 0===i?[]:i,a=e.attributes,s=void 0===a?{}:a,c=e.styles,u=void 0===c?{}:c;return ee({type:"counter",content:t},function(){return te(),function(t){var e=t.content,n=t.title,r=t.extra,i=$({},r.attributes,n?{title:n}:{},{class:r.classes.join(" ")}),o=J(r.styles);o.length>0&&(i.style=o);var a=[];return a.push({tag:"span",attributes:i,children:[e]}),n&&a.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),a}({content:t.toString(),title:r,extra:{attributes:s,styles:u,classes:[M.familyPrefix+"-layers-counter"].concat(N(o))}})})},pe=function(t){return ee({type:"layer"},function(){te();var e=[];return t(function(t){Array.isArray(t)?t.map(function(t){e=e.concat(t.abstract)}):e=e.concat(t.abstract)}),[{tag:"span",attributes:{class:M.familyPrefix+"-layers"},children:e}]})},he={noAuto:oe,config:M,dom:se,library:ie,parse:ce,findIconDefinition:ne,icon:ue,text:fe,counter:le,layer:pe,toHtml:wt},de=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot,e=void 0===t?l:t;Object.keys(B.styles).length>0&&d&&M.autoReplaceSvg&&he.dom.i2svg({node:e})}},DuR2:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},"K/Lq":function(t,e,n){!function(){Number.isInteger=Number.isInteger||function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t};var e=n("2DS2"),r={install:function(t){t.prototype.$cookie=this,t.cookie=this},set:function(t,n,r){var i=r;return Number.isInteger(r)&&(i={expires:r}),e.set(t,n,i)},get:function(t){return e.get(t)},delete:function(t,e){var n={expires:-1};void 0!==e&&(n=Object.assign(e,n)),this.set(t,"",n)}};t.exports=r}()},U0v6:function(t,e,n){(function(t){(function(e,n){"use strict";var r="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};var i,o=(function(t){var e,n,i,o,a,s,c,u,f,l,p,h,d,v,m;e=r,n=function(t,e,r){if(!u(e)||l(e)||p(e)||h(e)||c(e))return e;var i,o=0,a=0;if(f(e))for(i=[],a=e.length;o=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n};function f(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=(e.children||[]).map(f.bind(null,t)),a=Object.keys(e.attributes||{}).reduce(function(t,n){var r=e.attributes[n];switch(n){case"class":t.class=r.split(/\s+/).reduce(function(t,e){return t[e]=!0,t},{});break;case"style":t.style=r.split(";").map(function(t){return t.trim()}).filter(function(t){return t}).reduce(function(t,e){var n=e.indexOf(":"),r=o.camelize(e.slice(0,n)),i=e.slice(n+1).trim();return t[r]=i,t},{});break;default:t.attrs[n]=r}return t},{class:{},style:{},attrs:{}}),s=r.class,l=void 0===s?{}:s,p=r.style,h=void 0===p?{}:p,d=r.attrs,v=void 0===d?{}:d,m=u(r,["class","style","attrs"]);return"string"==typeof e?e:t(e.tag,c({class:function(){for(var t=arguments.length,e=Array(t),n=0;n0||!Array.isArray(e)&&e?s({},t,e):{}}function h(t){return null===t?null:"object"===(void 0===t?"undefined":a(t))&&t.prefix&&t.iconName?t:Array.isArray(t)&&2===t.length?{prefix:t[0],iconName:t[1]}:"string"==typeof t?{prefix:"fas",iconName:t}:void 0}var d={name:"FontAwesomeIcon",functional:!0,props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:String,default:null,validator:function(t){return["horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:Number,default:null,validator:function(t){return[90,180,270].indexOf(t)>-1}},size:{type:String,default:null,validator:function(t){return["lg","xs","sm","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1}},render:function(t,e){var r=e.props,i=r.icon,o=r.mask,a=r.symbol,u=h(i),d=p("classes",function(t){var e,n=(e={"fa-spin":t.spin,"fa-pulse":t.pulse,"fa-fw":t.fixedWidth,"fa-border":t.border,"fa-li":t.listItem,"fa-flip-horizontal":"horizontal"===t.flip||"both"===t.flip,"fa-flip-vertical":"vertical"===t.flip||"both"===t.flip},s(e,"fa-"+t.size,null!==t.size),s(e,"fa-rotate-"+t.rotation,null!==t.rotation),s(e,"fa-pull-"+t.pull,null!==t.pull),e);return Object.keys(n).map(function(t){return n[t]?t:null}).filter(function(t){return t})}(r)),v=p("transform","string"==typeof r.transform?n.parse.transform(r.transform):r.transform),m=p("mask",h(o)),y=n.icon(u,c({},d,v,m,{symbol:a}));if(!y)return function(){var t;!l&&console&&"function"==typeof console.error&&(t=console).error.apply(t,arguments)}("Could not find one or more icon(s)",u,m);var g=y.abstract;return f.bind(null,t)(g[0],{},e.data)}},v={name:"FontAwesomeLayers",functional:!0,props:{fixedWidth:{type:Boolean,default:!1}},render:function(t,e){var r,i,o=n.config.familyPrefix,a=e.data.staticClass,s=[o+"-layers"].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},e.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),e.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},e.enable(i())}).call(e,n(39))},function(t,e,n){function r(t){if(t)return function(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}(t)}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},r.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r,i=0;i1?{type:y[i],data:t.substring(1)}:{type:y[i]}:g}i=new Uint8Array(t)[0];var o=f(t,1);return b&&"blob"===n&&(o=new b([o])),{type:y[i],data:o}},e.decodeBase64Packet=function(t,e){var n=y[t.charAt(0)];if(!s)return{type:n,data:{base64:!0,data:t.substr(1)}};var r=s.decode(t.substr(1));return"blob"===e&&b&&(r=new b([r])),{type:n,data:r}},e.encodePayload=function(t,n,r){"function"==typeof n&&(r=n,n=null);var i=u(t);return n&&i?b&&!v?e.encodePayloadAsBlob(t,r):e.encodePayloadAsArrayBuffer(t,r):t.length?void a(t,function(t,r){e.encodePacket(t,!!i&&n,!1,function(t){r(null,function(t){return t.length+":"+t}(t))})},function(t,e){return r(e.join(""))}):r("0:")},e.decodePayload=function(t,n,r){if("string"!=typeof t)return e.decodePayloadAsBinary(t,n,r);var i;if("function"==typeof n&&(r=n,n=null),""===t)return r(g,0,1);for(var o,a,s="",c=0,u=t.length;c0;){for(var a=new Uint8Array(i),s=0===a[0],c="",u=1;255!==a[u];u++){if(c.length>310)return r(g,0,1);c+=a[u]}i=f(i,2+c.length),c=parseInt(c);var l=f(i,0,c);if(s)try{l=String.fromCharCode.apply(null,new Uint8Array(l))}catch(t){var p=new Uint8Array(l);l="";for(u=0;u-1)&&(r.splice(i,1),this.listeners.set(t,r),!0)}},{key:"emit",value:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r0&&!this.encoding){var t=this.packetBuffer.shift();this.packet(t)}},r.prototype.cleanup=function(){f("cleanup");for(var t=this.subs.length,e=0;e=this._reconnectionAttempts)f("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var e=this.backoff.duration();f("will wait %dms before reconnect attempt",e),this.reconnecting=!0;var n=setTimeout(function(){t.skipReconnect||(f("attempting reconnect"),t.emitAll("reconnect_attempt",t.backoff.attempts),t.emitAll("reconnecting",t.backoff.attempts),t.skipReconnect||t.open(function(e){e?(f("reconnect attempt error"),t.reconnecting=!1,t.reconnect(),t.emitAll("reconnect_error",e.data)):(f("reconnect success"),t.onreconnect())}))},e);this.subs.push({destroy:function(){clearTimeout(n)}})}},r.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",t)}},function(t,e){t.exports=function(t,e,n){return t.on(e,n),{destroy:function(){t.removeListener(e,n)}}}},function(t,e,n){function r(t,e,n){this.io=t,this.nsp=e,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,n&&n.query&&(this.query=n.query),this.io.autoConnect&&this.open()}var i=n(8),o=n(2),a=n(43),s=n(18),c=n(10),u=n(1)("socket.io-client:socket"),f=n(5);t.exports=r;var l={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},p=o.prototype.emit;o(r.prototype),r.prototype.subEvents=function(){if(!this.subs){var t=this.io;this.subs=[s(t,"open",c(this,"onopen")),s(t,"packet",c(this,"onpacket")),s(t,"close",c(this,"onclose"))]}},r.prototype.open=r.prototype.connect=function(){return this.connected?this:(this.subEvents(),this.io.open(),"open"===this.io.readyState&&this.onopen(),this.emit("connecting"),this)},r.prototype.send=function(){var t=a(arguments);return t.unshift("message"),this.emit.apply(this,t),this},r.prototype.emit=function(t){if(l.hasOwnProperty(t))return p.apply(this,arguments),this;var e=a(arguments),n={type:i.EVENT,data:e,options:{}};return n.options.compress=!this.flags||!1!==this.flags.compress,"function"==typeof e[e.length-1]&&(u("emitting packet with ack id %d",this.ids),this.acks[this.ids]=e.pop(),n.id=this.ids++),this.connected?this.packet(n):this.sendBuffer.push(n),delete this.flags,this},r.prototype.packet=function(t){t.nsp=this.nsp,this.io.packet(t)},r.prototype.onopen=function(){if(u("transport is open - connecting"),"/"!==this.nsp)if(this.query){var t="object"==typeof this.query?f.encode(this.query):this.query;u("sending connect packet with query %s",t),this.packet({type:i.CONNECT,query:t})}else this.packet({type:i.CONNECT})},r.prototype.onclose=function(t){u("close (%s)",t),this.connected=!1,this.disconnected=!0,delete this.id,this.emit("disconnect",t)},r.prototype.onpacket=function(t){if(t.nsp===this.nsp)switch(t.type){case i.CONNECT:this.onconnect();break;case i.EVENT:case i.BINARY_EVENT:this.onevent(t);break;case i.ACK:case i.BINARY_ACK:this.onack(t);break;case i.DISCONNECT:this.ondisconnect();break;case i.ERROR:this.emit("error",t.data)}},r.prototype.onevent=function(t){var e=t.data||[];u("emitting event %j",e),null!=t.id&&(u("attaching ack callback to event"),e.push(this.ack(t.id))),this.connected?p.apply(this,e):this.receiveBuffer.push(e)},r.prototype.ack=function(t){var e=this,n=!1;return function(){if(!n){n=!0;var r=a(arguments);u("sending ack %j",r),e.packet({type:i.ACK,id:t,data:r})}}},r.prototype.onack=function(t){var e=this.acks[t.id];"function"==typeof e?(u("calling ack %s with %j",t.id,t.data),e.apply(this,t.data),delete this.acks[t.id]):u("bad ack %s",t.id)},r.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emit("connect"),this.emitBuffered()},r.prototype.emitBuffered=function(){var t;for(t=0;t0);return e}function i(){var t=r(+new Date);return t!==o?(u=0,o=t):t+"."+r(u++)}for(var o,a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),s=64,c={},u=0,f=0;fr&&(n=r),e>=r||e>=n||0===r)return new ArrayBuffer(0);for(var i=new Uint8Array(t),o=new Uint8Array(n-e),a=e,s=0;a0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}},function(t,e){!function(){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(256),r=0;r>2],o+=t[(3&r[n])<<4|r[n+1]>>4],o+=t[(15&r[n+1])<<2|r[n+2]>>6],o+=t[63&r[n+2]];return i%3==2?o=o.substring(0,o.length-1)+"=":i%3==1&&(o=o.substring(0,o.length-2)+"=="),o},e.decode=function(t){var e,r,i,o,a,s=.75*t.length,c=t.length,u=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var f=new ArrayBuffer(s),l=new Uint8Array(f);for(e=0;e>4,l[u++]=(15&i)<<4|o>>2,l[u++]=(3&o)<<6|63&a;return f}}()},function(t,e,n){(function(e){function n(t){for(var e=0;e0&&(this.extraHeaders=n.extraHeaders),n.localAddress&&(this.localAddress=n.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}var i=n(11),o=n(2),a=n(1)("engine.io-client:socket"),s=n(14),c=n(3),u=n(16),f=n(5);t.exports=r,r.priorWebsocketSuccess=!1,o(r.prototype),r.protocol=c.protocol,r.Socket=r,r.Transport=n(6),r.transports=n(11),r.parser=n(3),r.prototype.createTransport=function(t){a('creating transport "%s"',t);var e=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}(this.query);e.EIO=c.protocol,e.transport=t;var n=this.transportOptions[t]||{};return this.id&&(e.sid=this.id),new i[t]({query:e,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0})},r.prototype.open=function(){var t;if(this.rememberUpgrade&&r.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length){var e=this;return void setTimeout(function(){e.emit("error","No transports available")},0)}t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},r.prototype.setTransport=function(t){a("setting transport %s",t.name);var e=this;this.transport&&(a("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=t,t.on("drain",function(){e.onDrain()}).on("packet",function(t){e.onPacket(t)}).on("error",function(t){e.onError(t)}).on("close",function(){e.onClose("transport close")})},r.prototype.probe=function(t){function e(){if(p.onlyBinaryUpgrades){var e=!this.supportsBinary&&p.transport.supportsBinary;l=l||e}l||(a('probe transport "%s" opened',t),f.send([{type:"ping",data:"probe"}]),f.once("packet",function(e){if(!l)if("pong"===e.type&&"probe"===e.data){if(a('probe transport "%s" pong',t),p.upgrading=!0,p.emit("upgrading",f),!f)return;r.priorWebsocketSuccess="websocket"===f.name,a('pausing current transport "%s"',p.transport.name),p.transport.pause(function(){l||"closed"!==p.readyState&&(a("changing transport and sending upgrade packet"),u(),p.setTransport(f),f.send([{type:"upgrade"}]),p.emit("upgrade",f),f=null,p.upgrading=!1,p.flush())})}else{a('probe transport "%s" failed',t);var n=new Error("probe error");n.transport=f.name,p.emit("upgradeError",n)}}))}function n(){l||(l=!0,u(),f.close(),f=null)}function i(e){var r=new Error("probe error: "+e);r.transport=f.name,n(),a('probe transport "%s" failed because of error: %s',t,e),p.emit("upgradeError",r)}function o(){i("transport closed")}function s(){i("socket closed")}function c(t){f&&t.name!==f.name&&(a('"%s" works - aborting "%s"',t.name,f.name),n())}function u(){f.removeListener("open",e),f.removeListener("error",i),f.removeListener("close",o),p.removeListener("close",s),p.removeListener("upgrading",c)}a('probing transport "%s"',t);var f=this.createTransport(t,{probe:1}),l=!1,p=this;r.priorWebsocketSuccess=!1,f.once("open",e),f.once("error",i),f.once("close",o),this.once("close",s),this.once("upgrading",c),f.open()},r.prototype.onOpen=function(){if(a("socket open"),this.readyState="open",r.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){a("starting upgrade probes");for(var t=0,e=this.upgrades.length;t';o=document.createElement(t)}catch(t){(o=document.createElement("iframe")).name=i.iframeId,o.src="javascript:0"}o.id=i.iframeId,i.form.appendChild(o),i.iframe=o}var i=this;if(!this.form){var o,a=document.createElement("form"),s=document.createElement("textarea"),f=this.iframeId="eio_iframe_"+this.index;a.className="socketio",a.style.position="absolute",a.style.top="-1000px",a.style.left="-1000px",a.target=f,a.method="POST",a.setAttribute("accept-charset","utf-8"),s.name="d",a.appendChild(s),document.body.appendChild(a),this.form=a,this.area=s}this.form.action=this.uri(),r(),t=t.replace(u,"\\\n"),this.area.value=t.replace(c,"\\n");try{this.form.submit()}catch(t){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===i.iframe.readyState&&n()}:this.iframe.onload=n}}).call(e,n(0))},function(t,e,n){(function(e){function r(){}function i(t){if(c.call(this,t),this.requestTimeout=t.requestTimeout,this.extraHeaders=t.extraHeaders,e.location){var n="https:"===location.protocol,r=location.port;r||(r=n?443:80),this.xd=t.hostname!==e.location.hostname||r!==t.port,this.xs=t.secure!==n}}function o(t){this.method=t.method||"GET",this.uri=t.uri,this.xd=!!t.xd,this.xs=!!t.xs,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.agent=t.agent,this.isBinary=t.isBinary,this.supportsBinary=t.supportsBinary,this.enablesXDR=t.enablesXDR,this.requestTimeout=t.requestTimeout,this.pfx=t.pfx,this.key=t.key,this.passphrase=t.passphrase,this.cert=t.cert,this.ca=t.ca,this.ciphers=t.ciphers,this.rejectUnauthorized=t.rejectUnauthorized,this.extraHeaders=t.extraHeaders,this.create()}function a(){for(var t in o.requests)o.requests.hasOwnProperty(t)&&o.requests[t].abort()}var s=n(7),c=n(12),u=n(2),f=n(4),l=n(1)("engine.io-client:polling-xhr");t.exports=i,t.exports.Request=o,f(i,c),i.prototype.supportsBinary=!0,i.prototype.request=function(t){return(t=t||{}).uri=this.uri(),t.xd=this.xd,t.xs=this.xs,t.agent=this.agent||!1,t.supportsBinary=this.supportsBinary,t.enablesXDR=this.enablesXDR,t.pfx=this.pfx,t.key=this.key,t.passphrase=this.passphrase,t.cert=this.cert,t.ca=this.ca,t.ciphers=this.ciphers,t.rejectUnauthorized=this.rejectUnauthorized,t.requestTimeout=this.requestTimeout,t.extraHeaders=this.extraHeaders,new o(t)},i.prototype.doWrite=function(t,e){var n="string"!=typeof t&&void 0!==t,r=this.request({method:"POST",data:t,isBinary:n}),i=this;r.on("success",e),r.on("error",function(t){i.onError("xhr post error",t)}),this.sendXhr=r},i.prototype.doPoll=function(){l("xhr poll");var t=this.request(),e=this;t.on("data",function(t){e.onData(t)}),t.on("error",function(t){e.onError("xhr poll error",t)}),this.pollXhr=t},u(o.prototype),o.prototype.create=function(){var t={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};t.pfx=this.pfx,t.key=this.key,t.passphrase=this.passphrase,t.cert=this.cert,t.ca=this.ca,t.ciphers=this.ciphers,t.rejectUnauthorized=this.rejectUnauthorized;var n=this.xhr=new s(t),r=this;try{l("xhr open %s: %s",this.method,this.uri),n.open(this.method,this.uri,this.async);try{if(this.extraHeaders)for(var i in n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0),this.extraHeaders)this.extraHeaders.hasOwnProperty(i)&&n.setRequestHeader(i,this.extraHeaders[i])}catch(t){}if("POST"===this.method)try{this.isBinary?n.setRequestHeader("Content-type","application/octet-stream"):n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in n&&(n.withCredentials=!0),this.requestTimeout&&(n.timeout=this.requestTimeout),this.hasXDR()?(n.onload=function(){r.onLoad()},n.onerror=function(){r.onError(n.responseText)}):n.onreadystatechange=function(){if(2===n.readyState){var t;try{t=n.getResponseHeader("Content-Type")}catch(t){}"application/octet-stream"===t&&(n.responseType="arraybuffer")}4===n.readyState&&(200===n.status||1223===n.status?r.onLoad():setTimeout(function(){r.onError(n.status)},0))},l("xhr data %s",this.data),n.send(this.data)}catch(t){return void setTimeout(function(){r.onError(t)},0)}e.document&&(this.index=o.requestsCount++,o.requests[this.index]=this)},o.prototype.onSuccess=function(){this.emit("success"),this.cleanup()},o.prototype.onData=function(t){this.emit("data",t),this.onSuccess()},o.prototype.onError=function(t){this.emit("error",t),this.cleanup(!0)},o.prototype.cleanup=function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=r:this.xhr.onreadystatechange=r,t)try{this.xhr.abort()}catch(t){}e.document&&delete o.requests[this.index],this.xhr=null}},o.prototype.onLoad=function(){var t;try{var e;try{e=this.xhr.getResponseHeader("Content-Type")}catch(t){}t="application/octet-stream"===e&&this.xhr.response||this.xhr.responseText}catch(t){this.onError(t)}null!=t&&this.onData(t)},o.prototype.hasXDR=function(){return void 0!==e.XDomainRequest&&!this.xs&&this.enablesXDR},o.prototype.abort=function(){this.cleanup()},o.requestsCount=0,o.requests={},e.document&&(e.attachEvent?e.attachEvent("onunload",a):e.addEventListener&&e.addEventListener("beforeunload",a,!1))}).call(e,n(0))},function(t,e,n){(function(e){function r(t){t&&t.forceBase64&&(this.supportsBinary=!1),this.perMessageDeflate=t.perMessageDeflate,this.usingBrowserWebSocket=l&&!t.forceNode,this.protocols=t.protocols,this.usingBrowserWebSocket||(p=i),o.call(this,t)}var i,o=n(6),a=n(3),s=n(5),c=n(4),u=n(21),f=n(1)("engine.io-client:websocket"),l=e.WebSocket||e.MozWebSocket;if("undefined"==typeof window)try{i=n(45)}catch(t){}var p=l;p||"undefined"!=typeof window||(p=i),t.exports=r,c(r,o),r.prototype.name="websocket",r.prototype.supportsBinary=!0,r.prototype.doOpen=function(){if(this.check()){var t=this.uri(),e=this.protocols,n={agent:this.agent,perMessageDeflate:this.perMessageDeflate};n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized,this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket?e?new p(t,e):new p(t):new p(t,e,n)}catch(t){return this.emit("error",t)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},r.prototype.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.onOpen()},this.ws.onclose=function(){t.onClose()},this.ws.onmessage=function(e){t.onData(e.data)},this.ws.onerror=function(e){t.onError("websocket error",e)}},r.prototype.write=function(t){var n=this;this.writable=!1;for(var r=t.length,i=0,o=r;i=55296&&e<=56319&&i=55296&&t<=57343){if(e)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function s(t,e){return d(t>>e&63|128)}function c(t,e){if(0==(4294967168&t))return d(t);var n="";return 0==(4294965248&t)?n=d(t>>6&31|192):0==(4294901760&t)?(a(t,e)||(t=65533),n=d(t>>12&15|224),n+=s(t,6)):0==(4292870144&t)&&(n=d(t>>18&7|240),n+=s(t,12),n+=s(t,6)),n+d(63&t|128)}function u(){if(h>=p)throw Error("Invalid byte index");var t=255&l[h];if(h++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function f(t){var e,n;if(h>p)throw Error("Invalid byte index");if(h==p)return!1;if(e=255&l[h],h++,0==(128&e))return e;if(192==(224&e)){if((n=(31&e)<<6|u())>=128)return n;throw Error("Invalid continuation byte")}if(224==(240&e)){if((n=(15&e)<<12|u()<<6|u())>=2048)return a(n,t)?n:65533;throw Error("Invalid continuation byte")}if(240==(248&e)&&((n=(7&e)<<18|u()<<12|u()<<6|u())>=65536&&n<=1114111))return n;throw Error("Invalid UTF-8 detected")}"object"==typeof t&&t&&t.exports;var l,p,h,d=String.fromCharCode,v={version:"2.1.2",encode:function(t,e){for(var n=!1!==(e=e||{}).strict,r=o(t),i=r.length,a=-1,s="";++a65535&&(i+=d((e-=65536)>>>10&1023|55296),e=56320|1023&e),i+=d(e);return i}(i)}};void 0!==(i=function(){return v}.call(e,n,e,t))&&(t.exports=i)}()}).call(e,n(44)(t),n(0))},function(t,e){try{t.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){t.exports=!1}},function(t,e){function n(t){return r(t,s,"day")||r(t,a,"hour")||r(t,o,"minute")||r(t,i,"second")||t+" ms"}function r(t,e,n){if(!(t0)return function(t){if(!((t=String(t)).length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return n*c;case"days":case"day":case"d":return n*s;case"hours":case"hour":case"hrs":case"hr":case"h":return n*a;case"minutes":case"minute":case"mins":case"min":case"m":return n*o;case"seconds":case"second":case"secs":case"sec":case"s":return n*i;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}(t);if("number"===r&&!1===isNaN(t))return e.long?n(t):function(t){return t>=s?Math.round(t/s)+"d":t>=a?Math.round(t/a)+"h":t>=o?Math.round(t/o)+"m":t>=i?Math.round(t/i)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(u===setTimeout)return setTimeout(t,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(t,0);try{return u(t,0)}catch(e){try{return u.call(null,t,0)}catch(e){return u.call(this,t,0)}}}function o(){d&&p&&(d=!1,p.length?h=p.concat(h):v=-1,h.length&&a())}function a(){if(!d){var t=i(o);d=!0;for(var e=h.length;e;){for(p=h,h=[];++v1)for(var n=1;n -1\n}\n\nvar View = {\n name: 'router-view',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n if (parent.$vnode && parent.$vnode.data.routerView) {\n depth++;\n }\n if (parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n\n return h(component, data, children)\n }\n};\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\nfunction extend (to, from) {\n for (var key in from) {\n to[key] = from[key];\n }\n return to\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar Link = {\n name: 'router-link',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null\n ? 'router-link-active'\n : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass = this.activeClass == null\n ? activeClassFallback\n : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n var compareTarget = location.path\n ? createRoute(null, location, null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) { on[e] = handler; });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var extend = _Vue.util.extend;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('router-view', View);\n Vue.component('router-link', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n return filler(params || {}, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n }\n}\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(path || name)) + \" cannot be a \" +\n \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(\n path,\n parent,\n pathToRegexpOptions.strict\n );\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) { return /^\\/?$/.test(child.path); })) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias)\n ? route.alias\n : [route.alias];\n\n aliases.forEach(function (alias) {\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(!keys[key.name], (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\"));\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (path, parent, strict) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next.name || next._normalized) {\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = assign({}, next);\n next._normalized = true;\n var params = assign(assign({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction assign (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n if (record) {\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n }\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n params[key.name] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n window.history.replaceState({ key: getStateKey() }, '');\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior(to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && 'pushState' in window.history\n})();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nvar _key = genKey();\n\nfunction genKey () {\n return Time.now().toFixed(3)\n}\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n _key = key;\n}\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n history.replaceState({ key: _key }, '', url);\n } else {\n _key = genKey();\n history.pushState({ key: _key }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) { cb(route); });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) { cb(err); });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort()\n }\n\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' && (\n typeof to.path === 'string' ||\n typeof to.name === 'string'\n ))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) { cb(); });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n })\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n next(cb);\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (instances[key]) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\n\nvar HTML5History = (function (History$$1) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History$$1.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n\n if (expectScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (expectScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\n\nvar HashHistory = (function (History$$1) {\n function HashHistory (router, base, fallback) {\n History$$1.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History$$1 ) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(\n cleanPath(base + '/#' + location)\n );\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n return index === -1 ? '' : href.slice(index + 1)\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\n\nvar AbstractHistory = (function (History$$1) {\n function AbstractHistory (router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n });\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // main app already initialized.\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n this.history.push(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n var location = normalizeLocation(\n to,\n current || this.history.current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.0.1';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-router/dist/vue-router.esm.js\n// module id = /ocq\n// module chunks = 1","/*!\n * tiny-cookie - A tiny cookie manipulation plugin\n * https://github.com/Alex1990/tiny-cookie\n * Under the MIT license | (c) Alex Chao\n */\n\n!(function(root, factory) {\n\n // Uses CommonJS, AMD or browser global to create a jQuery plugin.\n // See: https://github.com/umdjs/umd\n if (typeof define === 'function' && define.amd) {\n // Expose this plugin as an AMD module. Register an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS module\n module.exports = factory();\n } else {\n // Browser globals \n root.Cookie = factory();\n }\n\n}(this, function() {\n\n 'use strict';\n\n // The public function which can get/set/remove cookie.\n function Cookie(key, value, opts) {\n if (value === void 0) {\n return Cookie.get(key);\n } else if (value === null) {\n Cookie.remove(key);\n } else {\n Cookie.set(key, value, opts);\n }\n }\n\n // Check if the cookie is enabled.\n Cookie.enabled = function() {\n var key = '__test_key';\n var enabled;\n\n document.cookie = key + '=1';\n enabled = !!document.cookie;\n\n if (enabled) Cookie.remove(key);\n\n return enabled;\n };\n\n // Get the cookie value by the key.\n Cookie.get = function(key, raw) {\n if (typeof key !== 'string' || !key) return null;\n\n key = '(?:^|; )' + escapeRe(key) + '(?:=([^;]*?))?(?:;|$)';\n\n var reKey = new RegExp(key);\n var res = reKey.exec(document.cookie);\n\n return res !== null ? (raw ? res[1] : decodeURIComponent(res[1])) : null;\n };\n\n // Get the cookie's value without decoding.\n Cookie.getRaw = function(key) {\n return Cookie.get(key, true);\n };\n\n // Set a cookie.\n Cookie.set = function(key, value, raw, opts) {\n if (raw !== true) {\n opts = raw;\n raw = false;\n }\n opts = opts ? convert(opts) : convert({});\n var cookie = key + '=' + (raw ? value : encodeURIComponent(value)) + opts;\n document.cookie = cookie;\n };\n\n // Set a cookie without encoding the value.\n Cookie.setRaw = function(key, value, opts) {\n Cookie.set(key, value, true, opts);\n };\n\n // Remove a cookie by the specified key.\n Cookie.remove = function(key) {\n Cookie.set(key, 'a', { expires: new Date() });\n };\n\n // Helper function\n // ---------------\n\n // Escape special characters.\n function escapeRe(str) {\n return str.replace(/[.*+?^$|[\\](){}\\\\-]/g, '\\\\$&');\n }\n\n // Convert an object to a cookie option string.\n function convert(opts) {\n var res = '';\n\n for (var p in opts) {\n if (opts.hasOwnProperty(p)) {\n\n if (p === 'expires') {\n var expires = opts[p];\n if (typeof expires !== 'object') {\n expires += typeof expires === 'number' ? 'D' : '';\n expires = computeExpires(expires);\n }\n opts[p] = expires.toUTCString();\n }\n\n if (p === 'secure') {\n if (opts[p]) {\n res += ';' + p;\n }\n\n continue;\n }\n\n res += ';' + p + '=' + opts[p];\n }\n }\n\n if (!opts.hasOwnProperty('path')) {\n res += ';path=/';\n }\n\n return res;\n }\n\n // Return a future date by the given string.\n function computeExpires(str) {\n var expires = new Date();\n var lastCh = str.charAt(str.length - 1);\n var value = parseInt(str, 10);\n\n switch (lastCh) {\n case 'Y': expires.setFullYear(expires.getFullYear() + value); break;\n case 'M': expires.setMonth(expires.getMonth() + value); break;\n case 'D': expires.setDate(expires.getDate() + value); break;\n case 'h': expires.setHours(expires.getHours() + value); break;\n case 'm': expires.setMinutes(expires.getMinutes() + value); break;\n case 's': expires.setSeconds(expires.getSeconds() + value); break;\n default: expires = new Date(str);\n }\n\n return expires;\n }\n\n return Cookie;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tiny-cookie/tiny-cookie.js\n// module id = 2DS2\n// module chunks = 1","/*!\n * Vue.js v2.5.16\n * (c) 2014-2018 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value e.g. [object Object]\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if a attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it... e.g.\n * PhantomJS 1.x. Technically we don't need this anymore since native bind is\n * now more performant in most browsers, but removing it would be breaking for\n * code that was able to run in PhantomJS 1.x, so this must be kept for\n * backwards compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n})\n\n/* */\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src, keys) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n if (!getter && arguments.length === 2) {\n val = obj[key];\n }\n var setter = property && property.set;\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false && isObject(value) && ('@binding' in value))\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', ')) +\n \", got \" + (toRawType(value)) + \".\",\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n/* globals MessageChannel */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both microtasks and (macro) tasks.\n// In < 2.4 we used microtasks everywhere, but there are some scenarios where\n// microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using (macro) tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use microtask by default, but expose a way to force (macro) task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine microtask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a (macro) task instead of a microtask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n var res = fn.apply(null, arguments);\n useMacroTask = false;\n return res\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, def, cur, old, event;\n for (name in on) {\n def = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n /* istanbul ignore if */\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.