diff --git a/.gitignore b/.gitignore
index eb1f17538..166cceaa6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,5 @@ example/ldap/private.ldif
Configuration.schema.json
users_database.test.yml
+
+.suite
diff --git a/.npmignore b/.npmignore
index 5248d7d1b..93304db63 100644
--- a/.npmignore
+++ b/.npmignore
@@ -8,13 +8,11 @@ images/
example/
.travis.yml
-config.test.yml
CONTRIBUTORS.md
Dockerfile
docker-compose.*
Gruntfile.js
tslint.json
tsconfig.json
-users_database.yml
*.tgz
diff --git a/.travis.yml b/.travis.yml
index 40c9cec3a..f71f06bce 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
language: node_js
node_js:
-- '8'
+- '9'
services:
- docker
- ntp
@@ -23,16 +23,20 @@ addons:
- public.example.com
- authelia.example.com
- admin.example.com
+
before_install:
- npm install -g npm@'>=2.13.5'
+- pushd client && npm install && popd
+
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3
script:
-- "./scripts/travis.sh"
+- "./scripts/authelia-scripts travis"
after_success:
-- "./scripts/docker-publish.sh"
+- "./scripts/authelia-scripts docker publish"
+
deploy:
provider: npm
email: clement.michaud34@gmail.com
diff --git a/Dockerfile b/Dockerfile
index 6687edd86..7abb1699f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,7 +12,7 @@ RUN apk --update add --no-cache --virtual \
COPY dist/server /usr/src/server
COPY dist/shared /usr/src/shared
-EXPOSE 8080
+EXPOSE 9091
VOLUME /etc/authelia
VOLUME /var/lib/authelia
diff --git a/Dockerfile.dev b/Dockerfile.dev
deleted file mode 100644
index 6eede7cc7..000000000
--- a/Dockerfile.dev
+++ /dev/null
@@ -1,20 +0,0 @@
-FROM node:8.7.0-alpine
-
-WORKDIR /usr/src
-
-COPY package.json /usr/src/package.json
-
-RUN apk --update add --no-cache --virtual \
- .build-deps make g++ python && \
- npm install && \
- apk del .build-deps
-
-COPY dist/server /usr/src/server
-COPY dist/shared /usr/src/shared
-
-EXPOSE 8080
-
-VOLUME /etc/authelia
-VOLUME /var/lib/authelia
-
-CMD ["node", "server/src/index.js", "/etc/authelia/config.yml"]
diff --git a/Gruntfile.js b/Gruntfile.js
deleted file mode 100644
index 5dea75530..000000000
--- a/Gruntfile.js
+++ /dev/null
@@ -1,246 +0,0 @@
-module.exports = function (grunt) {
- const buildDir = "dist";
- const schemaDir = "server/src/lib/configuration/Configuration.schema.json"
- var theme = grunt.option('theme') || 'default';
-
- grunt.initConfig({
- env: {
- "env-test-server-unit": {
- TS_NODE_PROJECT: "server/tsconfig.json"
- },
- "env-test-client-unit": {
- TS_NODE_PROJECT: "client/tsconfig.json"
- },
- "env-test-shared-unit": {
- TS_NODE_PROJECT: "server/tsconfig.json"
- }
- },
- clean: {
- dist: ['dist'],
- backup: ['backup'],
- },
- run: {
- "compile-server": {
- cmd: "./node_modules/.bin/tsc",
- args: ['-p', 'server/tsconfig.json']
- },
- "generate-config-schema": {
- cmd: "./node_modules/.bin/typescript-json-schema",
- args: ["-o", schemaDir, "--strictNullChecks",
- "--required", "server/tsconfig.json", "Configuration"]
- },
- "compile-client": {
- cmd: "./node_modules/.bin/tsc",
- args: ['-p', 'client/tsconfig.json']
- },
- "lint-server": {
- cmd: "./node_modules/.bin/tslint",
- args: ['-c', 'server/tslint.json', '-p', 'server/tsconfig.json']
- },
- "lint-client": {
- cmd: "./node_modules/.bin/tslint",
- args: ['-c', 'client/tslint.json', '-p', 'client/tsconfig.json']
- },
- "test-server-unit": {
- cmd: "./node_modules/.bin/mocha",
- args: ['--colors', '--require', 'ts-node/register', 'server/src/**/*.spec.ts']
- },
- "test-shared-unit": {
- cmd: "./node_modules/.bin/mocha",
- args: ['--colors', '--require', 'ts-node/register', 'shared/**/*.spec.ts']
- },
- "test-client-unit": {
- cmd: "./node_modules/.bin/mocha",
- args: ['--colors', '--require', 'ts-node/register', 'client/test/**/*.test.ts']
- },
- "test-cucumber": {
- cmd: "./scripts/run-cucumber.sh",
- args: ["./test/features"]
- },
- "test-complete-config": {
- cmd: "./node_modules/.bin/mocha",
- args: ['--colors', '--require', 'ts-node/register', 'test/complete-config/**/*.ts']
- },
- "test-minimal-config": {
- cmd: "./node_modules/.bin/mocha",
- args: ['--colors', '--require', 'ts-node/register', 'test/minimal-config/**/*.ts']
- },
- "test-inactivity": {
- cmd: "./node_modules/.bin/mocha",
- args: ['--colors', '--require', 'ts-node/register', 'test/inactivity/**/*.ts']
- },
- "docker-build": {
- cmd: "docker",
- args: ['build', '-t', 'clems4ever/authelia', '.']
- },
- "minify": {
- cmd: "./node_modules/.bin/uglifyjs",
- args: [`${buildDir}/server/src/public_html/js/authelia.js`, '-o', `${buildDir}/server/src/public_html/js/authelia.min.js`]
- },
- "apidoc": {
- cmd: "./node_modules/.bin/apidoc",
- args: ["-i", "src/server", "-o", "doc"]
- },
- "include-minified-script": {
- cmd: "sed",
- args: ["-i", "s/authelia.\(js\|css\)/authelia.min.\1/", `${buildDir}/server/src/views/layout/layout.pug`]
- }
- },
- copy: {
- backup: {
- files: [{
- expand: true,
- src: ['dist/**'],
- dest: 'backup'
- }]
- },
- resources: {
- expand: true,
- cwd: 'themes/' + theme + '/server/src/resources',
- src: '**',
- dest: `${buildDir}/server/src/resources/`
- },
- views: {
- expand: true,
- cwd: 'themes/' + theme + '/server/src/views',
- src: '**',
- dest: `${buildDir}/server/src/views/`
- },
- images: {
- expand: true,
- cwd: 'themes/' + theme + '/client/src/img',
- src: '**',
- dest: `${buildDir}/server/src/public_html/img/`
- },
- thirdparties: {
- expand: true,
- cwd: 'themes/' + theme + '/client/src/thirdparties',
- src: '**',
- dest: `${buildDir}/server/src/public_html/js/`
- },
- schema: {
- src: schemaDir,
- dest: `${buildDir}/${schemaDir}`
- }
- },
- browserify: {
- dist: {
- src: ['dist/client/src/index.js'],
- dest: `${buildDir}/server/src/public_html/js/authelia.js`,
- options: {
- browserifyOptions: {
- standalone: 'authelia'
- },
- },
- },
- },
- watch: {
- views: {
- files: ['server/src/views/**/*.pug'],
- tasks: ['copy:views'],
- options: {
- interrupt: false,
- atBegin: true
- }
- },
- resources: {
- files: ['server/src/resources/*.ejs'],
- tasks: ['copy:resources'],
- options: {
- interrupt: false,
- atBegin: true
- }
- },
- images: {
- files: ['client/src/img/**'],
- tasks: ['copy:images'],
- options: {
- interrupt: false,
- atBegin: true
- }
- },
- css: {
- files: ['client/src/**/*.css'],
- tasks: ['concat:css', 'cssmin'],
- options: {
- interrupt: true,
- atBegin: true
- }
- },
- client: {
- files: ['client/src/**/*.ts'],
- tasks: ['build-dev'],
- options: {
- interrupt: true,
- atBegin: true
- }
- },
- server: {
- files: ['server/src/**/*.ts'],
- tasks: ['build-dev', 'run:docker-restart', 'run:make-dev-views' ],
- options: {
- interrupt: true,
- atBegin: true
- }
- }
- },
- concat: {
- css: {
- src: ['themes/' + theme + '/client/src/css/*.css'],
- dest: `${buildDir}/server/src/public_html/css/authelia.css`
- },
- },
- cssmin: {
- target: {
- files: {
- [`${buildDir}/server/src/public_html/css/authelia.min.css`]: [`${buildDir}/server/src/public_html/css/authelia.css`]
- }
- }
- }
- });
-
- grunt.loadNpmTasks('grunt-browserify');
- grunt.loadNpmTasks('grunt-contrib-concat');
- grunt.loadNpmTasks('grunt-contrib-copy');
- grunt.loadNpmTasks('grunt-contrib-cssmin');
- grunt.loadNpmTasks('grunt-contrib-watch');
- grunt.loadNpmTasks('grunt-contrib-clean');
- grunt.loadNpmTasks('grunt-run');
- grunt.loadNpmTasks('grunt-env');
-
- grunt.registerTask('compile-server', ['run:lint-server', 'run:compile-server'])
- grunt.registerTask('compile-client', ['run:lint-client', 'run:compile-client'])
-
- grunt.registerTask('test-server', ['env:env-test-server-unit', 'run:test-server-unit'])
- grunt.registerTask('test-shared', ['env:env-test-shared-unit', 'run:test-shared-unit'])
- grunt.registerTask('test-client', ['env:env-test-client-unit', 'run:test-client-unit'])
- grunt.registerTask('test-unit', ['test-server', 'test-client', 'test-shared']);
- grunt.registerTask('test-int', ['run:test-cucumber', 'run:test-minimal-config', 'run:test-complete-config', 'run:test-inactivity']);
-
- grunt.registerTask('copy-resources', ['copy:resources', 'copy:views', 'copy:images', 'copy:thirdparties', 'concat:css']);
-
- grunt.registerTask('generate-config-schema', ['run:generate-config-schema', 'copy:schema']);
-
- grunt.registerTask('build-client', ['compile-client', 'browserify']);
-
- grunt.registerTask('build-server', ['compile-server', 'copy-resources', 'generate-config-schema']);
-
- grunt.registerTask('build', ['build-client', 'build-server']);
- grunt.registerTask('build-dist', ['clean:backup', 'copy:backup', 'clean:dist', 'build', 'run:minify', 'cssmin', 'run:include-minified-script']);
-
- grunt.registerTask('schema', ['run:generate-config-schema'])
-
- grunt.registerTask('docker-build', ['run:docker-build']);
-
- grunt.registerTask('check', function() {
- if ((theme != 'default') && (theme != 'black') && (theme != 'matrix') && (theme != 'squares') && (theme != 'triangles')) {
- grunt.warn('Valid argmuents are just "grunt" (will use default) or "grunt --theme=|default|black|matrix|squares|triangles"');
- }
- if (grunt.option('theme') == 'default' || 'black' || 'matrix' || 'squares' || 'triangles') {
- grunt.log.ok();
- grunt.log.writeln('Building "'+ theme +'" theme');
- }
- });
-
- grunt.registerTask('default', ['check', 'build-dist']);
-};
diff --git a/client/.env.development b/client/.env.development
new file mode 100644
index 000000000..a708a53b5
--- /dev/null
+++ b/client/.env.development
@@ -0,0 +1,2 @@
+
+REACT_APP_CSP_CONTENT="default-src 'unsafe-inline'; script-src * 'unsafe-inline'; img-src * data:; style-src 'unsafe-inline'; connect-src * 'unsafe-inline' extensions:"
diff --git a/client/.env.production b/client/.env.production
new file mode 100644
index 000000000..959e56fbc
--- /dev/null
+++ b/client/.env.production
@@ -0,0 +1,2 @@
+
+REACT_APP_CSP_CONTENT="default-src 'self'; style-src 'self'; script-src 'self'; img-src 'self' data:"
diff --git a/client/.gitignore b/client/.gitignore
new file mode 100644
index 000000000..4d29575de
--- /dev/null
+++ b/client/.gitignore
@@ -0,0 +1,23 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/client/Dockerfile b/client/Dockerfile
new file mode 100644
index 000000000..d7a7e1a0c
--- /dev/null
+++ b/client/Dockerfile
@@ -0,0 +1,9 @@
+FROM node:10.15.0-jessie
+
+WORKDIR /usr/app/client
+
+ADD package.json package.json
+
+RUN npm i
+
+CMD ["npm", "start"]
diff --git a/client/README.md b/client/README.md
new file mode 100644
index 000000000..897dc8366
--- /dev/null
+++ b/client/README.md
@@ -0,0 +1,44 @@
+This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm start`
+
+Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
+
+The page will reload if you make edits.
+You will also see any lint errors in the console.
+
+### `npm test`
+
+Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
+
+### `npm run build`
+
+Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.
+Your app is ready to be deployed!
+
+See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+
+### `npm run eject`
+
+**Note: this is a one-way operation. Once you `eject`, you can’t go back!**
+
+If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
+
+Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
+
+You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
+
+## Learn More
+
+You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
+
+To learn React, check out the [React documentation](https://reactjs.org/).
diff --git a/client/docker-compose.yml b/client/docker-compose.yml
new file mode 100644
index 000000000..37c5d0ac2
--- /dev/null
+++ b/client/docker-compose.yml
@@ -0,0 +1,15 @@
+version: '2'
+services:
+ authelia-frontend-dev:
+ build:
+ context: client
+ restart: always
+ volumes:
+ - ./client/tsconfig.json:/usr/app/client/tsconfig.json
+ - ./client/public:/usr/app/client/public
+ - ./client/src:/usr/app/client/src
+ - ./client/.env.development:/usr/app/client/.env.development
+ networks:
+ authelianet:
+ aliases:
+ - authelia-frontend
diff --git a/client/package-lock.json b/client/package-lock.json
new file mode 100644
index 000000000..445262e82
--- /dev/null
+++ b/client/package-lock.json
@@ -0,0 +1,17959 @@
+{
+ "name": "authelia-portal",
+ "version": "0.1.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
+ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "requires": {
+ "@babel/highlight": "7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.6.tgz",
+ "integrity": "sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw==",
+ "requires": {
+ "@babel/code-frame": "7.0.0",
+ "@babel/generator": "7.2.2",
+ "@babel/helpers": "7.2.0",
+ "@babel/parser": "7.2.3",
+ "@babel/template": "7.2.2",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2",
+ "convert-source-map": "1.6.0",
+ "debug": "4.1.1",
+ "json5": "2.1.0",
+ "lodash": "4.17.11",
+ "resolve": "1.8.1",
+ "semver": "5.6.0",
+ "source-map": "0.5.7"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz",
+ "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==",
+ "requires": {
+ "@babel/types": "7.2.2",
+ "jsesc": "2.5.2",
+ "lodash": "4.17.11",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
+ "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
+ "requires": {
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+ "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "7.1.0",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-builder-react-jsx": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz",
+ "integrity": "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==",
+ "requires": {
+ "@babel/types": "7.2.2",
+ "esutils": "2.0.2"
+ }
+ },
+ "@babel/helper-call-delegate": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz",
+ "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==",
+ "requires": {
+ "@babel/helper-hoist-variables": "7.0.0",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz",
+ "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==",
+ "requires": {
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/types": "7.2.2",
+ "lodash": "4.17.11"
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
+ "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
+ "requires": {
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
+ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+ "requires": {
+ "@babel/helper-get-function-arity": "7.0.0",
+ "@babel/template": "7.2.2",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
+ "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+ "requires": {
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz",
+ "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==",
+ "requires": {
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz",
+ "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==",
+ "requires": {
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
+ "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
+ "requires": {
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz",
+ "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==",
+ "requires": {
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-simple-access": "7.1.0",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "@babel/template": "7.2.2",
+ "@babel/types": "7.2.2",
+ "lodash": "4.17.11"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
+ "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
+ "requires": {
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA=="
+ },
+ "@babel/helper-regex": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz",
+ "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==",
+ "requires": {
+ "lodash": "4.17.11"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
+ "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-wrap-function": "7.2.0",
+ "@babel/template": "7.2.2",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz",
+ "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==",
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "7.0.0",
+ "@babel/helper-optimise-call-expression": "7.0.0",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
+ "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
+ "requires": {
+ "@babel/template": "7.2.2",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
+ "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
+ "requires": {
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
+ "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
+ "requires": {
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/template": "7.2.2",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz",
+ "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==",
+ "requires": {
+ "@babel/template": "7.2.2",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
+ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+ "requires": {
+ "chalk": "2.4.1",
+ "esutils": "2.0.2",
+ "js-tokens": "4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz",
+ "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA=="
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
+ "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-remap-async-to-generator": "7.1.0",
+ "@babel/plugin-syntax-async-generators": "7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz",
+ "integrity": "sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw==",
+ "requires": {
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-member-expression-to-functions": "7.0.0",
+ "@babel/helper-optimise-call-expression": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.2.3",
+ "@babel/plugin-syntax-class-properties": "7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.1.6.tgz",
+ "integrity": "sha512-U42f8KhUbtlhUDyV/wK4Rq/wWh8vWyttYABckG/v0vVnMPvayOewZC/83CbVdmyP+UhEqI368FEQ7hHMfhBpQA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.2.3",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "@babel/plugin-syntax-decorators": "7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
+ "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-json-strings": "7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz",
+ "integrity": "sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz",
+ "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0",
+ "regexpu-core": "4.4.0"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
+ "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-class-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz",
+ "integrity": "sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-decorators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz",
+ "integrity": "sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz",
+ "integrity": "sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-flow": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz",
+ "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
+ "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
+ "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
+ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz",
+ "integrity": "sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
+ "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz",
+ "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==",
+ "requires": {
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-remap-async-to-generator": "7.1.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
+ "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz",
+ "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "lodash": "4.17.11"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz",
+ "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-define-map": "7.1.0",
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-optimise-call-expression": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.2.3",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "globals": "11.10.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
+ "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz",
+ "integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz",
+ "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0",
+ "regexpu-core": "4.4.0"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz",
+ "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
+ "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "7.1.0",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-flow-strip-types": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.1.6.tgz",
+ "integrity": "sha512-0tyFAAjJmnRlr8MVJV39ASn1hv+PbdVP71hf7aAseqLfQ0o9QXk9htbMbq7/ZYXnUIp6gDw0lUUP0+PQMbbtmg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-flow": "7.2.0"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz",
+ "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz",
+ "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==",
+ "requires": {
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
+ "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz",
+ "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==",
+ "requires": {
+ "@babel/helper-module-transforms": "7.2.2",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz",
+ "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==",
+ "requires": {
+ "@babel/helper-module-transforms": "7.2.2",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-simple-access": "7.1.0"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz",
+ "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==",
+ "requires": {
+ "@babel/helper-hoist-variables": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
+ "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
+ "requires": {
+ "@babel/helper-module-transforms": "7.2.2",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz",
+ "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz",
+ "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.2.3"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz",
+ "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==",
+ "requires": {
+ "@babel/helper-call-delegate": "7.1.0",
+ "@babel/helper-get-function-arity": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-constant-elements": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz",
+ "integrity": "sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-display-name": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz",
+ "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz",
+ "integrity": "sha512-h/fZRel5wAfCqcKgq3OhbmYaReo7KkoJBpt8XnvpS7wqaNMqtw5xhxutzcm35iMUWucfAdT/nvGTsWln0JTg2Q==",
+ "requires": {
+ "@babel/helper-builder-react-jsx": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-jsx": "7.2.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-self": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz",
+ "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-jsx": "7.2.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz",
+ "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-jsx": "7.2.0"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz",
+ "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==",
+ "requires": {
+ "regenerator-transform": "0.13.3"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz",
+ "integrity": "sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg==",
+ "requires": {
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "resolve": "1.8.1",
+ "semver": "5.6.0"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
+ "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
+ "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
+ "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz",
+ "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
+ "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.2.0.tgz",
+ "integrity": "sha512-EnI7i2/gJ7ZNr2MuyvN2Hu+BHJENlxWte5XygPvfj/MbvtOkWor9zcnHpMMQL2YYaaCcqtIvJUyJ7QVfoGs7ew==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-typescript": "7.2.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz",
+ "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-regex": "7.0.0",
+ "regexpu-core": "4.4.0"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.3.tgz",
+ "integrity": "sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw==",
+ "requires": {
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-proposal-async-generator-functions": "7.2.0",
+ "@babel/plugin-proposal-json-strings": "7.2.0",
+ "@babel/plugin-proposal-object-rest-spread": "7.2.0",
+ "@babel/plugin-proposal-optional-catch-binding": "7.2.0",
+ "@babel/plugin-proposal-unicode-property-regex": "7.2.0",
+ "@babel/plugin-syntax-async-generators": "7.2.0",
+ "@babel/plugin-syntax-object-rest-spread": "7.2.0",
+ "@babel/plugin-syntax-optional-catch-binding": "7.2.0",
+ "@babel/plugin-transform-arrow-functions": "7.2.0",
+ "@babel/plugin-transform-async-to-generator": "7.2.0",
+ "@babel/plugin-transform-block-scoped-functions": "7.2.0",
+ "@babel/plugin-transform-block-scoping": "7.2.0",
+ "@babel/plugin-transform-classes": "7.2.2",
+ "@babel/plugin-transform-computed-properties": "7.2.0",
+ "@babel/plugin-transform-destructuring": "7.2.0",
+ "@babel/plugin-transform-dotall-regex": "7.2.0",
+ "@babel/plugin-transform-duplicate-keys": "7.2.0",
+ "@babel/plugin-transform-exponentiation-operator": "7.2.0",
+ "@babel/plugin-transform-for-of": "7.2.0",
+ "@babel/plugin-transform-function-name": "7.2.0",
+ "@babel/plugin-transform-literals": "7.2.0",
+ "@babel/plugin-transform-modules-amd": "7.2.0",
+ "@babel/plugin-transform-modules-commonjs": "7.2.0",
+ "@babel/plugin-transform-modules-systemjs": "7.2.0",
+ "@babel/plugin-transform-modules-umd": "7.2.0",
+ "@babel/plugin-transform-new-target": "7.0.0",
+ "@babel/plugin-transform-object-super": "7.2.0",
+ "@babel/plugin-transform-parameters": "7.2.0",
+ "@babel/plugin-transform-regenerator": "7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "7.2.0",
+ "@babel/plugin-transform-spread": "7.2.2",
+ "@babel/plugin-transform-sticky-regex": "7.2.0",
+ "@babel/plugin-transform-template-literals": "7.2.0",
+ "@babel/plugin-transform-typeof-symbol": "7.2.0",
+ "@babel/plugin-transform-unicode-regex": "7.2.0",
+ "browserslist": "4.3.7",
+ "invariant": "2.2.4",
+ "js-levenshtein": "1.1.5",
+ "semver": "5.6.0"
+ }
+ },
+ "@babel/preset-react": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz",
+ "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-transform-react-display-name": "7.2.0",
+ "@babel/plugin-transform-react-jsx": "7.2.0",
+ "@babel/plugin-transform-react-jsx-self": "7.2.0",
+ "@babel/plugin-transform-react-jsx-source": "7.2.0"
+ }
+ },
+ "@babel/preset-typescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz",
+ "integrity": "sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-transform-typescript": "7.2.0"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz",
+ "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==",
+ "requires": {
+ "regenerator-runtime": "0.12.1"
+ }
+ },
+ "@babel/template": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
+ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==",
+ "requires": {
+ "@babel/code-frame": "7.0.0",
+ "@babel/parser": "7.2.3",
+ "@babel/types": "7.2.2"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz",
+ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==",
+ "requires": {
+ "@babel/code-frame": "7.0.0",
+ "@babel/generator": "7.2.2",
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "@babel/parser": "7.2.3",
+ "@babel/types": "7.2.2",
+ "debug": "4.1.1",
+ "globals": "11.10.0",
+ "lodash": "4.17.11"
+ }
+ },
+ "@babel/types": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz",
+ "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==",
+ "requires": {
+ "esutils": "2.0.2",
+ "lodash": "4.17.11",
+ "to-fast-properties": "2.0.0"
+ }
+ },
+ "@csstools/convert-colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
+ "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw=="
+ },
+ "@material/animation": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/animation/-/animation-0.41.0.tgz",
+ "integrity": "sha512-yYAwJbX3Q2AFd4dr6IYOsWLQy2HN8zWOFVl9AbUXunjzTfJCa/ecfXCriaT6qkmoNoHeTdJHRrsQJZC5GsPvzA=="
+ },
+ "@material/base": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/base/-/base-0.41.0.tgz",
+ "integrity": "sha512-tEyzwBRu3d1H120SfKsDVYZHcqT5lKohh/7cWKR93aAaPDkSvjpKJIjyu2yuSkjpDduVZGzVocYbOvhUKhhzXQ=="
+ },
+ "@material/button": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/button/-/button-0.41.0.tgz",
+ "integrity": "sha512-9mA/7P8yD3YPJ8ijwu0oOiT65OCa8Km3M9OF6VAsBE+XJS9Wo5hWDMgkv16raeOFeXj+1ALsjvuTz31JdcSkgQ==",
+ "requires": {
+ "@material/elevation": "0.41.0",
+ "@material/ripple": "0.41.0",
+ "@material/rtl": "0.40.1",
+ "@material/shape": "0.41.0",
+ "@material/theme": "0.41.0",
+ "@material/typography": "0.41.0"
+ }
+ },
+ "@material/checkbox": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-0.41.0.tgz",
+ "integrity": "sha512-Zz6e5WRpziO7Z+4rbEs8GHNNBf1UuttniLp6/RvwPSQRaD8G04sdg4HcP/aDCY1KGMwivkuDPc2Bsgs6j+rD7Q==",
+ "requires": {
+ "@material/animation": "0.41.0",
+ "@material/base": "0.41.0",
+ "@material/ripple": "0.41.0",
+ "@material/rtl": "0.40.1",
+ "@material/selection-control": "0.41.0",
+ "@material/theme": "0.41.0"
+ }
+ },
+ "@material/elevation": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-0.41.0.tgz",
+ "integrity": "sha512-ZtZS8z5ie9c7Cx5PVudgSorGYa0C3lu3dA+Nn6qJdhGUokl01msh54NfNuwk+EZsk65bNRRqw1Td/63TCbKIzg==",
+ "requires": {
+ "@material/animation": "0.41.0",
+ "@material/theme": "0.41.0"
+ }
+ },
+ "@material/floating-label": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-0.41.0.tgz",
+ "integrity": "sha512-qI6f1nZU3crXxWAI9fw3U5fHw2qOzEor49EvskbcaV5KSRW5qO+jtfUQ3ib/Vhki7lqhgwNHB/0n7KYhvhjRHQ==",
+ "requires": {
+ "@material/animation": "0.41.0",
+ "@material/base": "0.41.0",
+ "@material/rtl": "0.40.1",
+ "@material/theme": "0.41.0",
+ "@material/typography": "0.41.0"
+ }
+ },
+ "@material/line-ripple": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-0.41.0.tgz",
+ "integrity": "sha512-5DDIoC3d78fCLhNgle7DRFojT3D2SF+XVpUd3g6yLZmybHB7832p4bgl/qGpbIXwk1wAQA1dkUgKH5foxorjNQ==",
+ "requires": {
+ "@material/animation": "0.41.0",
+ "@material/base": "0.41.0",
+ "@material/theme": "0.41.0"
+ }
+ },
+ "@material/notched-outline": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-0.41.0.tgz",
+ "integrity": "sha512-nQBkOXvkd5G9FeJ9UuecZh88WRgTsnGVvfj7UFJZEkvkzZwLBGUiJS6fF9FYraih3ZFgmphdbJxXEd9af3cqyQ==",
+ "requires": {
+ "@material/animation": "0.41.0",
+ "@material/base": "0.41.0",
+ "@material/rtl": "0.40.1",
+ "@material/shape": "0.41.0",
+ "@material/theme": "0.41.0"
+ }
+ },
+ "@material/react-button": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@material/react-button/-/react-button-0.8.0.tgz",
+ "integrity": "sha512-j/wk/HK2A3/mb+yFdYCbkWFi6hYvvq4fc4t1M3aRLgdeddMNn/+FHOu014dyKeFW93RrBn1WAdQTwCc31KivuQ==",
+ "requires": {
+ "@material/button": "0.41.0",
+ "@material/react-ripple": "0.8.0",
+ "classnames": "2.2.6",
+ "react": "16.7.0"
+ }
+ },
+ "@material/react-checkbox": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@material/react-checkbox/-/react-checkbox-0.8.0.tgz",
+ "integrity": "sha512-/7wQcFovUa04/T0MnJOnrbGn21CgxSSWjqkbMPFh/RjET8vya/kqAjhkLw51Mk4q6si+nfHljM6YSFvvXbUBBw==",
+ "requires": {
+ "@material/checkbox": "0.41.0",
+ "@material/react-ripple": "0.8.0",
+ "classnames": "2.2.6",
+ "react": "16.7.0"
+ }
+ },
+ "@material/react-floating-label": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@material/react-floating-label/-/react-floating-label-0.8.0.tgz",
+ "integrity": "sha512-Bfa+/4nLFu6YE0pAB1wG+vxwYiFvHcOKIq7uAB/IY0/N/ONKM2Jh74/KKqLvNJI608YpZqLAqmZu87R3K15rNQ==",
+ "requires": {
+ "@material/floating-label": "0.41.0",
+ "classnames": "2.2.6",
+ "react": "16.7.0"
+ }
+ },
+ "@material/react-line-ripple": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@material/react-line-ripple/-/react-line-ripple-0.8.0.tgz",
+ "integrity": "sha512-s921awUm8taB/kbETGN/vEEZV1WUwtTcsNkQ//HsK2fJW7lKuyVWrObc8ZhMFWljVEUj54ANmRvCke7M4/LSmA==",
+ "requires": {
+ "@material/line-ripple": "0.41.0",
+ "classnames": "2.2.6",
+ "react": "16.7.0"
+ }
+ },
+ "@material/react-notched-outline": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@material/react-notched-outline/-/react-notched-outline-0.8.0.tgz",
+ "integrity": "sha512-fQ8hHGOQ3dpk9AuuQqXbCAN2UTuRr5LCztkDxdCwvaPC+oR5meTd8RW7RkJgx/MeiSLe/1/2EMz+9lP+V0rx2w==",
+ "requires": {
+ "@material/notched-outline": "0.41.0",
+ "classnames": "2.2.6",
+ "react": "16.7.0"
+ }
+ },
+ "@material/react-ripple": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@material/react-ripple/-/react-ripple-0.8.0.tgz",
+ "integrity": "sha512-ThH9Px42poicRXgFBTfLjbAsVIUi6wmX4RszDPwiSTVMQYc785n240VAD8MfVCR27ykIxCrys/YibqxvREvjUQ==",
+ "requires": {
+ "@material/ripple": "0.41.0",
+ "classnames": "2.2.6",
+ "react": "16.7.0"
+ }
+ },
+ "@material/react-text-field": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@material/react-text-field/-/react-text-field-0.8.0.tgz",
+ "integrity": "sha512-eISr4YIBmsIarQQU/LhAPfB9M8srY8Tzagqw6E2z5JyHux8eHlsMWSuYD6eh4FiQekdZoIgoJjlFIGhOvNV59Q==",
+ "requires": {
+ "@material/react-floating-label": "0.8.0",
+ "@material/react-line-ripple": "0.8.0",
+ "@material/react-notched-outline": "0.8.0",
+ "@material/textfield": "0.41.0",
+ "classnames": "2.2.6",
+ "react": "16.7.0"
+ }
+ },
+ "@material/ripple": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-0.41.0.tgz",
+ "integrity": "sha512-rxEUVWM4AByDlTCH0kkthZQmUuY6eeN0X6cOHBoioFN2vUDk0D0Nfzz/N9FF2AlAf8C2lDDLrTuqnJPVIn+NHA==",
+ "requires": {
+ "@material/animation": "0.41.0",
+ "@material/base": "0.41.0",
+ "@material/theme": "0.41.0"
+ }
+ },
+ "@material/rtl": {
+ "version": "0.40.1",
+ "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-0.40.1.tgz",
+ "integrity": "sha512-Pk6Iw1/KrhWZoZtkDsPMDUW0bm7Z1zeXb3MTQRCFmjf1wU5cRxgOTtuoZLcJqlcKGppLAzJL/TJV3E7KEiuL0A=="
+ },
+ "@material/selection-control": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/selection-control/-/selection-control-0.41.0.tgz",
+ "integrity": "sha512-rRHGiZVPoP4nxAAoeqsgTsxz9GwInGs7HIlEhPfMFygmSZVUHHsuOJXSTpOKYi8GCoKHpB0RKZsAtxM0BYAelw==",
+ "requires": {
+ "@material/ripple": "0.41.0"
+ }
+ },
+ "@material/shape": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/shape/-/shape-0.41.0.tgz",
+ "integrity": "sha512-k1K3CjOVxclfb/0r28cOa2oJpP7QMA2fP0SOS3Vh8ale5Q2jkaHTL60KX8VkHvV6rMqShpXW+60gPjoz5XRbDQ=="
+ },
+ "@material/textfield": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-0.41.0.tgz",
+ "integrity": "sha512-kJ52W2gxOS2xfpreVhvHQ1u3UkiDl58duw9HkhEkK5Oi1bSDOtbnlWy0pGTOiAma5ZQgetPNgoa+T0zMBptfnw==",
+ "requires": {
+ "@material/animation": "0.41.0",
+ "@material/base": "0.41.0",
+ "@material/floating-label": "0.41.0",
+ "@material/line-ripple": "0.41.0",
+ "@material/notched-outline": "0.41.0",
+ "@material/ripple": "0.41.0",
+ "@material/rtl": "0.40.1",
+ "@material/shape": "0.41.0",
+ "@material/theme": "0.41.0",
+ "@material/typography": "0.41.0"
+ }
+ },
+ "@material/theme": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/theme/-/theme-0.41.0.tgz",
+ "integrity": "sha512-ohW2JxObKOWvP34EkIIcrEVtL3g0Gs/T3/MdOsM36euyshY8Jwl1f6fjVUQvVjSpixUtSb30/+ulblF8fTOwBg=="
+ },
+ "@material/typography": {
+ "version": "0.41.0",
+ "resolved": "https://registry.npmjs.org/@material/typography/-/typography-0.41.0.tgz",
+ "integrity": "sha512-15dlqSU+9uGcWdg4KXXcmDzTKJPb7/5Z9kmooONb2Laot1uiuntDXQS0yL+U2FYLW5Ros+WVMosDBKFruWx68A=="
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "requires": {
+ "call-me-maybe": "1.0.1",
+ "glob-to-regexp": "0.3.0"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
+ },
+ "@svgr/core": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-2.4.1.tgz",
+ "integrity": "sha512-2i1cUbjpKt1KcIP05e10vkmu9Aedp32EFqVcSQ08onbB8lVxJqMPci3Hr54aI14S9cLg4JdcpO0D35HHUtT8oQ==",
+ "requires": {
+ "camelcase": "5.0.0",
+ "cosmiconfig": "5.0.7",
+ "h2x-core": "1.1.1",
+ "h2x-plugin-jsx": "1.2.0",
+ "merge-deep": "3.0.2",
+ "prettier": "1.15.3",
+ "svgo": "1.1.1"
+ }
+ },
+ "@svgr/webpack": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-2.4.1.tgz",
+ "integrity": "sha512-sMHYq0zbMtSHcc9kVfkYI2zrl88u4mKGyQLgKt7r+ul5nITcncm/EPBhzEUrJY5izdlaU6EvyH8zOhZnfaSmOA==",
+ "requires": {
+ "@babel/core": "7.1.6",
+ "@babel/plugin-transform-react-constant-elements": "7.2.0",
+ "@babel/preset-env": "7.2.3",
+ "@babel/preset-react": "7.0.0",
+ "@svgr/core": "2.4.1",
+ "loader-utils": "1.2.3"
+ }
+ },
+ "@types/classnames": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.7.tgz",
+ "integrity": "sha512-rzOhiQ55WzAiFgXRtitP/ZUT8iVNyllEpylJ5zHzR4vArUvMB39GTk+Zon/uAM0JxEFAWnwsxC2gH8s+tZ3Myg=="
+ },
+ "@types/history": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.2.tgz",
+ "integrity": "sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q=="
+ },
+ "@types/jss": {
+ "version": "9.5.7",
+ "resolved": "https://registry.npmjs.org/@types/jss/-/jss-9.5.7.tgz",
+ "integrity": "sha512-OZimStu2QdDMtZ0h72JXqvLVbWUjXd5ZLk8vxLmfuC/nM1AabRyyGoxSufnzixrbpEcVcyy/JV5qeQu2JnjVZw==",
+ "requires": {
+ "csstype": "2.6.0",
+ "indefinite-observable": "1.0.2"
+ }
+ },
+ "@types/node": {
+ "version": "10.12.18",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
+ "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ=="
+ },
+ "@types/node-sass": {
+ "version": "3.10.32",
+ "resolved": "https://registry.npmjs.org/@types/node-sass/-/node-sass-3.10.32.tgz",
+ "integrity": "sha1-spbM5xRP+rd7hAkMqtTx5Lvqjgk=",
+ "requires": {
+ "@types/node": "10.12.18"
+ }
+ },
+ "@types/prop-types": {
+ "version": "15.5.8",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.8.tgz",
+ "integrity": "sha512-3AQoUxQcQtLHsK25wtTWIoIpgYjH3vSDroZOUr7PpCHw/jLY1RB9z9E8dBT/OSmwStVgkRNvdh+ZHNiomRieaw=="
+ },
+ "@types/q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz",
+ "integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA=="
+ },
+ "@types/qrcode.react": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@types/qrcode.react/-/qrcode.react-0.8.1.tgz",
+ "integrity": "sha512-OpMOBjWIMTnC1sdLcFgif/cXZYiPQGUN2yDaxC2EmZaAmElxehE+toMzPZvUJVXNyFXFdmYSDRWsjKtTTnqqAQ==",
+ "requires": {
+ "@types/react": "16.7.18"
+ }
+ },
+ "@types/query-string": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@types/query-string/-/query-string-6.2.0.tgz",
+ "integrity": "sha512-dnYqKg7eZ+t7ZhCuBtwLxjqON8yXr27hiu3zXfPqxfJSbWUZNwwISE0BJUxghlcKsk4lZSp7bdFSJBJVNWBfmA=="
+ },
+ "@types/react": {
+ "version": "16.7.18",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.7.18.tgz",
+ "integrity": "sha512-Tx4uu3ppK53/iHk6VpamMP3f3ahfDLEVt3ZQc8TFm30a1H3v9lMsCntBREswZIW/SKrvJjkb3Hq8UwO6GREBng==",
+ "requires": {
+ "@types/prop-types": "15.5.8",
+ "csstype": "2.6.0"
+ }
+ },
+ "@types/react-dom": {
+ "version": "16.0.11",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.11.tgz",
+ "integrity": "sha512-x6zUx9/42B5Kl2Vl9HlopV8JF64wLpX3c+Pst9kc1HgzrsH+mkehe/zmHMQTplIrR48H2gpU7ZqurQolYu8XBA==",
+ "requires": {
+ "@types/react": "16.7.18"
+ }
+ },
+ "@types/react-redux": {
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-6.0.12.tgz",
+ "integrity": "sha512-fvcpm7cfW/JMflRdZgegCVbSGYt/hyEWQKriesaLZDRDjBGKQsAiui08VCQg5lBpocPmulVGKFhICtOAcMUPOQ==",
+ "requires": {
+ "@types/react": "16.7.18",
+ "redux": "4.0.1"
+ }
+ },
+ "@types/react-router": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-4.4.3.tgz",
+ "integrity": "sha512-8GmjakEBFNCLJbpg9jtDp1EDvFP0VkIPPKBpVwmB3Q+9whFoHu8rluMUXUE5SoGkEQvVOtgJzWmUsJojNpFMQQ==",
+ "requires": {
+ "@types/history": "4.7.2",
+ "@types/react": "16.7.18"
+ }
+ },
+ "@types/react-router-dom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-4.3.1.tgz",
+ "integrity": "sha512-GbztJAScOmQ/7RsQfO4cd55RuH1W4g6V1gDW3j4riLlt+8yxYLqqsiMzmyuXBLzdFmDtX/uU2Bpcm0cmudv44A==",
+ "requires": {
+ "@types/history": "4.7.2",
+ "@types/react": "16.7.18",
+ "@types/react-router": "4.4.3"
+ }
+ },
+ "@types/redux-thunk": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/redux-thunk/-/redux-thunk-2.1.0.tgz",
+ "integrity": "sha1-vCtulylhgxr7gqm/TwZybjUflBY=",
+ "requires": {
+ "redux-thunk": "2.3.0"
+ }
+ },
+ "@types/tapable": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.2.tgz",
+ "integrity": "sha512-42zEJkBpNfMEAvWR5WlwtTH22oDzcMjFsL9gDGExwF8X8WvAiw7Vwop7hPw03QT8TKfec83LwbHj6SvpqM4ELQ=="
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.6.tgz",
+ "integrity": "sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ==",
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.7.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.6",
+ "@webassemblyjs/wast-parser": "1.7.6",
+ "mamacro": "0.0.3"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz",
+ "integrity": "sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA=="
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz",
+ "integrity": "sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg=="
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz",
+ "integrity": "sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw=="
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz",
+ "integrity": "sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg==",
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.7.6"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz",
+ "integrity": "sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw=="
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz",
+ "integrity": "sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw==",
+ "requires": {
+ "mamacro": "0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz",
+ "integrity": "sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q=="
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz",
+ "integrity": "sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/helper-buffer": "1.7.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.6",
+ "@webassemblyjs/wasm-gen": "1.7.6"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz",
+ "integrity": "sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ==",
+ "requires": {
+ "@xtuc/ieee754": "1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.6.tgz",
+ "integrity": "sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ==",
+ "requires": {
+ "@xtuc/long": "4.2.1"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.6.tgz",
+ "integrity": "sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw=="
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz",
+ "integrity": "sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/helper-buffer": "1.7.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.6",
+ "@webassemblyjs/helper-wasm-section": "1.7.6",
+ "@webassemblyjs/wasm-gen": "1.7.6",
+ "@webassemblyjs/wasm-opt": "1.7.6",
+ "@webassemblyjs/wasm-parser": "1.7.6",
+ "@webassemblyjs/wast-printer": "1.7.6"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz",
+ "integrity": "sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.6",
+ "@webassemblyjs/ieee754": "1.7.6",
+ "@webassemblyjs/leb128": "1.7.6",
+ "@webassemblyjs/utf8": "1.7.6"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz",
+ "integrity": "sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/helper-buffer": "1.7.6",
+ "@webassemblyjs/wasm-gen": "1.7.6",
+ "@webassemblyjs/wasm-parser": "1.7.6"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz",
+ "integrity": "sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/helper-api-error": "1.7.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.7.6",
+ "@webassemblyjs/ieee754": "1.7.6",
+ "@webassemblyjs/leb128": "1.7.6",
+ "@webassemblyjs/utf8": "1.7.6"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz",
+ "integrity": "sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/floating-point-hex-parser": "1.7.6",
+ "@webassemblyjs/helper-api-error": "1.7.6",
+ "@webassemblyjs/helper-code-frame": "1.7.6",
+ "@webassemblyjs/helper-fsm": "1.7.6",
+ "@xtuc/long": "4.2.1",
+ "mamacro": "0.0.3"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz",
+ "integrity": "sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/wast-parser": "1.7.6",
+ "@xtuc/long": "4.2.1"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+ },
+ "@xtuc/long": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz",
+ "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g=="
+ },
+ "abab": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
+ "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w=="
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "requires": {
+ "mime-types": "2.1.21",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz",
+ "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg=="
+ },
+ "acorn-dynamic-import": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
+ "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
+ "requires": {
+ "acorn": "5.7.3"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
+ }
+ }
+ },
+ "acorn-globals": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz",
+ "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==",
+ "requires": {
+ "acorn": "6.0.5",
+ "acorn-walk": "6.1.1"
+ }
+ },
+ "acorn-jsx": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
+ "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg=="
+ },
+ "acorn-walk": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
+ "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw=="
+ },
+ "address": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
+ "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg=="
+ },
+ "ajv": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz",
+ "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==",
+ "requires": {
+ "fast-deep-equal": "2.0.1",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.4.1",
+ "uri-js": "4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="
+ },
+ "ajv-keywords": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
+ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo="
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+ },
+ "ansi-colors": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
+ "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw=="
+ },
+ "ansi-escapes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
+ "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw=="
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4="
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "1.9.3"
+ }
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "requires": {
+ "micromatch": "3.1.10",
+ "normalize-path": "2.1.1"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "append-transform": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz",
+ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
+ "requires": {
+ "default-require-extensions": "1.0.0"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "aria-query": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
+ "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
+ "requires": {
+ "ast-types-flow": "0.0.7",
+ "commander": "2.19.0"
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ },
+ "array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM="
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
+ },
+ "array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "requires": {
+ "define-properties": "1.1.3",
+ "es-abstract": "1.13.0"
+ }
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys="
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "requires": {
+ "bn.js": "4.11.8",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "requires": {
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ },
+ "ast-types-flow": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
+ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0="
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
+ },
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "requires": {
+ "lodash": "4.17.11"
+ }
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0="
+ },
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI="
+ },
+ "async-limiter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
+ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+ },
+ "autoprefixer": {
+ "version": "9.4.4",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.4.tgz",
+ "integrity": "sha512-7tpjBadJyHKf+gOJEmKhZIksWxdZCSrnKbbTJNsw+/zX9+f//DLELRQPWjjjVoDbbWlCuNRkN7RfmZwDVgWMLw==",
+ "requires": {
+ "browserslist": "4.3.7",
+ "caniuse-lite": "1.0.30000927",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "await-to-js": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-2.1.1.tgz",
+ "integrity": "sha512-CHBC6gQGCIzjZ09tJ+XmpQoZOn4GdWePB4qUweCaKNJ0D3f115YdhmYVTZ4rMVpiJ3cFzZcTYK1VMYEICV4YXw=="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
+ },
+ "axobject-query": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz",
+ "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==",
+ "requires": {
+ "ast-types-flow": "0.0.7"
+ }
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "babel-core": {
+ "version": "7.0.0-bridge.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
+ "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg=="
+ },
+ "babel-eslint": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz",
+ "integrity": "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==",
+ "requires": {
+ "@babel/code-frame": "7.0.0",
+ "@babel/parser": "7.2.3",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.2.2",
+ "eslint-scope": "3.7.1",
+ "eslint-visitor-keys": "1.0.0"
+ }
+ },
+ "babel-extract-comments": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz",
+ "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==",
+ "requires": {
+ "babylon": "6.18.0"
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.1",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+ "requires": {
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "detect-indent": "4.0.0",
+ "jsesc": "1.3.0",
+ "lodash": "4.17.11",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
+ }
+ }
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-jest": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz",
+ "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==",
+ "requires": {
+ "babel-plugin-istanbul": "4.1.6",
+ "babel-preset-jest": "23.2.0"
+ }
+ },
+ "babel-loader": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.4.tgz",
+ "integrity": "sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw==",
+ "requires": {
+ "find-cache-dir": "1.0.0",
+ "loader-utils": "1.2.3",
+ "mkdirp": "0.5.1",
+ "util.promisify": "1.0.0"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz",
+ "integrity": "sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA==",
+ "requires": {
+ "object.assign": "4.1.0"
+ }
+ },
+ "babel-plugin-istanbul": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz",
+ "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==",
+ "requires": {
+ "babel-plugin-syntax-object-rest-spread": "6.13.0",
+ "find-up": "2.1.0",
+ "istanbul-lib-instrument": "1.10.2",
+ "test-exclude": "4.2.3"
+ }
+ },
+ "babel-plugin-jest-hoist": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz",
+ "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc="
+ },
+ "babel-plugin-macros": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.4.2.tgz",
+ "integrity": "sha512-NBVpEWN4OQ/bHnu1fyDaAaTPAjnhXCEPqr1RwqxrU7b6tZ2hypp+zX4hlNfmVGfClD5c3Sl6Hfj5TJNF5VG5aA==",
+ "requires": {
+ "cosmiconfig": "5.0.7",
+ "resolve": "1.8.1"
+ }
+ },
+ "babel-plugin-named-asset-import": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.0.tgz",
+ "integrity": "sha512-to6Shd/r8fMRRg/MaOhDNfqpuXfjlQx3ypWDG6jh4ESCVZDJCgdgIalZbrnVlBPGgH/QeyHMjnGb2W+JJiy+NQ=="
+ },
+ "babel-plugin-syntax-object-rest-spread": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U="
+ },
+ "babel-plugin-transform-object-rest-spread": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
+ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
+ "requires": {
+ "babel-plugin-syntax-object-rest-spread": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-react-remove-prop-types": {
+ "version": "0.4.20",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.20.tgz",
+ "integrity": "sha512-bWQ8e7LsgdFpyHU/RabjDAjVhL7KLAJXEt0nb0LANFje8YAGA8RlZv88a72aCswOxELWULkYuJqfFoKgs58Tng=="
+ },
+ "babel-preset-jest": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz",
+ "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=",
+ "requires": {
+ "babel-plugin-jest-hoist": "23.2.0",
+ "babel-plugin-syntax-object-rest-spread": "6.13.0"
+ }
+ },
+ "babel-preset-react-app": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-7.0.0.tgz",
+ "integrity": "sha512-LQKCB3xxdhAlRbk6IIZdO4ry1yA8gKGVV4phjOIgCEQr3oyaLPXf2j+lfD0zljOE2wkN2axRGOLTzdUPzVDO4w==",
+ "requires": {
+ "@babel/core": "7.1.6",
+ "@babel/plugin-proposal-class-properties": "7.1.0",
+ "@babel/plugin-proposal-decorators": "7.1.6",
+ "@babel/plugin-proposal-object-rest-spread": "7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "7.0.0",
+ "@babel/plugin-transform-classes": "7.1.0",
+ "@babel/plugin-transform-destructuring": "7.1.3",
+ "@babel/plugin-transform-flow-strip-types": "7.1.6",
+ "@babel/plugin-transform-react-constant-elements": "7.0.0",
+ "@babel/plugin-transform-react-display-name": "7.0.0",
+ "@babel/plugin-transform-runtime": "7.1.0",
+ "@babel/preset-env": "7.1.6",
+ "@babel/preset-react": "7.0.0",
+ "@babel/preset-typescript": "7.1.0",
+ "@babel/runtime": "7.1.5",
+ "babel-loader": "8.0.4",
+ "babel-plugin-dynamic-import-node": "2.2.0",
+ "babel-plugin-macros": "2.4.2",
+ "babel-plugin-transform-react-remove-prop-types": "0.4.20"
+ },
+ "dependencies": {
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz",
+ "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "7.2.0"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz",
+ "integrity": "sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-define-map": "7.1.0",
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-optimise-call-expression": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/helper-replace-supers": "7.2.3",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "globals": "11.10.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz",
+ "integrity": "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-constant-elements": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.0.0.tgz",
+ "integrity": "sha512-z8yrW4KCVcqPYr0r9dHXe7fu3daLzn0r6TQEFoGbXahdrzEwT1d1ux+/EnFcqIHv9uPilUlnRnPIUf7GMO0ehg==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-display-name": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz",
+ "integrity": "sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.1.6.tgz",
+ "integrity": "sha512-YIBfpJNQMBkb6MCkjz/A9J76SNCSuGVamOVBgoUkLzpJD/z8ghHi9I42LQ4pulVX68N/MmImz6ZTixt7Azgexw==",
+ "requires": {
+ "@babel/helper-module-imports": "7.0.0",
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@babel/plugin-proposal-async-generator-functions": "7.2.0",
+ "@babel/plugin-proposal-json-strings": "7.2.0",
+ "@babel/plugin-proposal-object-rest-spread": "7.0.0",
+ "@babel/plugin-proposal-optional-catch-binding": "7.2.0",
+ "@babel/plugin-proposal-unicode-property-regex": "7.2.0",
+ "@babel/plugin-syntax-async-generators": "7.2.0",
+ "@babel/plugin-syntax-object-rest-spread": "7.2.0",
+ "@babel/plugin-syntax-optional-catch-binding": "7.2.0",
+ "@babel/plugin-transform-arrow-functions": "7.2.0",
+ "@babel/plugin-transform-async-to-generator": "7.2.0",
+ "@babel/plugin-transform-block-scoped-functions": "7.2.0",
+ "@babel/plugin-transform-block-scoping": "7.2.0",
+ "@babel/plugin-transform-classes": "7.1.0",
+ "@babel/plugin-transform-computed-properties": "7.2.0",
+ "@babel/plugin-transform-destructuring": "7.1.3",
+ "@babel/plugin-transform-dotall-regex": "7.2.0",
+ "@babel/plugin-transform-duplicate-keys": "7.2.0",
+ "@babel/plugin-transform-exponentiation-operator": "7.2.0",
+ "@babel/plugin-transform-for-of": "7.2.0",
+ "@babel/plugin-transform-function-name": "7.2.0",
+ "@babel/plugin-transform-literals": "7.2.0",
+ "@babel/plugin-transform-modules-amd": "7.2.0",
+ "@babel/plugin-transform-modules-commonjs": "7.2.0",
+ "@babel/plugin-transform-modules-systemjs": "7.2.0",
+ "@babel/plugin-transform-modules-umd": "7.2.0",
+ "@babel/plugin-transform-new-target": "7.0.0",
+ "@babel/plugin-transform-object-super": "7.2.0",
+ "@babel/plugin-transform-parameters": "7.2.0",
+ "@babel/plugin-transform-regenerator": "7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "7.2.0",
+ "@babel/plugin-transform-spread": "7.2.2",
+ "@babel/plugin-transform-sticky-regex": "7.2.0",
+ "@babel/plugin-transform-template-literals": "7.2.0",
+ "@babel/plugin-transform-typeof-symbol": "7.2.0",
+ "@babel/plugin-transform-unicode-regex": "7.2.0",
+ "browserslist": "4.3.7",
+ "invariant": "2.2.4",
+ "js-levenshtein": "1.1.5",
+ "semver": "5.6.0"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.5.tgz",
+ "integrity": "sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA==",
+ "requires": {
+ "regenerator-runtime": "0.12.1"
+ }
+ }
+ }
+ },
+ "babel-register": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+ "requires": {
+ "babel-core": "6.26.3",
+ "babel-runtime": "6.26.0",
+ "core-js": "2.6.1",
+ "home-or-tmp": "2.0.0",
+ "lodash": "4.17.11",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.4.18"
+ },
+ "dependencies": {
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-generator": "6.26.1",
+ "babel-helpers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-register": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "convert-source-map": "1.6.0",
+ "debug": "2.6.9",
+ "json5": "0.5.1",
+ "lodash": "4.17.11",
+ "minimatch": "3.0.4",
+ "path-is-absolute": "1.0.1",
+ "private": "0.1.8",
+ "slash": "1.0.0",
+ "source-map": "0.5.7"
+ }
+ },
+ "core-js": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz",
+ "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg=="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "requires": {
+ "core-js": "2.6.1",
+ "regenerator-runtime": "0.11.1"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz",
+ "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg=="
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ }
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "lodash": "4.17.11"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "debug": "2.6.9",
+ "globals": "9.18.0",
+ "invariant": "2.2.4",
+ "lodash": "4.17.11"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "esutils": "2.0.2",
+ "lodash": "4.17.11",
+ "to-fast-properties": "1.0.3"
+ },
+ "dependencies": {
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ }
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "requires": {
+ "cache-base": "1.0.1",
+ "class-utils": "0.3.6",
+ "component-emitter": "1.2.1",
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "mixin-deep": "1.3.1",
+ "pascalcase": "0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "bfj": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz",
+ "integrity": "sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ==",
+ "requires": {
+ "bluebird": "3.5.3",
+ "check-types": "7.4.0",
+ "hoopy": "0.1.4",
+ "tryer": "1.0.1"
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+ },
+ "binary-extensions": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
+ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg=="
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "bluebird": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
+ "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw=="
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
+ },
+ "body-parser": {
+ "version": "1.18.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
+ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "1.0.4",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "http-errors": "1.6.3",
+ "iconv-lite": "0.4.23",
+ "on-finished": "2.3.0",
+ "qs": "6.5.2",
+ "raw-body": "2.3.3",
+ "type-is": "1.6.16"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "requires": {
+ "array-flatten": "2.1.2",
+ "deep-equal": "1.0.1",
+ "dns-equal": "1.0.0",
+ "dns-txt": "2.0.2",
+ "multicast-dns": "6.2.3",
+ "multicast-dns-service-types": "1.1.0"
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.3"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
+ },
+ "browser-process-hrtime": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
+ "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw=="
+ },
+ "browser-resolve": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
+ "requires": {
+ "resolve": "1.1.7"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs="
+ }
+ }
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "requires": {
+ "buffer-xor": "1.0.3",
+ "cipher-base": "1.0.4",
+ "create-hash": "1.2.0",
+ "evp_bytestokey": "1.0.3",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "requires": {
+ "browserify-aes": "1.2.0",
+ "browserify-des": "1.0.2",
+ "evp_bytestokey": "1.0.3"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "requires": {
+ "cipher-base": "1.0.4",
+ "des.js": "1.0.0",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "requires": {
+ "bn.js": "4.11.8",
+ "randombytes": "2.0.6"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "elliptic": "6.4.1",
+ "inherits": "2.0.3",
+ "parse-asn1": "5.1.1"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "requires": {
+ "pako": "1.0.7"
+ }
+ },
+ "browserslist": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.7.tgz",
+ "integrity": "sha512-pWQv51Ynb0MNk9JGMCZ8VkM785/4MQNXiFYtPqI7EEP0TJO+/d/NqRVn1uiAN0DNbnlUSpL2sh16Kspasv3pUQ==",
+ "requires": {
+ "caniuse-lite": "1.0.30000927",
+ "electron-to-chromium": "1.3.100",
+ "node-releases": "1.1.3"
+ }
+ },
+ "bser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz",
+ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=",
+ "requires": {
+ "node-int64": "0.4.0"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "requires": {
+ "base64-js": "1.3.0",
+ "ieee754": "1.1.12",
+ "isarray": "1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ }
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g=="
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+ },
+ "cacache": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz",
+ "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==",
+ "requires": {
+ "bluebird": "3.5.3",
+ "chownr": "1.1.1",
+ "figgy-pudding": "3.5.1",
+ "glob": "7.1.3",
+ "graceful-fs": "4.1.15",
+ "lru-cache": "5.1.1",
+ "mississippi": "3.0.0",
+ "mkdirp": "0.5.1",
+ "move-concurrently": "1.0.1",
+ "promise-inflight": "1.0.1",
+ "rimraf": "2.6.3",
+ "ssri": "6.0.1",
+ "unique-filename": "1.1.1",
+ "y18n": "4.0.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "requires": {
+ "yallist": "3.0.3"
+ }
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A=="
+ }
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "requires": {
+ "collection-visit": "1.0.0",
+ "component-emitter": "1.2.1",
+ "get-value": "2.0.6",
+ "has-value": "1.0.0",
+ "isobject": "3.0.1",
+ "set-value": "2.0.0",
+ "to-object-path": "0.3.0",
+ "union-value": "1.0.0",
+ "unset-value": "1.0.0"
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "requires": {
+ "callsites": "2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "requires": {
+ "caller-callsite": "2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA="
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "requires": {
+ "no-case": "2.3.2",
+ "upper-case": "1.1.3"
+ }
+ },
+ "camelcase": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA=="
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "requires": {
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
+ }
+ }
+ },
+ "caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "requires": {
+ "browserslist": "4.3.7",
+ "caniuse-lite": "1.0.30000927",
+ "lodash.memoize": "4.1.2",
+ "lodash.uniq": "4.5.0"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000927",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000927.tgz",
+ "integrity": "sha512-ogq4NbUWf1uG/j66k0AmiO3GjqJAlQyF8n4w8a954cbCyFKmYGvRtgz6qkq2fWuduTXHibX7GyYL5Pg58Aks2g=="
+ },
+ "capture-exit": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz",
+ "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=",
+ "requires": {
+ "rsvp": "3.6.2"
+ }
+ },
+ "case-sensitive-paths-webpack-plugin": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz",
+ "integrity": "sha512-oEZgAFfEvKtjSRCu6VgYkuGxwrWXMnQzyBmlLPP7r6PWQVtHxP5Z5N6XsuJvtoVax78am/r7lr46bwo3IVEBOg=="
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
+ },
+ "check-types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
+ "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg=="
+ },
+ "chokidar": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+ "requires": {
+ "anymatch": "2.0.0",
+ "async-each": "1.0.1",
+ "braces": "2.3.2",
+ "fsevents": "1.2.4",
+ "glob-parent": "3.1.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "4.0.0",
+ "lodash.debounce": "4.0.8",
+ "normalize-path": "2.1.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.2.1",
+ "upath": "1.1.0"
+ },
+ "dependencies": {
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "requires": {
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
+ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
+ },
+ "chrome-trace-event": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
+ "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
+ "requires": {
+ "tslib": "1.9.3"
+ }
+ },
+ "ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A=="
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A=="
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "requires": {
+ "arr-union": "3.1.0",
+ "define-property": "0.2.5",
+ "isobject": "3.0.1",
+ "static-extend": "0.1.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ }
+ }
+ },
+ "classnames": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
+ "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+ },
+ "clean-css": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
+ "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
+ "requires": {
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "requires": {
+ "restore-cursor": "2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "requires": {
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "clone-deep": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz",
+ "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=",
+ "requires": {
+ "for-own": "0.1.5",
+ "is-plain-object": "2.0.4",
+ "kind-of": "3.2.2",
+ "lazy-cache": "1.0.4",
+ "shallow-clone": "0.1.2"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+ },
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "requires": {
+ "@types/q": "1.5.1",
+ "chalk": "2.4.1",
+ "q": "1.5.1"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "requires": {
+ "map-visit": "1.0.0",
+ "object-visit": "1.0.1"
+ }
+ },
+ "color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz",
+ "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==",
+ "requires": {
+ "color-convert": "1.9.3",
+ "color-string": "1.5.3"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "color-string": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+ "requires": {
+ "color-name": "1.1.3",
+ "simple-swizzle": "0.2.2"
+ }
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
+ },
+ "combined-stream": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
+ "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
+ },
+ "common-tags": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz",
+ "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw=="
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+ },
+ "compressible": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz",
+ "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==",
+ "requires": {
+ "mime-db": "1.37.0"
+ }
+ },
+ "compression": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+ "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+ "requires": {
+ "accepts": "1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "2.0.15",
+ "debug": "2.6.9",
+ "on-headers": "1.0.1",
+ "safe-buffer": "5.1.2",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "1.1.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "typedarray": "0.0.6"
+ }
+ },
+ "confusing-browser-globals": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.5.tgz",
+ "integrity": "sha512-tHo1tQL/9Ox5RELbkCAJhnViqWlzBz3MG1bB2czbHjH2mWd4aYUgNCNLfysFL7c4LoDws7pjg2tj48Gmpw4QHA=="
+ },
+ "connect-history-api-fallback": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg=="
+ },
+ "connected-react-router": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/connected-react-router/-/connected-react-router-6.2.1.tgz",
+ "integrity": "sha512-7QFs0wPYvwrzA7NptHx0DgblNA/nVErX0TUjTiOCwXSaqj/1Ng+nEmEczrfdA8gw7kIzFIa08WJGMymdb7bAZA==",
+ "requires": {
+ "immutable": "3.8.2",
+ "seamless-immutable": "7.1.4"
+ }
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "requires": {
+ "date-now": "0.1.4"
+ }
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo="
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "convert-source-map": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "requires": {
+ "aproba": "1.2.0",
+ "fs-write-stream-atomic": "1.0.10",
+ "iferr": "0.1.5",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.3",
+ "run-queue": "1.0.3"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cosmiconfig": {
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz",
+ "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==",
+ "requires": {
+ "import-fresh": "2.0.0",
+ "is-directory": "0.3.1",
+ "js-yaml": "3.12.1",
+ "parse-json": "4.0.0"
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "requires": {
+ "bn.js": "4.11.8",
+ "elliptic": "6.4.1"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "requires": {
+ "cipher-base": "1.0.4",
+ "inherits": "2.0.3",
+ "md5.js": "1.3.5",
+ "ripemd160": "2.0.2",
+ "sha.js": "2.4.11"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "requires": {
+ "cipher-base": "1.0.4",
+ "create-hash": "1.2.0",
+ "inherits": "2.0.3",
+ "ripemd160": "2.0.2",
+ "safe-buffer": "5.1.2",
+ "sha.js": "2.4.11"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "requires": {
+ "nice-try": "1.0.5",
+ "path-key": "2.0.1",
+ "semver": "5.6.0",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "requires": {
+ "browserify-cipher": "1.0.1",
+ "browserify-sign": "4.0.4",
+ "create-ecdh": "4.0.3",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "diffie-hellman": "5.0.3",
+ "inherits": "2.0.3",
+ "pbkdf2": "3.0.17",
+ "public-encrypt": "4.0.3",
+ "randombytes": "2.0.6",
+ "randomfill": "1.0.4"
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA="
+ },
+ "css-declaration-sorter": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
+ "requires": {
+ "postcss": "7.0.8",
+ "timsort": "0.3.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "css-loader": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz",
+ "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "css-selector-tokenizer": "0.7.1",
+ "icss-utils": "2.1.0",
+ "loader-utils": "1.2.3",
+ "lodash.camelcase": "4.3.0",
+ "postcss": "6.0.23",
+ "postcss-modules-extract-imports": "1.2.1",
+ "postcss-modules-local-by-default": "1.2.0",
+ "postcss-modules-scope": "1.1.0",
+ "postcss-modules-values": "1.3.0",
+ "postcss-value-parser": "3.3.1",
+ "source-list-map": "2.0.1"
+ }
+ },
+ "css-select": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz",
+ "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==",
+ "requires": {
+ "boolbase": "1.0.0",
+ "css-what": "2.1.2",
+ "domutils": "1.7.0",
+ "nth-check": "1.0.2"
+ }
+ },
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
+ },
+ "css-selector-tokenizer": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
+ "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
+ "requires": {
+ "cssesc": "0.1.0",
+ "fastparse": "1.1.2",
+ "regexpu-core": "1.0.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
+ },
+ "regexpu-core": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
+ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
+ "requires": {
+ "regenerate": "1.4.0",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
+ }
+ },
+ "regjsgen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc="
+ },
+ "regjsparser": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "requires": {
+ "jsesc": "0.5.0"
+ }
+ }
+ }
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.28",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz",
+ "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==",
+ "requires": {
+ "mdn-data": "1.1.4",
+ "source-map": "0.5.7"
+ }
+ },
+ "css-unit-converter": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz",
+ "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY="
+ },
+ "css-url-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz",
+ "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w="
+ },
+ "css-what": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz",
+ "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ=="
+ },
+ "cssdb": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.3.0.tgz",
+ "integrity": "sha512-VHPES/+c9s+I0ryNj+PXvp84nz+ms843z/efpaEINwP/QfGsINL3gpLp5qjapzDNzNzbXxur8uxKxSXImrg4ag=="
+ },
+ "cssesc": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
+ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q="
+ },
+ "cssnano": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.8.tgz",
+ "integrity": "sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==",
+ "requires": {
+ "cosmiconfig": "5.0.7",
+ "cssnano-preset-default": "4.0.6",
+ "is-resolvable": "1.1.0",
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "cssnano-preset-default": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz",
+ "integrity": "sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==",
+ "requires": {
+ "css-declaration-sorter": "4.0.1",
+ "cssnano-util-raw-cache": "4.0.1",
+ "postcss": "7.0.8",
+ "postcss-calc": "7.0.1",
+ "postcss-colormin": "4.0.2",
+ "postcss-convert-values": "4.0.1",
+ "postcss-discard-comments": "4.0.1",
+ "postcss-discard-duplicates": "4.0.2",
+ "postcss-discard-empty": "4.0.1",
+ "postcss-discard-overridden": "4.0.1",
+ "postcss-merge-longhand": "4.0.10",
+ "postcss-merge-rules": "4.0.2",
+ "postcss-minify-font-values": "4.0.2",
+ "postcss-minify-gradients": "4.0.1",
+ "postcss-minify-params": "4.0.1",
+ "postcss-minify-selectors": "4.0.1",
+ "postcss-normalize-charset": "4.0.1",
+ "postcss-normalize-display-values": "4.0.1",
+ "postcss-normalize-positions": "4.0.1",
+ "postcss-normalize-repeat-style": "4.0.1",
+ "postcss-normalize-string": "4.0.1",
+ "postcss-normalize-timing-functions": "4.0.1",
+ "postcss-normalize-unicode": "4.0.1",
+ "postcss-normalize-url": "4.0.1",
+ "postcss-normalize-whitespace": "4.0.1",
+ "postcss-ordered-values": "4.1.1",
+ "postcss-reduce-initial": "4.0.2",
+ "postcss-reduce-transforms": "4.0.1",
+ "postcss-svgo": "4.0.1",
+ "postcss-unique-selectors": "4.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "cssnano-util-get-arguments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+ "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8="
+ },
+ "cssnano-util-get-match": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+ "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0="
+ },
+ "cssnano-util-raw-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "cssnano-util-same-parent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q=="
+ },
+ "csso": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz",
+ "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
+ "requires": {
+ "css-tree": "1.0.0-alpha.29"
+ },
+ "dependencies": {
+ "css-tree": {
+ "version": "1.0.0-alpha.29",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
+ "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
+ "requires": {
+ "mdn-data": "1.1.4",
+ "source-map": "0.5.7"
+ }
+ }
+ }
+ },
+ "cssom": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+ "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog=="
+ },
+ "cssstyle": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz",
+ "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==",
+ "requires": {
+ "cssom": "0.3.4"
+ }
+ },
+ "csstype": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.0.tgz",
+ "integrity": "sha512-by8hi8BlLbowQq0qtkx54d9aN73R9oUW20HISpka5kmgsR9F7nnxgfsemuR2sdCKZh+CDNf5egW9UZMm4mgJRg=="
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "requires": {
+ "array-find-index": "1.0.2"
+ }
+ },
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA="
+ },
+ "damerau-levenshtein": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz",
+ "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ="
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "data-urls": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
+ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
+ "requires": {
+ "abab": "2.0.0",
+ "whatwg-mimetype": "2.3.0",
+ "whatwg-url": "7.0.0"
+ }
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs="
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "2.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ },
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+ },
+ "default-gateway": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz",
+ "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==",
+ "requires": {
+ "execa": "0.10.0",
+ "ip-regex": "2.1.0"
+ },
+ "dependencies": {
+ "execa": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
+ "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+ "requires": {
+ "cross-spawn": "6.0.5",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ }
+ }
+ },
+ "default-require-extensions": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz",
+ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
+ "requires": {
+ "strip-bom": "2.0.0"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "requires": {
+ "object-keys": "1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "requires": {
+ "is-descriptor": "1.0.2",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "del": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "requires": {
+ "globby": "6.1.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.1",
+ "p-map": "1.2.0",
+ "pify": "3.0.0",
+ "rimraf": "2.6.3"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "requires": {
+ "array-union": "1.0.2",
+ "glob": "7.1.3",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ }
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "requires": {
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "detect-newline": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I="
+ },
+ "detect-node": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
+ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw=="
+ },
+ "detect-port-alt": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
+ "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
+ "requires": {
+ "address": "1.0.3",
+ "debug": "2.6.9"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA=="
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "requires": {
+ "bn.js": "4.11.8",
+ "miller-rabin": "4.0.1",
+ "randombytes": "2.0.6"
+ }
+ },
+ "dir-glob": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.0.tgz",
+ "integrity": "sha512-YqrO+bduKFqPgspvpjDAaKk0qhmvY+SY7NjIRljCDAy6CX7Ft65irIduHbrYXhy+BxJnYKjWuREw6X42w9/+DQ==",
+ "requires": {
+ "path-type": "3.0.0"
+ },
+ "dependencies": {
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ }
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0="
+ },
+ "dns-packet": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+ "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+ "requires": {
+ "ip": "1.1.5",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "requires": {
+ "buffer-indexof": "1.1.1"
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "requires": {
+ "esutils": "2.0.2"
+ }
+ },
+ "dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "requires": {
+ "utila": "0.4.0"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "requires": {
+ "domelementtype": "1.1.3",
+ "entities": "1.1.2"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
+ },
+ "domexception": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
+ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
+ "requires": {
+ "webidl-conversions": "4.0.2"
+ }
+ },
+ "domhandler": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
+ "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
+ "requires": {
+ "domelementtype": "1.3.1"
+ }
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.1"
+ }
+ },
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
+ "dotenv": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.0.0.tgz",
+ "integrity": "sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg=="
+ },
+ "dotenv-expand": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz",
+ "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU="
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
+ },
+ "duplexify": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz",
+ "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "stream-shift": "1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "requires": {
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "electron-to-chromium": {
+ "version": "1.3.100",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.100.tgz",
+ "integrity": "sha512-cEUzis2g/RatrVf8x26L8lK5VEls1AGnLHk6msluBUg/NTB4wcXzExTsGscFq+Vs4WBBU2zbLLySvD4C0C3hwg=="
+ },
+ "elliptic": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0",
+ "hash.js": "1.1.7",
+ "hmac-drbg": "1.0.1",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1",
+ "minimalistic-crypto-utils": "1.0.1"
+ }
+ },
+ "emoji-regex": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz",
+ "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ=="
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+ "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "memory-fs": "0.4.1",
+ "tapable": "1.1.1"
+ }
+ },
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "requires": {
+ "prr": "1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+ "requires": {
+ "es-to-primitive": "1.2.0",
+ "function-bind": "1.1.1",
+ "has": "1.0.3",
+ "is-callable": "1.1.4",
+ "is-regex": "1.0.4",
+ "object-keys": "1.0.12"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "requires": {
+ "is-callable": "1.1.4",
+ "is-date-object": "1.0.1",
+ "is-symbol": "1.0.2"
+ }
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "escodegen": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
+ "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
+ "requires": {
+ "esprima": "3.1.3",
+ "estraverse": "4.2.0",
+ "esutils": "2.0.2",
+ "optionator": "0.8.2",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "optional": true
+ }
+ }
+ },
+ "eslint": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.6.0.tgz",
+ "integrity": "sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA==",
+ "requires": {
+ "@babel/code-frame": "7.0.0",
+ "ajv": "6.6.2",
+ "chalk": "2.4.1",
+ "cross-spawn": "6.0.5",
+ "debug": "3.2.6",
+ "doctrine": "2.1.0",
+ "eslint-scope": "4.0.0",
+ "eslint-utils": "1.3.1",
+ "eslint-visitor-keys": "1.0.0",
+ "espree": "4.1.0",
+ "esquery": "1.0.1",
+ "esutils": "2.0.2",
+ "file-entry-cache": "2.0.0",
+ "functional-red-black-tree": "1.0.1",
+ "glob": "7.1.3",
+ "globals": "11.10.0",
+ "ignore": "4.0.6",
+ "imurmurhash": "0.1.4",
+ "inquirer": "6.2.1",
+ "is-resolvable": "1.1.0",
+ "js-yaml": "3.12.1",
+ "json-stable-stringify-without-jsonify": "1.0.1",
+ "levn": "0.3.0",
+ "lodash": "4.17.11",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "optionator": "0.8.2",
+ "path-is-inside": "1.0.2",
+ "pluralize": "7.0.0",
+ "progress": "2.0.3",
+ "regexpp": "2.0.1",
+ "require-uncached": "1.0.3",
+ "semver": "5.6.0",
+ "strip-ansi": "4.0.0",
+ "strip-json-comments": "2.0.1",
+ "table": "4.0.3",
+ "text-table": "0.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "2.1.1"
+ }
+ },
+ "eslint-scope": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
+ "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+ "requires": {
+ "esrecurse": "4.2.1",
+ "estraverse": "4.2.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-react-app": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-3.0.6.tgz",
+ "integrity": "sha512-VL5rA1EBZv7f9toc9x71or7nr4jRmwCH4V9JKB9DFVaTLOLI9+vjWLgQLjMu3xR9iUT80dty86RbCfNaKyrFFg==",
+ "requires": {
+ "confusing-browser-globals": "1.0.5"
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "requires": {
+ "debug": "2.6.9",
+ "resolve": "1.8.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "eslint-loader": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.1.1.tgz",
+ "integrity": "sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ==",
+ "requires": {
+ "loader-fs-cache": "1.0.1",
+ "loader-utils": "1.2.3",
+ "object-assign": "4.1.1",
+ "object-hash": "1.3.1",
+ "rimraf": "2.6.3"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
+ "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
+ "requires": {
+ "debug": "2.6.9",
+ "pkg-dir": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "requires": {
+ "find-up": "1.1.2"
+ }
+ }
+ }
+ },
+ "eslint-plugin-flowtype": {
+ "version": "2.50.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz",
+ "integrity": "sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ==",
+ "requires": {
+ "lodash": "4.17.11"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
+ "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
+ "requires": {
+ "contains-path": "0.1.0",
+ "debug": "2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "0.3.2",
+ "eslint-module-utils": "2.2.0",
+ "has": "1.0.3",
+ "lodash": "4.17.11",
+ "minimatch": "3.0.4",
+ "read-pkg-up": "2.0.0",
+ "resolve": "1.8.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "requires": {
+ "esutils": "2.0.2",
+ "isarray": "1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "requires": {
+ "error-ex": "1.3.2"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "requires": {
+ "pify": "2.3.0"
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "requires": {
+ "load-json-file": "2.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "requires": {
+ "find-up": "2.1.0",
+ "read-pkg": "2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
+ }
+ }
+ },
+ "eslint-plugin-jsx-a11y": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz",
+ "integrity": "sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw==",
+ "requires": {
+ "aria-query": "3.0.0",
+ "array-includes": "3.0.3",
+ "ast-types-flow": "0.0.7",
+ "axobject-query": "2.0.2",
+ "damerau-levenshtein": "1.0.4",
+ "emoji-regex": "6.5.1",
+ "has": "1.0.3",
+ "jsx-ast-utils": "2.0.1"
+ }
+ },
+ "eslint-plugin-react": {
+ "version": "7.11.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz",
+ "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==",
+ "requires": {
+ "array-includes": "3.0.3",
+ "doctrine": "2.1.0",
+ "has": "1.0.3",
+ "jsx-ast-utils": "2.0.1",
+ "prop-types": "15.6.2"
+ }
+ },
+ "eslint-scope": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
+ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "requires": {
+ "esrecurse": "4.2.1",
+ "estraverse": "4.2.0"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
+ "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q=="
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ=="
+ },
+ "espree": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz",
+ "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==",
+ "requires": {
+ "acorn": "6.0.5",
+ "acorn-jsx": "5.0.1",
+ "eslint-visitor-keys": "1.0.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "eventemitter3": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
+ "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA=="
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
+ },
+ "eventsource": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
+ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+ "requires": {
+ "original": "1.0.2"
+ }
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "requires": {
+ "md5.js": "1.3.5",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "exec-sh": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz",
+ "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==",
+ "requires": {
+ "merge": "1.2.1"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "requires": {
+ "lru-cache": "4.1.5",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
+ }
+ }
+ }
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw="
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "requires": {
+ "fill-range": "2.2.4"
+ }
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "requires": {
+ "homedir-polyfill": "1.0.1"
+ }
+ },
+ "expect": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz",
+ "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "jest-diff": "23.6.0",
+ "jest-get-type": "22.4.3",
+ "jest-matcher-utils": "23.6.0",
+ "jest-message-util": "23.4.0",
+ "jest-regex-util": "23.3.0"
+ }
+ },
+ "express": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
+ "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
+ "requires": {
+ "accepts": "1.3.5",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.3",
+ "content-disposition": "0.5.2",
+ "content-type": "1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "finalhandler": "1.1.1",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "1.1.2",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "2.0.4",
+ "qs": "6.5.2",
+ "range-parser": "1.2.0",
+ "safe-buffer": "5.1.2",
+ "send": "0.16.2",
+ "serve-static": "1.13.2",
+ "setprototypeof": "1.1.0",
+ "statuses": "1.4.0",
+ "type-is": "1.6.16",
+ "utils-merge": "1.0.1",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "requires": {
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
+ "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+ "requires": {
+ "chardet": "0.7.0",
+ "iconv-lite": "0.4.24",
+ "tmp": "0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ },
+ "fast-glob": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz",
+ "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==",
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "2.2.1",
+ "@nodelib/fs.stat": "1.1.3",
+ "glob-parent": "3.1.0",
+ "is-glob": "4.0.0",
+ "merge2": "1.2.3",
+ "micromatch": "3.1.10"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "requires": {
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+ },
+ "fastparse": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
+ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ=="
+ },
+ "faye-websocket": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+ "requires": {
+ "websocket-driver": "0.7.0"
+ }
+ },
+ "fb-watchman": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
+ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
+ "requires": {
+ "bser": "2.0.0"
+ }
+ },
+ "figgy-pudding": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w=="
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "requires": {
+ "flat-cache": "1.3.4",
+ "object-assign": "4.1.1"
+ }
+ },
+ "file-loader": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz",
+ "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==",
+ "requires": {
+ "loader-utils": "1.2.3",
+ "schema-utils": "1.0.0"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+ },
+ "fileset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
+ "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
+ "requires": {
+ "glob": "7.1.3",
+ "minimatch": "3.0.4"
+ }
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg=="
+ },
+ "fill-range": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "3.1.1",
+ "repeat-element": "1.1.3",
+ "repeat-string": "1.6.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.4.0",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+ "requires": {
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
+ "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "requires": {
+ "circular-json": "0.3.3",
+ "graceful-fs": "4.1.15",
+ "rimraf": "2.6.3",
+ "write": "0.2.1"
+ }
+ },
+ "flatten": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I="
+ },
+ "flush-write-stream": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
+ "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz",
+ "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==",
+ "requires": {
+ "debug": "3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "fork-ts-checker-webpack-plugin-alt": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin-alt/-/fork-ts-checker-webpack-plugin-alt-0.4.14.tgz",
+ "integrity": "sha512-s0wjOBuPdylMRBzZ4yO8LSJuzem3g0MYZFxsjRXrFDQyL5KJBVSq30+GoHM/t/r2CRU4tI6zi04sq6OXK0UYnw==",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "chalk": "2.4.1",
+ "chokidar": "2.0.4",
+ "lodash": "4.17.11",
+ "micromatch": "3.1.10",
+ "minimatch": "3.0.4",
+ "resolve": "1.8.1",
+ "tapable": "1.1.1"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.7",
+ "mime-types": "2.1.21"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "requires": {
+ "map-cache": "0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz",
+ "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.2"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "iferr": "0.1.5",
+ "imurmurhash": "0.1.4",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fsevents": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
+ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+ "optional": true,
+ "requires": {
+ "nan": "2.12.1",
+ "node-pre-gyp": "0.10.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.5.1",
+ "bundled": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "2.2.4"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.2"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.21",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ },
+ "minipass": {
+ "version": "2.2.4",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "2.2.4"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "debug": "2.6.9",
+ "iconv-lite": "0.4.21",
+ "sax": "1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "1.0.3",
+ "mkdirp": "0.5.1",
+ "needle": "2.2.0",
+ "nopt": "4.0.1",
+ "npm-packlist": "1.1.10",
+ "npmlog": "4.1.2",
+ "rc": "1.2.7",
+ "rimraf": "2.6.2",
+ "semver": "5.5.0",
+ "tar": "4.4.1"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1.1.1",
+ "osenv": "0.1.5"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.3",
+ "bundled": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.1.10",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "3.0.1",
+ "npm-bundled": "1.0.3"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "1.1.4",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.7",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "0.5.1",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "bundled": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.5.0",
+ "bundled": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "chownr": "1.0.1",
+ "fs-minipass": "1.2.5",
+ "minipass": "2.2.4",
+ "minizlib": "1.1.0",
+ "mkdirp": "0.5.1",
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "string-width": "1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.3"
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "requires": {
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.3"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "requires": {
+ "globule": "1.2.1"
+ }
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
+ },
+ "get-own-enumerable-property-symbols": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
+ "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg=="
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs="
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "requires": {
+ "global-prefix": "1.0.2",
+ "is-windows": "1.0.2",
+ "resolve-dir": "1.0.1"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "homedir-polyfill": "1.0.1",
+ "ini": "1.3.5",
+ "is-windows": "1.0.2",
+ "which": "1.3.1"
+ }
+ },
+ "globals": {
+ "version": "11.10.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz",
+ "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ=="
+ },
+ "globby": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
+ "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
+ "requires": {
+ "array-union": "1.0.2",
+ "dir-glob": "2.2.0",
+ "fast-glob": "2.2.6",
+ "glob": "7.1.3",
+ "ignore": "3.3.10",
+ "pify": "3.0.0",
+ "slash": "1.0.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ }
+ }
+ },
+ "globule": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
+ "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
+ "requires": {
+ "glob": "7.1.3",
+ "lodash": "4.17.11",
+ "minimatch": "3.0.4"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.15",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
+ },
+ "growly": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
+ },
+ "gzip-size": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz",
+ "integrity": "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==",
+ "requires": {
+ "duplexer": "0.1.1",
+ "pify": "3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ }
+ }
+ },
+ "h2x-core": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/h2x-core/-/h2x-core-1.1.1.tgz",
+ "integrity": "sha512-LdXe4Irs731knLtHgLyFrnJCumfiqXXQwKN1IMUhi37li29PLfLbMDvfK7Rk4wmgHLKP+sIITT1mcJV4QsC3nw==",
+ "requires": {
+ "h2x-generate": "1.1.0",
+ "h2x-parse": "1.1.1",
+ "h2x-traverse": "1.1.0"
+ }
+ },
+ "h2x-generate": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/h2x-generate/-/h2x-generate-1.1.0.tgz",
+ "integrity": "sha512-L7Hym0yb20QIjvqeULUPOeh/cyvScdOAyJ6oRlh5dF0+w92hf3OiTk1q15KBijde7jGEe+0R4aOmtW8gkPNIzg==",
+ "requires": {
+ "h2x-traverse": "1.1.0"
+ }
+ },
+ "h2x-parse": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/h2x-parse/-/h2x-parse-1.1.1.tgz",
+ "integrity": "sha512-WRSmPF+tIWuUXVEZaYRhcZx/JGEJx8LjZpDDtrvMr5m/GTR0NerydCik5dRzcKXPWCtfXxuJRLR4v2P4HB2B1A==",
+ "requires": {
+ "h2x-types": "1.1.0",
+ "jsdom": "13.1.0"
+ }
+ },
+ "h2x-plugin-jsx": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/h2x-plugin-jsx/-/h2x-plugin-jsx-1.2.0.tgz",
+ "integrity": "sha512-a7Vb3BHhJJq0dPDNdqguEyQirENkVsFtvM2YkiaT5h/fmGhmM1nDy3BLeJeSKi2tL2g9v4ykm2Z+GG9QrhDgPA==",
+ "requires": {
+ "h2x-types": "1.1.0"
+ }
+ },
+ "h2x-traverse": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/h2x-traverse/-/h2x-traverse-1.1.0.tgz",
+ "integrity": "sha512-1ND8ZbISLSUgpLHYJRvhvElITvs0g44L7RxjeXViz5XP6rooa+FtXTFLByl2Yg01zj2txubifHIuU4pgvj8l+A==",
+ "requires": {
+ "h2x-types": "1.1.0"
+ }
+ },
+ "h2x-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/h2x-types/-/h2x-types-1.1.0.tgz",
+ "integrity": "sha512-QdH5qfLcdF209UsCdM0ZNZ9Dwm2PHvMfeLZtivBrjX3Y/df4US2pwsUC4HBfWhye/mx/t6puODeC7Oacb/Ol8g=="
+ },
+ "handle-thing": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
+ "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ=="
+ },
+ "handlebars": {
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
+ "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
+ "requires": {
+ "async": "2.6.1",
+ "optimist": "0.6.1",
+ "source-map": "0.6.1",
+ "uglify-js": "3.4.9"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+ "requires": {
+ "ajv": "6.6.2",
+ "har-schema": "2.0.0"
+ }
+ },
+ "harmony-reflect": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz",
+ "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA=="
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "requires": {
+ "get-value": "2.0.6",
+ "has-values": "1.0.0",
+ "isobject": "3.0.1"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "requires": {
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
+ },
+ "hex-color-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
+ },
+ "history": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz",
+ "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==",
+ "requires": {
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "resolve-pathname": "2.2.0",
+ "value-equal": "0.4.0",
+ "warning": "3.0.0"
+ },
+ "dependencies": {
+ "warning": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
+ "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
+ "requires": {
+ "loose-envify": "1.4.0"
+ }
+ }
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "requires": {
+ "hash.js": "1.1.7",
+ "minimalistic-assert": "1.0.1",
+ "minimalistic-crypto-utils": "1.0.1"
+ }
+ },
+ "hoek": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
+ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
+ },
+ "hoist-non-react-statics": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.2.1.tgz",
+ "integrity": "sha512-TFsu3TV3YLY+zFTZDrN8L2DTFanObwmBLpWvJs1qfUuEQ5bTAdFcwfx2T/bsCXfM9QHSLvjfP+nihEl0yvozxw==",
+ "requires": {
+ "react-is": "16.7.0"
+ }
+ },
+ "home-or-tmp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "homedir-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
+ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+ "requires": {
+ "parse-passwd": "1.0.0"
+ }
+ },
+ "hoopy": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
+ "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ=="
+ },
+ "hosted-git-info": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "requires": {
+ "inherits": "2.0.3",
+ "obuf": "1.1.2",
+ "readable-stream": "2.3.6",
+ "wbuf": "1.7.3"
+ }
+ },
+ "hsl-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
+ "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4="
+ },
+ "hsla-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
+ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg="
+ },
+ "html-comment-regex": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
+ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ=="
+ },
+ "html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "requires": {
+ "whatwg-encoding": "1.0.5"
+ }
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
+ },
+ "html-minifier": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
+ "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+ "requires": {
+ "camel-case": "3.0.0",
+ "clean-css": "4.2.1",
+ "commander": "2.17.1",
+ "he": "1.2.0",
+ "param-case": "2.1.1",
+ "relateurl": "0.2.7",
+ "uglify-js": "3.4.9"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+ }
+ }
+ },
+ "html-webpack-plugin": {
+ "version": "4.0.0-alpha.2",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-alpha.2.tgz",
+ "integrity": "sha512-tyvhjVpuGqD7QYHi1l1drMQTg5i+qRxpQEGbdnYFREgOKy7aFDf/ocQ/V1fuEDlQx7jV2zMap3Hj2nE9i5eGXw==",
+ "requires": {
+ "@types/tapable": "1.0.2",
+ "html-minifier": "3.5.21",
+ "loader-utils": "1.2.3",
+ "lodash": "4.17.11",
+ "pretty-error": "2.1.1",
+ "tapable": "1.1.1",
+ "util.promisify": "1.0.0"
+ }
+ },
+ "htmlparser2": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
+ "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
+ "requires": {
+ "domelementtype": "1.3.1",
+ "domhandler": "2.1.0",
+ "domutils": "1.1.6",
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "domutils": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
+ "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
+ "requires": {
+ "domelementtype": "1.3.1"
+ }
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc="
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "requires": {
+ "depd": "1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": "1.4.0"
+ }
+ },
+ "http-parser-js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
+ "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w=="
+ },
+ "http-proxy": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+ "requires": {
+ "eventemitter3": "3.1.0",
+ "follow-redirects": "1.6.1",
+ "requires-port": "1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
+ "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
+ "requires": {
+ "http-proxy": "1.17.0",
+ "is-glob": "4.0.0",
+ "lodash": "4.17.11",
+ "micromatch": "3.1.10"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.16.0"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM="
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
+ "icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0="
+ },
+ "icss-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
+ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
+ "requires": {
+ "postcss": "6.0.23"
+ }
+ },
+ "identity-obj-proxy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
+ "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=",
+ "requires": {
+ "harmony-reflect": "1.6.1"
+ }
+ },
+ "ieee754": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
+ "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA=="
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE="
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg=="
+ },
+ "immer": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-1.7.2.tgz",
+ "integrity": "sha512-4Urocwu9+XLDJw4Tc6ZCg7APVjjLInCFvO4TwGsAYV5zT6YYSor14dsZR0+0tHlDIN92cFUOq+i7fC00G5vTxA=="
+ },
+ "immutable": {
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
+ "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM="
+ },
+ "import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
+ "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+ "requires": {
+ "import-from": "2.1.0"
+ }
+ },
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "requires": {
+ "caller-path": "2.0.0",
+ "resolve-from": "3.0.0"
+ }
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+ "requires": {
+ "resolve-from": "3.0.0"
+ }
+ },
+ "import-local": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
+ "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==",
+ "requires": {
+ "pkg-dir": "2.0.0",
+ "resolve-cwd": "2.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
+ },
+ "in-publish": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
+ "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E="
+ },
+ "indefinite-observable": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-1.0.2.tgz",
+ "integrity": "sha512-Mps0898zEduHyPhb7UCgNmfzlqNZknVmaFz5qzr0mm04YQ5FGLhAyK/dJ+NaRxGyR6juQXIxh5Ev0xx+qq0nYA==",
+ "requires": {
+ "symbol-observable": "1.2.0"
+ }
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "inquirer": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz",
+ "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==",
+ "requires": {
+ "ansi-escapes": "3.1.0",
+ "chalk": "2.4.1",
+ "cli-cursor": "2.1.0",
+ "cli-width": "2.2.0",
+ "external-editor": "3.0.3",
+ "figures": "2.0.0",
+ "lodash": "4.17.11",
+ "mute-stream": "0.0.7",
+ "run-async": "2.3.0",
+ "rxjs": "6.3.3",
+ "string-width": "2.1.1",
+ "strip-ansi": "5.0.0",
+ "through": "2.3.8"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
+ "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w=="
+ },
+ "strip-ansi": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
+ "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
+ "requires": {
+ "ansi-regex": "4.0.0"
+ }
+ }
+ }
+ },
+ "internal-ip": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz",
+ "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==",
+ "requires": {
+ "default-gateway": "2.7.2",
+ "ipaddr.js": "1.8.0"
+ }
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "1.4.0"
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
+ },
+ "ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk="
+ },
+ "ipaddr.js": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+ "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY="
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "requires": {
+ "binary-extensions": "1.12.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "requires": {
+ "builtin-modules": "1.1.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
+ },
+ "is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "requires": {
+ "ci-info": "1.6.0"
+ }
+ },
+ "is-color-stop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
+ "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+ "requires": {
+ "css-color-names": "0.0.4",
+ "hex-color-regex": "1.1.0",
+ "hsl-regex": "1.0.0",
+ "hsla-regex": "1.0.0",
+ "rgb-regex": "1.0.1",
+ "rgba-regex": "1.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE="
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "is-generator-fn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz",
+ "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+ "requires": {
+ "is-path-inside": "1.0.1"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "requires": {
+ "path-is-inside": "1.0.2"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "requires": {
+ "has": "1.0.3"
+ }
+ },
+ "is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk="
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
+ },
+ "is-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.0.0.tgz",
+ "integrity": "sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg=="
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ },
+ "is-svg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
+ "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
+ "requires": {
+ "html-comment-regex": "1.1.2"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "requires": {
+ "has-symbols": "1.0.0"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "isemail": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
+ "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==",
+ "requires": {
+ "punycode": "2.1.1"
+ }
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "istanbul-api": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz",
+ "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==",
+ "requires": {
+ "async": "2.6.1",
+ "fileset": "2.0.3",
+ "istanbul-lib-coverage": "1.2.1",
+ "istanbul-lib-hook": "1.2.2",
+ "istanbul-lib-instrument": "1.10.2",
+ "istanbul-lib-report": "1.1.5",
+ "istanbul-lib-source-maps": "1.2.6",
+ "istanbul-reports": "1.5.1",
+ "js-yaml": "3.12.1",
+ "mkdirp": "0.5.1",
+ "once": "1.4.0"
+ }
+ },
+ "istanbul-lib-coverage": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz",
+ "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ=="
+ },
+ "istanbul-lib-hook": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz",
+ "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==",
+ "requires": {
+ "append-transform": "0.4.0"
+ }
+ },
+ "istanbul-lib-instrument": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz",
+ "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==",
+ "requires": {
+ "babel-generator": "6.26.1",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "istanbul-lib-coverage": "1.2.1",
+ "semver": "5.6.0"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz",
+ "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==",
+ "requires": {
+ "istanbul-lib-coverage": "1.2.1",
+ "mkdirp": "0.5.1",
+ "path-parse": "1.0.6",
+ "supports-color": "3.2.3"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz",
+ "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==",
+ "requires": {
+ "debug": "3.2.6",
+ "istanbul-lib-coverage": "1.2.1",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.3",
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "2.1.1"
+ }
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz",
+ "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==",
+ "requires": {
+ "handlebars": "4.0.12"
+ }
+ },
+ "jest": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz",
+ "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==",
+ "requires": {
+ "import-local": "1.0.0",
+ "jest-cli": "23.6.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "jest-cli": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz",
+ "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==",
+ "requires": {
+ "ansi-escapes": "3.1.0",
+ "chalk": "2.4.1",
+ "exit": "0.1.2",
+ "glob": "7.1.3",
+ "graceful-fs": "4.1.15",
+ "import-local": "1.0.0",
+ "is-ci": "1.2.1",
+ "istanbul-api": "1.3.7",
+ "istanbul-lib-coverage": "1.2.1",
+ "istanbul-lib-instrument": "1.10.2",
+ "istanbul-lib-source-maps": "1.2.6",
+ "jest-changed-files": "23.4.2",
+ "jest-config": "23.6.0",
+ "jest-environment-jsdom": "23.4.0",
+ "jest-get-type": "22.4.3",
+ "jest-haste-map": "23.6.0",
+ "jest-message-util": "23.4.0",
+ "jest-regex-util": "23.3.0",
+ "jest-resolve-dependencies": "23.6.0",
+ "jest-runner": "23.6.0",
+ "jest-runtime": "23.6.0",
+ "jest-snapshot": "23.6.0",
+ "jest-util": "23.4.0",
+ "jest-validate": "23.6.0",
+ "jest-watcher": "23.4.0",
+ "jest-worker": "23.2.0",
+ "micromatch": "2.3.11",
+ "node-notifier": "5.3.0",
+ "prompts": "0.1.14",
+ "realpath-native": "1.0.2",
+ "rimraf": "2.6.3",
+ "slash": "1.0.0",
+ "string-length": "2.0.0",
+ "strip-ansi": "4.0.0",
+ "which": "1.3.1",
+ "yargs": "11.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "jest-changed-files": {
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz",
+ "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==",
+ "requires": {
+ "throat": "4.1.0"
+ }
+ },
+ "jest-config": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz",
+ "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==",
+ "requires": {
+ "babel-core": "6.26.3",
+ "babel-jest": "23.6.0",
+ "chalk": "2.4.1",
+ "glob": "7.1.3",
+ "jest-environment-jsdom": "23.4.0",
+ "jest-environment-node": "23.4.0",
+ "jest-get-type": "22.4.3",
+ "jest-jasmine2": "23.6.0",
+ "jest-regex-util": "23.3.0",
+ "jest-resolve": "23.6.0",
+ "jest-util": "23.4.0",
+ "jest-validate": "23.6.0",
+ "micromatch": "2.3.11",
+ "pretty-format": "23.6.0"
+ },
+ "dependencies": {
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-generator": "6.26.1",
+ "babel-helpers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-register": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "convert-source-map": "1.6.0",
+ "debug": "2.6.9",
+ "json5": "0.5.1",
+ "lodash": "4.17.11",
+ "minimatch": "3.0.4",
+ "path-is-absolute": "1.0.1",
+ "private": "0.1.8",
+ "slash": "1.0.0",
+ "source-map": "0.5.7"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "jest-diff": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz",
+ "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==",
+ "requires": {
+ "chalk": "2.4.1",
+ "diff": "3.5.0",
+ "jest-get-type": "22.4.3",
+ "pretty-format": "23.6.0"
+ }
+ },
+ "jest-docblock": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz",
+ "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=",
+ "requires": {
+ "detect-newline": "2.1.0"
+ }
+ },
+ "jest-each": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz",
+ "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==",
+ "requires": {
+ "chalk": "2.4.1",
+ "pretty-format": "23.6.0"
+ }
+ },
+ "jest-environment-jsdom": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz",
+ "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=",
+ "requires": {
+ "jest-mock": "23.2.0",
+ "jest-util": "23.4.0",
+ "jsdom": "11.12.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
+ },
+ "jsdom": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
+ "requires": {
+ "abab": "2.0.0",
+ "acorn": "5.7.3",
+ "acorn-globals": "4.3.0",
+ "array-equal": "1.0.0",
+ "cssom": "0.3.4",
+ "cssstyle": "1.1.1",
+ "data-urls": "1.1.0",
+ "domexception": "1.0.1",
+ "escodegen": "1.11.0",
+ "html-encoding-sniffer": "1.0.2",
+ "left-pad": "1.3.0",
+ "nwsapi": "2.0.9",
+ "parse5": "4.0.0",
+ "pn": "1.1.0",
+ "request": "2.88.0",
+ "request-promise-native": "1.0.5",
+ "sax": "1.2.4",
+ "symbol-tree": "3.2.2",
+ "tough-cookie": "2.5.0",
+ "w3c-hr-time": "1.0.1",
+ "webidl-conversions": "4.0.2",
+ "whatwg-encoding": "1.0.5",
+ "whatwg-mimetype": "2.3.0",
+ "whatwg-url": "6.5.0",
+ "ws": "5.2.2",
+ "xml-name-validator": "3.0.0"
+ }
+ },
+ "parse5": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA=="
+ },
+ "whatwg-url": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
+ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
+ "requires": {
+ "lodash.sortby": "4.7.0",
+ "tr46": "1.0.1",
+ "webidl-conversions": "4.0.2"
+ }
+ },
+ "ws": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
+ "requires": {
+ "async-limiter": "1.0.0"
+ }
+ }
+ }
+ },
+ "jest-environment-node": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz",
+ "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=",
+ "requires": {
+ "jest-mock": "23.2.0",
+ "jest-util": "23.4.0"
+ }
+ },
+ "jest-get-type": {
+ "version": "22.4.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz",
+ "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w=="
+ },
+ "jest-haste-map": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz",
+ "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==",
+ "requires": {
+ "fb-watchman": "2.0.0",
+ "graceful-fs": "4.1.15",
+ "invariant": "2.2.4",
+ "jest-docblock": "23.2.0",
+ "jest-serializer": "23.0.1",
+ "jest-worker": "23.2.0",
+ "micromatch": "2.3.11",
+ "sane": "2.5.2"
+ }
+ },
+ "jest-jasmine2": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz",
+ "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==",
+ "requires": {
+ "babel-traverse": "6.26.0",
+ "chalk": "2.4.1",
+ "co": "4.6.0",
+ "expect": "23.6.0",
+ "is-generator-fn": "1.0.0",
+ "jest-diff": "23.6.0",
+ "jest-each": "23.6.0",
+ "jest-matcher-utils": "23.6.0",
+ "jest-message-util": "23.4.0",
+ "jest-snapshot": "23.6.0",
+ "jest-util": "23.4.0",
+ "pretty-format": "23.6.0"
+ }
+ },
+ "jest-leak-detector": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz",
+ "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==",
+ "requires": {
+ "pretty-format": "23.6.0"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz",
+ "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==",
+ "requires": {
+ "chalk": "2.4.1",
+ "jest-get-type": "22.4.3",
+ "pretty-format": "23.6.0"
+ }
+ },
+ "jest-message-util": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz",
+ "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=",
+ "requires": {
+ "@babel/code-frame": "7.0.0",
+ "chalk": "2.4.1",
+ "micromatch": "2.3.11",
+ "slash": "1.0.0",
+ "stack-utils": "1.0.2"
+ }
+ },
+ "jest-mock": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz",
+ "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ="
+ },
+ "jest-pnp-resolver": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.0.1.tgz",
+ "integrity": "sha512-kzhvJQp+9k0a/hpvIIzOJgOwfOqmnohdrAMZW2EscH3kxR2VWD7EcPa10cio8EK9V7PcD75bhG1pFnO70zGwSQ=="
+ },
+ "jest-regex-util": {
+ "version": "23.3.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz",
+ "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U="
+ },
+ "jest-resolve": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz",
+ "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==",
+ "requires": {
+ "browser-resolve": "1.11.3",
+ "chalk": "2.4.1",
+ "realpath-native": "1.0.2"
+ }
+ },
+ "jest-resolve-dependencies": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz",
+ "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==",
+ "requires": {
+ "jest-regex-util": "23.3.0",
+ "jest-snapshot": "23.6.0"
+ }
+ },
+ "jest-runner": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz",
+ "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==",
+ "requires": {
+ "exit": "0.1.2",
+ "graceful-fs": "4.1.15",
+ "jest-config": "23.6.0",
+ "jest-docblock": "23.2.0",
+ "jest-haste-map": "23.6.0",
+ "jest-jasmine2": "23.6.0",
+ "jest-leak-detector": "23.6.0",
+ "jest-message-util": "23.4.0",
+ "jest-runtime": "23.6.0",
+ "jest-util": "23.4.0",
+ "jest-worker": "23.2.0",
+ "source-map-support": "0.5.9",
+ "throat": "4.1.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-support": {
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
+ "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+ "requires": {
+ "buffer-from": "1.1.1",
+ "source-map": "0.6.1"
+ }
+ }
+ }
+ },
+ "jest-runtime": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz",
+ "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==",
+ "requires": {
+ "babel-core": "6.26.3",
+ "babel-plugin-istanbul": "4.1.6",
+ "chalk": "2.4.1",
+ "convert-source-map": "1.6.0",
+ "exit": "0.1.2",
+ "fast-json-stable-stringify": "2.0.0",
+ "graceful-fs": "4.1.15",
+ "jest-config": "23.6.0",
+ "jest-haste-map": "23.6.0",
+ "jest-message-util": "23.4.0",
+ "jest-regex-util": "23.3.0",
+ "jest-resolve": "23.6.0",
+ "jest-snapshot": "23.6.0",
+ "jest-util": "23.4.0",
+ "jest-validate": "23.6.0",
+ "micromatch": "2.3.11",
+ "realpath-native": "1.0.2",
+ "slash": "1.0.0",
+ "strip-bom": "3.0.0",
+ "write-file-atomic": "2.3.0",
+ "yargs": "11.1.0"
+ },
+ "dependencies": {
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-generator": "6.26.1",
+ "babel-helpers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-register": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "convert-source-map": "1.6.0",
+ "debug": "2.6.9",
+ "json5": "0.5.1",
+ "lodash": "4.17.11",
+ "minimatch": "3.0.4",
+ "path-is-absolute": "1.0.1",
+ "private": "0.1.8",
+ "slash": "1.0.0",
+ "source-map": "0.5.7"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
+ }
+ }
+ },
+ "jest-serializer": {
+ "version": "23.0.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz",
+ "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU="
+ },
+ "jest-snapshot": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz",
+ "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==",
+ "requires": {
+ "babel-types": "6.26.0",
+ "chalk": "2.4.1",
+ "jest-diff": "23.6.0",
+ "jest-matcher-utils": "23.6.0",
+ "jest-message-util": "23.4.0",
+ "jest-resolve": "23.6.0",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "pretty-format": "23.6.0",
+ "semver": "5.6.0"
+ }
+ },
+ "jest-util": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz",
+ "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=",
+ "requires": {
+ "callsites": "2.0.0",
+ "chalk": "2.4.1",
+ "graceful-fs": "4.1.15",
+ "is-ci": "1.2.1",
+ "jest-message-util": "23.4.0",
+ "mkdirp": "0.5.1",
+ "slash": "1.0.0",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "jest-validate": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz",
+ "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==",
+ "requires": {
+ "chalk": "2.4.1",
+ "jest-get-type": "22.4.3",
+ "leven": "2.1.0",
+ "pretty-format": "23.6.0"
+ }
+ },
+ "jest-watcher": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz",
+ "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=",
+ "requires": {
+ "ansi-escapes": "3.1.0",
+ "chalk": "2.4.1",
+ "string-length": "2.0.0"
+ }
+ },
+ "jest-worker": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz",
+ "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=",
+ "requires": {
+ "merge-stream": "1.0.1"
+ }
+ },
+ "joi": {
+ "version": "11.4.0",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz",
+ "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==",
+ "requires": {
+ "hoek": "4.2.1",
+ "isemail": "3.2.0",
+ "topo": "2.0.2"
+ }
+ },
+ "js-base64": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz",
+ "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g=="
+ },
+ "js-levenshtein": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.5.tgz",
+ "integrity": "sha512-ap2aTez3WZASzMmJvgvG+nsrCCrtHPQ+4YB+WQjYQpXgLkM+WqwkpzdlVs5l7Xhk128I/CisIk4CdXl7pIchUA=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "js-yaml": {
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
+ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
+ "requires": {
+ "argparse": "1.0.10",
+ "esprima": "4.0.1"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "jsdom": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-13.1.0.tgz",
+ "integrity": "sha512-C2Kp0qNuopw0smXFaHeayvharqF3kkcNqlcIlSX71+3XrsOFwkEPLt/9f5JksMmaul2JZYIQuY+WTpqHpQQcLg==",
+ "requires": {
+ "abab": "2.0.0",
+ "acorn": "6.0.5",
+ "acorn-globals": "4.3.0",
+ "array-equal": "1.0.0",
+ "cssom": "0.3.4",
+ "cssstyle": "1.1.1",
+ "data-urls": "1.1.0",
+ "domexception": "1.0.1",
+ "escodegen": "1.11.0",
+ "html-encoding-sniffer": "1.0.2",
+ "nwsapi": "2.0.9",
+ "parse5": "5.1.0",
+ "pn": "1.1.0",
+ "request": "2.88.0",
+ "request-promise-native": "1.0.5",
+ "saxes": "3.1.5",
+ "symbol-tree": "3.2.2",
+ "tough-cookie": "2.5.0",
+ "w3c-hr-time": "1.0.1",
+ "w3c-xmlserializer": "1.0.1",
+ "webidl-conversions": "4.0.2",
+ "whatwg-encoding": "1.0.5",
+ "whatwg-mimetype": "2.3.0",
+ "whatwg-url": "7.0.0",
+ "ws": "6.1.2",
+ "xml-name-validator": "3.0.0"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "json3": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE="
+ },
+ "json5": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+ "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "requires": {
+ "minimist": "1.2.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "requires": {
+ "graceful-fs": "4.1.15"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "jsx-ast-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
+ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=",
+ "requires": {
+ "array-includes": "3.0.3"
+ }
+ },
+ "killable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg=="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ },
+ "kleur": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz",
+ "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ=="
+ },
+ "last-call-webpack-plugin": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
+ "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==",
+ "requires": {
+ "lodash": "4.17.11",
+ "webpack-sources": "1.3.0"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "1.0.0"
+ }
+ },
+ "left-pad": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
+ "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="
+ },
+ "leven": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
+ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA="
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "requires": {
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "requires": {
+ "error-ex": "1.3.2"
+ }
+ }
+ }
+ },
+ "loader-fs-cache": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz",
+ "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=",
+ "requires": {
+ "find-cache-dir": "0.1.1",
+ "mkdirp": "0.5.1"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
+ "requires": {
+ "commondir": "1.0.1",
+ "mkdirp": "0.5.1",
+ "pkg-dir": "1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "requires": {
+ "find-up": "1.1.2"
+ }
+ }
+ }
+ },
+ "loader-runner": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz",
+ "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw=="
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "requires": {
+ "big.js": "5.2.2",
+ "emojis-list": "2.1.0",
+ "json5": "1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "requires": {
+ "minimist": "1.2.0"
+ }
+ }
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "requires": {
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
+ },
+ "lodash.assign": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
+ },
+ "lodash.mergewith": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
+ "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ=="
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
+ },
+ "lodash.tail": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
+ "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ="
+ },
+ "lodash.template": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
+ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.templatesettings": "4.1.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
+ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
+ "requires": {
+ "lodash._reinterpolate": "3.0.0"
+ }
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
+ },
+ "loglevel": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
+ "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po="
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "requires": {
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw="
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "requires": {
+ "pify": "3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ }
+ }
+ },
+ "makeerror": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+ "requires": {
+ "tmpl": "1.0.4"
+ }
+ },
+ "mamacro": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
+ "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA=="
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "requires": {
+ "p-defer": "1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "requires": {
+ "object-visit": "1.0.1"
+ }
+ },
+ "math-random": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+ "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w="
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "requires": {
+ "hash-base": "3.0.4",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "mdn-data": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
+ "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA=="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "mem": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+ "requires": {
+ "mimic-fn": "1.2.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "requires": {
+ "errno": "0.1.7",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "requires": {
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
+ }
+ },
+ "merge": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
+ "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ=="
+ },
+ "merge-deep": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz",
+ "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==",
+ "requires": {
+ "arr-union": "3.1.0",
+ "clone-deep": "0.2.4",
+ "kind-of": "3.2.2"
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "requires": {
+ "readable-stream": "2.3.6"
+ }
+ },
+ "merge2": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz",
+ "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA=="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0"
+ }
+ },
+ "mime": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
+ "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w=="
+ },
+ "mime-db": {
+ "version": "1.37.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
+ "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
+ },
+ "mime-types": {
+ "version": "2.1.21",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
+ "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
+ "requires": {
+ "mime-db": "1.37.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ },
+ "mini-css-extract-plugin": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz",
+ "integrity": "sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg==",
+ "requires": {
+ "loader-utils": "1.2.3",
+ "schema-utils": "1.0.0",
+ "webpack-sources": "1.3.0"
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "requires": {
+ "concat-stream": "1.6.2",
+ "duplexify": "3.6.1",
+ "end-of-stream": "1.4.1",
+ "flush-write-stream": "1.0.3",
+ "from2": "2.3.0",
+ "parallel-transform": "1.1.0",
+ "pump": "3.0.0",
+ "pumpify": "1.5.1",
+ "stream-each": "1.2.3",
+ "through2": "2.0.5"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "requires": {
+ "for-in": "1.0.2",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "mixin-object": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
+ "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+ "requires": {
+ "for-in": "0.1.8",
+ "is-extendable": "0.1.1"
+ },
+ "dependencies": {
+ "for-in": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
+ "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE="
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "requires": {
+ "aproba": "1.2.0",
+ "copy-concurrently": "1.0.5",
+ "fs-write-stream-atomic": "1.0.10",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.3",
+ "run-queue": "1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ },
+ "multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "requires": {
+ "dns-packet": "1.3.1",
+ "thunky": "1.0.3"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE="
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
+ },
+ "nan": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
+ "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw=="
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "fragment-cache": "0.2.1",
+ "is-windows": "1.0.2",
+ "kind-of": "6.0.2",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+ },
+ "neo-async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
+ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA=="
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "requires": {
+ "lower-case": "1.1.4"
+ }
+ },
+ "node-forge": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
+ "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ=="
+ },
+ "node-gyp": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+ "requires": {
+ "fstream": "1.0.11",
+ "glob": "7.1.3",
+ "graceful-fs": "4.1.15",
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "npmlog": "4.1.2",
+ "osenv": "0.1.5",
+ "request": "2.88.0",
+ "rimraf": "2.6.3",
+ "semver": "5.3.0",
+ "tar": "2.2.1",
+ "which": "1.3.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
+ }
+ }
+ },
+ "node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs="
+ },
+ "node-libs-browser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
+ "requires": {
+ "assert": "1.4.1",
+ "browserify-zlib": "0.2.0",
+ "buffer": "4.9.1",
+ "console-browserify": "1.1.0",
+ "constants-browserify": "1.0.0",
+ "crypto-browserify": "3.12.0",
+ "domain-browser": "1.2.0",
+ "events": "1.1.1",
+ "https-browserify": "1.0.0",
+ "os-browserify": "0.3.0",
+ "path-browserify": "0.0.0",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.3.6",
+ "stream-browserify": "2.0.1",
+ "stream-http": "2.8.3",
+ "string_decoder": "1.1.1",
+ "timers-browserify": "2.0.10",
+ "tty-browserify": "0.0.0",
+ "url": "0.11.0",
+ "util": "0.10.4",
+ "vm-browserify": "0.0.4"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ }
+ }
+ },
+ "node-notifier": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz",
+ "integrity": "sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==",
+ "requires": {
+ "growly": "1.3.0",
+ "semver": "5.6.0",
+ "shellwords": "0.1.1",
+ "which": "1.3.1"
+ }
+ },
+ "node-releases": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.3.tgz",
+ "integrity": "sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==",
+ "requires": {
+ "semver": "5.6.0"
+ }
+ },
+ "node-sass": {
+ "version": "4.11.0",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz",
+ "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==",
+ "requires": {
+ "async-foreach": "0.1.3",
+ "chalk": "1.1.3",
+ "cross-spawn": "3.0.1",
+ "gaze": "1.1.3",
+ "get-stdin": "4.0.1",
+ "glob": "7.1.3",
+ "in-publish": "2.0.0",
+ "lodash.assign": "4.2.0",
+ "lodash.clonedeep": "4.5.0",
+ "lodash.mergewith": "4.6.1",
+ "meow": "3.7.0",
+ "mkdirp": "0.5.1",
+ "nan": "2.12.1",
+ "node-gyp": "3.8.0",
+ "npmlog": "4.1.2",
+ "request": "2.88.0",
+ "sass-graph": "2.2.4",
+ "stdout-stream": "1.4.1",
+ "true-case-path": "1.0.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "requires": {
+ "lru-cache": "4.1.5",
+ "which": "1.3.1"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "requires": {
+ "hosted-git-info": "2.7.1",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.6.0",
+ "validate-npm-package-license": "3.0.4"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
+ },
+ "normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg=="
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "1.1.5",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "requires": {
+ "boolbase": "1.0.0"
+ }
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "nwsapi": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz",
+ "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ=="
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "requires": {
+ "copy-descriptor": "0.1.1",
+ "define-property": "0.2.5",
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ }
+ }
+ },
+ "object-hash": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
+ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="
+ },
+ "object-keys": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag=="
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "requires": {
+ "define-properties": "1.1.3",
+ "function-bind": "1.1.1",
+ "has-symbols": "1.0.0",
+ "object-keys": "1.0.12"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+ "requires": {
+ "define-properties": "1.1.3",
+ "es-abstract": "1.13.0"
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
+ "object.values": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+ "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+ "requires": {
+ "define-properties": "1.1.3",
+ "es-abstract": "1.13.0",
+ "function-bind": "1.1.1",
+ "has": "1.0.3"
+ }
+ },
+ "obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "requires": {
+ "mimic-fn": "1.2.0"
+ }
+ },
+ "opn": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz",
+ "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==",
+ "requires": {
+ "is-wsl": "1.1.0"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "requires": {
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.3"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+ }
+ }
+ },
+ "optimize-css-assets-webpack-plugin": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz",
+ "integrity": "sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==",
+ "requires": {
+ "cssnano": "4.1.8",
+ "last-call-webpack-plugin": "3.0.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "requires": {
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
+ }
+ },
+ "original": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+ "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+ "requires": {
+ "url-parse": "1.4.4"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc="
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-locale": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+ "requires": {
+ "execa": "0.7.0",
+ "lcid": "1.0.0",
+ "mem": "1.1.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+ },
+ "p-is-promise": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4="
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "requires": {
+ "p-try": "1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "requires": {
+ "p-limit": "1.3.0"
+ }
+ },
+ "p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA=="
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+ },
+ "pako": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz",
+ "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ=="
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "requires": {
+ "cyclist": "0.2.2",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "requires": {
+ "no-case": "2.3.2"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
+ "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
+ "requires": {
+ "asn1.js": "4.10.1",
+ "browserify-aes": "1.2.0",
+ "create-hash": "1.2.0",
+ "evp_bytestokey": "1.0.3",
+ "pbkdf2": "3.0.17"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "requires": {
+ "error-ex": "1.3.2",
+ "json-parse-better-errors": "1.0.2"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
+ },
+ "parse5": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
+ "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ=="
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo="
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+ },
+ "path-to-regexp": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
+ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+ "requires": {
+ "isarray": "0.0.1"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "requires": {
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "ripemd160": "2.0.2",
+ "safe-buffer": "5.1.2",
+ "sha.js": "2.4.11"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "requires": {
+ "find-up": "2.1.0"
+ }
+ },
+ "pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
+ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+ "requires": {
+ "find-up": "2.1.0"
+ }
+ },
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow=="
+ },
+ "pn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
+ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA=="
+ },
+ "pnp-webpack-plugin": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.1.0.tgz",
+ "integrity": "sha512-CPCdcFxx7fEcDMWTDjXe2Wypt4JuMt4q5Q2UrpTcyBBkLiCIyPEh/mCGmUWIcNkKGyXwQ9Y2wVhlKm6ketiBNQ=="
+ },
+ "portfinder": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz",
+ "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==",
+ "requires": {
+ "async": "1.5.2",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.1"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+ },
+ "postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "requires": {
+ "chalk": "2.4.1",
+ "source-map": "0.6.1",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "postcss-attribute-case-insensitive": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.0.tgz",
+ "integrity": "sha512-K/zqdg0/UgUgC8qR0lDuxYzmowPpnvrrNC5YuoqzhHMubR9AuhsPlpVu3jjkLHgDAzR+ohD/m7//iGnN9WxbzQ==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "5.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-calc": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz",
+ "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==",
+ "requires": {
+ "css-unit-converter": "1.1.1",
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "5.0.0",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-functional-notation": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz",
+ "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-gray": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
+ "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==",
+ "requires": {
+ "@csstools/convert-colors": "1.4.0",
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-hex-alpha": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.2.tgz",
+ "integrity": "sha512-8bIOzQMGdZVifoBQUJdw+yIY00omBd2EwkJXepQo9cjp1UOHHHoeRDeSzTP6vakEpaRc6GAIOfvcQR7jBYaG5Q==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-mod-function": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz",
+ "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==",
+ "requires": {
+ "@csstools/convert-colors": "1.4.0",
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-color-rebeccapurple": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
+ "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-colormin": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.2.tgz",
+ "integrity": "sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==",
+ "requires": {
+ "browserslist": "4.3.7",
+ "color": "3.1.0",
+ "has": "1.0.3",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-convert-values": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-custom-media": {
+ "version": "7.0.7",
+ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.7.tgz",
+ "integrity": "sha512-bWPCdZKdH60wKOTG4HKEgxWnZVjAIVNOJDvi3lkuTa90xo/K0YHa2ZnlKLC5e2qF8qCcMQXt0yzQITBp8d0OFA==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-custom-properties": {
+ "version": "8.0.9",
+ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.9.tgz",
+ "integrity": "sha512-/Lbn5GP2JkKhgUO2elMs4NnbUJcvHX4AaF5nuJDaNkd2chYW1KA5qtOGGgdkBEWcXtKSQfHXzT7C6grEVyb13w==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-custom-selectors": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
+ "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "5.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-dir-pseudo-class": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz",
+ "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "5.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-discard-comments": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz",
+ "integrity": "sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-discard-duplicates": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-discard-empty": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-discard-overridden": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-double-position-gradients": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz",
+ "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-env-function": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
+ "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-flexbugs-fixes": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz",
+ "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-focus-visible": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
+ "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-focus-within": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
+ "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-font-variant": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz",
+ "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-gap-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
+ "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-image-set-function": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz",
+ "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-initial": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.0.tgz",
+ "integrity": "sha512-WzrqZ5nG9R9fUtrA+we92R4jhVvEB32IIRTzfIG/PLL8UV4CvbF1ugTEHEFX6vWxl41Xt5RTCJPEZkuWzrOM+Q==",
+ "requires": {
+ "lodash.template": "4.4.0",
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-lab-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
+ "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==",
+ "requires": {
+ "@csstools/convert-colors": "1.4.0",
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-load-config": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz",
+ "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==",
+ "requires": {
+ "cosmiconfig": "4.0.0",
+ "import-cwd": "2.1.0"
+ },
+ "dependencies": {
+ "cosmiconfig": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz",
+ "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==",
+ "requires": {
+ "is-directory": "0.3.1",
+ "js-yaml": "3.12.1",
+ "parse-json": "4.0.0",
+ "require-from-string": "2.0.2"
+ }
+ }
+ }
+ },
+ "postcss-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
+ "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+ "requires": {
+ "loader-utils": "1.2.3",
+ "postcss": "7.0.8",
+ "postcss-load-config": "2.0.0",
+ "schema-utils": "1.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-logical": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
+ "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-media-minmax": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
+ "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-merge-longhand": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz",
+ "integrity": "sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==",
+ "requires": {
+ "css-color-names": "0.0.4",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1",
+ "stylehacks": "4.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-merge-rules": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz",
+ "integrity": "sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==",
+ "requires": {
+ "browserslist": "4.3.7",
+ "caniuse-api": "3.0.0",
+ "cssnano-util-same-parent": "4.0.1",
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "3.1.1",
+ "vendors": "1.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+ "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+ "requires": {
+ "dot-prop": "4.2.0",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-minify-font-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz",
+ "integrity": "sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==",
+ "requires": {
+ "cssnano-util-get-arguments": "4.0.0",
+ "is-color-stop": "1.1.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-minify-params": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz",
+ "integrity": "sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==",
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "browserslist": "4.3.7",
+ "cssnano-util-get-arguments": "4.0.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1",
+ "uniqs": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz",
+ "integrity": "sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==",
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "has": "1.0.3",
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "3.1.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+ "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+ "requires": {
+ "dot-prop": "4.2.0",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz",
+ "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==",
+ "requires": {
+ "postcss": "6.0.23"
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
+ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
+ "requires": {
+ "css-selector-tokenizer": "0.7.1",
+ "postcss": "6.0.23"
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
+ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
+ "requires": {
+ "css-selector-tokenizer": "0.7.1",
+ "postcss": "6.0.23"
+ }
+ },
+ "postcss-modules-values": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
+ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
+ "requires": {
+ "icss-replace-symbols": "1.1.0",
+ "postcss": "6.0.23"
+ }
+ },
+ "postcss-nesting": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.0.tgz",
+ "integrity": "sha512-WSsbVd5Ampi3Y0nk/SKr5+K34n52PqMqEfswu6RtU4r7wA8vSD+gM8/D9qq4aJkHImwn1+9iEFTbjoWsQeqtaQ==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-charset": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-display-values": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz",
+ "integrity": "sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==",
+ "requires": {
+ "cssnano-util-get-match": "4.0.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-positions": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz",
+ "integrity": "sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==",
+ "requires": {
+ "cssnano-util-get-arguments": "4.0.0",
+ "has": "1.0.3",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-repeat-style": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz",
+ "integrity": "sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==",
+ "requires": {
+ "cssnano-util-get-arguments": "4.0.0",
+ "cssnano-util-get-match": "4.0.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-string": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz",
+ "integrity": "sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==",
+ "requires": {
+ "has": "1.0.3",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-timing-functions": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz",
+ "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==",
+ "requires": {
+ "cssnano-util-get-match": "4.0.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-unicode": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+ "requires": {
+ "browserslist": "4.3.7",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+ "requires": {
+ "is-absolute-url": "2.1.0",
+ "normalize-url": "3.3.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-normalize-whitespace": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz",
+ "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz",
+ "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==",
+ "requires": {
+ "cssnano-util-get-arguments": "4.0.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-overflow-shorthand": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
+ "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-page-break": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
+ "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-place": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
+ "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-values-parser": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-preset-env": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.3.1.tgz",
+ "integrity": "sha512-erl+OcCTr1+jsfJNQjBweyb8Y1s6KngUBwoqJnRXO197PmEE6u9HxZfnpKkTQqasxZljxNHzXR5hMb7MdD0Zdw==",
+ "requires": {
+ "autoprefixer": "9.4.4",
+ "browserslist": "4.3.7",
+ "caniuse-lite": "1.0.30000927",
+ "cssdb": "4.3.0",
+ "postcss": "7.0.8",
+ "postcss-attribute-case-insensitive": "4.0.0",
+ "postcss-color-functional-notation": "2.0.1",
+ "postcss-color-gray": "5.0.0",
+ "postcss-color-hex-alpha": "5.0.2",
+ "postcss-color-mod-function": "3.0.3",
+ "postcss-color-rebeccapurple": "4.0.1",
+ "postcss-custom-media": "7.0.7",
+ "postcss-custom-properties": "8.0.9",
+ "postcss-custom-selectors": "5.1.2",
+ "postcss-dir-pseudo-class": "5.0.0",
+ "postcss-double-position-gradients": "1.0.0",
+ "postcss-env-function": "2.0.2",
+ "postcss-focus-visible": "4.0.0",
+ "postcss-focus-within": "3.0.0",
+ "postcss-font-variant": "4.0.0",
+ "postcss-gap-properties": "2.0.0",
+ "postcss-image-set-function": "3.0.1",
+ "postcss-initial": "3.0.0",
+ "postcss-lab-function": "2.0.1",
+ "postcss-logical": "3.0.0",
+ "postcss-media-minmax": "4.0.0",
+ "postcss-nesting": "7.0.0",
+ "postcss-overflow-shorthand": "2.0.0",
+ "postcss-page-break": "2.0.0",
+ "postcss-place": "4.0.1",
+ "postcss-pseudo-class-any-link": "6.0.0",
+ "postcss-replace-overflow-wrap": "3.0.0",
+ "postcss-selector-matches": "4.0.0",
+ "postcss-selector-not": "4.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-pseudo-class-any-link": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz",
+ "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==",
+ "requires": {
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "5.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-reduce-initial": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz",
+ "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==",
+ "requires": {
+ "browserslist": "4.3.7",
+ "caniuse-api": "3.0.0",
+ "has": "1.0.3",
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-reduce-transforms": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz",
+ "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==",
+ "requires": {
+ "cssnano-util-get-match": "4.0.0",
+ "has": "1.0.3",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-replace-overflow-wrap": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz",
+ "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-safe-parser": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz",
+ "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==",
+ "requires": {
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-selector-matches": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
+ "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==",
+ "requires": {
+ "balanced-match": "1.0.0",
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-selector-not": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz",
+ "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==",
+ "requires": {
+ "balanced-match": "1.0.0",
+ "postcss": "7.0.8"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+ "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+ "requires": {
+ "cssesc": "2.0.0",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ },
+ "dependencies": {
+ "cssesc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg=="
+ }
+ }
+ },
+ "postcss-svgo": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz",
+ "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==",
+ "requires": {
+ "is-svg": "3.0.0",
+ "postcss": "7.0.8",
+ "postcss-value-parser": "3.3.1",
+ "svgo": "1.1.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+ "requires": {
+ "alphanum-sort": "1.0.2",
+ "postcss": "7.0.8",
+ "uniqs": "2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
+ },
+ "postcss-values-parser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.0.tgz",
+ "integrity": "sha512-cyRdkgbRRefu91ByAlJow4y9w/hnBmmWgLpWmlFQ2bpIy2eKrqowt3VeYcaHQ08otVXmC9V2JtYW1Z/RpvYR8A==",
+ "requires": {
+ "flatten": "1.0.2",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+ },
+ "prettier": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.15.3.tgz",
+ "integrity": "sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg=="
+ },
+ "pretty-bytes": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
+ "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk="
+ },
+ "pretty-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "requires": {
+ "renderkid": "2.0.2",
+ "utila": "0.4.0"
+ }
+ },
+ "pretty-format": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz",
+ "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==",
+ "requires": {
+ "ansi-regex": "3.0.0",
+ "ansi-styles": "3.2.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ }
+ }
+ },
+ "private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
+ },
+ "prompts": {
+ "version": "0.1.14",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz",
+ "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==",
+ "requires": {
+ "kleur": "2.0.2",
+ "sisteransi": "0.1.1"
+ }
+ },
+ "prop-types": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "requires": {
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
+ "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+ "requires": {
+ "forwarded": "0.1.2",
+ "ipaddr.js": "1.8.0"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "psl": {
+ "version": "1.1.31",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
+ "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.2.0",
+ "parse-asn1": "5.1.1",
+ "randombytes": "2.0.6",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "requires": {
+ "duplexify": "3.6.1",
+ "inherits": "2.0.3",
+ "pump": "2.0.1"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+ },
+ "qr.js": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz",
+ "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8="
+ },
+ "qrcode.react": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-0.9.2.tgz",
+ "integrity": "sha512-opV0IA4w84qMaZg3hhgmktDs1xjfx3K7RAOzdvmKgkLdhmtv95AYGZmlG0s3NIAZ1qXCK4AyPJayLd3sa6p/RA==",
+ "requires": {
+ "prop-types": "15.6.2",
+ "qr.js": "0.0.0"
+ }
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ },
+ "query-string": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.2.0.tgz",
+ "integrity": "sha512-5wupExkIt8RYL4h/FE+WTg3JHk62e6fFPWtAZA9J5IWK1PfTfKkMS93HBUHcFpeYi9KsY5pFbh+ldvEyaz5MyA==",
+ "requires": {
+ "decode-uri-component": "0.2.0",
+ "strict-uri-encode": "2.0.0"
+ }
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
+ },
+ "querystringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
+ "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg=="
+ },
+ "raf": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz",
+ "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==",
+ "requires": {
+ "performance-now": "2.1.0"
+ }
+ },
+ "randomatic": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
+ "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
+ "requires": {
+ "is-number": "4.0.0",
+ "kind-of": "6.0.2",
+ "math-random": "1.0.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "randombytes": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
+ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "requires": {
+ "randombytes": "2.0.6",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ },
+ "raw-body": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
+ "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.3",
+ "iconv-lite": "0.4.23",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ }
+ }
+ },
+ "react": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.7.0.tgz",
+ "integrity": "sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==",
+ "requires": {
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "prop-types": "15.6.2",
+ "scheduler": "0.12.0"
+ }
+ },
+ "react-app-polyfill": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-0.2.0.tgz",
+ "integrity": "sha512-uBfocjRsBNqhTaEywUZ2buzhHbor2jBbnhZY8VUZ7VZ3PXucIPZrPDAAmbclELhvl+x08PbynAGQfMYcBmqZ2w==",
+ "requires": {
+ "core-js": "2.5.7",
+ "object-assign": "4.1.1",
+ "promise": "8.0.2",
+ "raf": "3.4.0",
+ "whatwg-fetch": "3.0.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+ "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+ },
+ "promise": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.2.tgz",
+ "integrity": "sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw==",
+ "requires": {
+ "asap": "2.0.6"
+ }
+ }
+ }
+ },
+ "react-dev-utils": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-7.0.1.tgz",
+ "integrity": "sha512-AN/RKZKHsyB2FebKSyMLOecvjuzZ54lzsLYF8wNmwwgRA3dVC4vhYsafvME7JD4q7RUB0bejqFWjOS9QtN48Zg==",
+ "requires": {
+ "@babel/code-frame": "7.0.0",
+ "address": "1.0.3",
+ "browserslist": "4.1.1",
+ "chalk": "2.4.1",
+ "cross-spawn": "6.0.5",
+ "detect-port-alt": "1.1.6",
+ "escape-string-regexp": "1.0.5",
+ "filesize": "3.6.1",
+ "find-up": "3.0.0",
+ "global-modules": "1.0.0",
+ "globby": "8.0.1",
+ "gzip-size": "5.0.0",
+ "immer": "1.7.2",
+ "inquirer": "6.2.0",
+ "is-root": "2.0.0",
+ "loader-utils": "1.1.0",
+ "opn": "5.4.0",
+ "pkg-up": "2.0.0",
+ "react-error-overlay": "5.1.2",
+ "recursive-readdir": "2.2.2",
+ "shell-quote": "1.6.1",
+ "sockjs-client": "1.1.5",
+ "strip-ansi": "4.0.0",
+ "text-table": "0.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
+ },
+ "browserslist": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz",
+ "integrity": "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==",
+ "requires": {
+ "caniuse-lite": "1.0.30000927",
+ "electron-to-chromium": "1.3.100",
+ "node-releases": "1.1.3"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "inquirer": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz",
+ "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==",
+ "requires": {
+ "ansi-escapes": "3.1.0",
+ "chalk": "2.4.1",
+ "cli-cursor": "2.1.0",
+ "cli-width": "2.2.0",
+ "external-editor": "3.0.3",
+ "figures": "2.0.0",
+ "lodash": "4.17.11",
+ "mute-stream": "0.0.7",
+ "run-async": "2.3.0",
+ "rxjs": "6.3.3",
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "through": "2.3.8"
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+ },
+ "loader-utils": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+ "requires": {
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "react-dom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz",
+ "integrity": "sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==",
+ "requires": {
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "prop-types": "15.6.2",
+ "scheduler": "0.12.0"
+ }
+ },
+ "react-error-overlay": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.2.tgz",
+ "integrity": "sha512-7kEBKwU9R8fKnZJBRa5RSIfay4KJwnYvKB6gODGicUmDSAhQJ7Tdnll5S0RLtYrzRfMVXlqYw61rzrSpP4ThLQ=="
+ },
+ "react-is": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.7.0.tgz",
+ "integrity": "sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g=="
+ },
+ "react-redux": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-6.0.0.tgz",
+ "integrity": "sha512-EmbC3uLl60pw2VqSSkj6HpZ6jTk12RMrwXMBdYtM6niq0MdEaRq9KYCwpJflkOZj349BLGQm1MI/JO1W96kLWQ==",
+ "requires": {
+ "@babel/runtime": "7.2.0",
+ "hoist-non-react-statics": "3.2.1",
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "prop-types": "15.6.2",
+ "react-is": "16.7.0"
+ }
+ },
+ "react-router": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz",
+ "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==",
+ "requires": {
+ "history": "4.7.2",
+ "hoist-non-react-statics": "2.5.5",
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "path-to-regexp": "1.7.0",
+ "prop-types": "15.6.2",
+ "warning": "4.0.2"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
+ "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
+ }
+ }
+ },
+ "react-router-dom": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz",
+ "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==",
+ "requires": {
+ "history": "4.7.2",
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "prop-types": "15.6.2",
+ "react-router": "4.3.1",
+ "warning": "4.0.2"
+ }
+ },
+ "react-scripts": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-2.1.3.tgz",
+ "integrity": "sha512-JASD0QVVgSVleVhA9TeA+UBx+shq887hm/L+09qjZLrqIUvJZHZU+oOnhMFGot02Yop+LKfkvf9KSsTNlu/Rwg==",
+ "requires": {
+ "@babel/core": "7.1.6",
+ "@svgr/webpack": "2.4.1",
+ "babel-core": "7.0.0-bridge.0",
+ "babel-eslint": "9.0.0",
+ "babel-jest": "23.6.0",
+ "babel-loader": "8.0.4",
+ "babel-plugin-named-asset-import": "0.3.0",
+ "babel-preset-react-app": "7.0.0",
+ "bfj": "6.1.1",
+ "case-sensitive-paths-webpack-plugin": "2.1.2",
+ "chalk": "2.4.1",
+ "css-loader": "1.0.0",
+ "dotenv": "6.0.0",
+ "dotenv-expand": "4.2.0",
+ "eslint": "5.6.0",
+ "eslint-config-react-app": "3.0.6",
+ "eslint-loader": "2.1.1",
+ "eslint-plugin-flowtype": "2.50.1",
+ "eslint-plugin-import": "2.14.0",
+ "eslint-plugin-jsx-a11y": "6.1.2",
+ "eslint-plugin-react": "7.11.1",
+ "file-loader": "2.0.0",
+ "fork-ts-checker-webpack-plugin-alt": "0.4.14",
+ "fs-extra": "7.0.0",
+ "fsevents": "1.2.4",
+ "html-webpack-plugin": "4.0.0-alpha.2",
+ "identity-obj-proxy": "3.0.0",
+ "jest": "23.6.0",
+ "jest-pnp-resolver": "1.0.1",
+ "jest-resolve": "23.6.0",
+ "mini-css-extract-plugin": "0.4.3",
+ "optimize-css-assets-webpack-plugin": "5.0.1",
+ "pnp-webpack-plugin": "1.1.0",
+ "postcss-flexbugs-fixes": "4.1.0",
+ "postcss-loader": "3.0.0",
+ "postcss-preset-env": "6.3.1",
+ "postcss-safe-parser": "4.0.1",
+ "react-app-polyfill": "0.2.0",
+ "react-dev-utils": "7.0.1",
+ "resolve": "1.8.1",
+ "sass-loader": "7.1.0",
+ "style-loader": "0.23.0",
+ "terser-webpack-plugin": "1.1.0",
+ "url-loader": "1.1.1",
+ "webpack": "4.19.1",
+ "webpack-dev-server": "3.1.14",
+ "webpack-manifest-plugin": "2.0.4",
+ "workbox-webpack-plugin": "3.6.3"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ }
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "micromatch": "3.1.10",
+ "readable-stream": "2.3.6"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "realpath-native": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz",
+ "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==",
+ "requires": {
+ "util.promisify": "1.0.0"
+ }
+ },
+ "recursive-readdir": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
+ "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "requires": {
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
+ }
+ },
+ "redux": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz",
+ "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==",
+ "requires": {
+ "loose-envify": "1.4.0",
+ "symbol-observable": "1.2.0"
+ }
+ },
+ "redux-thunk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz",
+ "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw=="
+ },
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg=="
+ },
+ "regenerate-unicode-properties": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz",
+ "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==",
+ "requires": {
+ "regenerate": "1.4.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
+ },
+ "regenerator-transform": {
+ "version": "0.13.3",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz",
+ "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==",
+ "requires": {
+ "private": "0.1.8"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "requires": {
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw=="
+ },
+ "regexpu-core": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz",
+ "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==",
+ "requires": {
+ "regenerate": "1.4.0",
+ "regenerate-unicode-properties": "7.0.0",
+ "regjsgen": "0.5.0",
+ "regjsparser": "0.6.0",
+ "unicode-match-property-ecmascript": "1.0.4",
+ "unicode-match-property-value-ecmascript": "1.0.2"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
+ "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA=="
+ },
+ "regjsparser": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
+ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
+ "requires": {
+ "jsesc": "0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
+ }
+ }
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk="
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ },
+ "renderkid": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz",
+ "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==",
+ "requires": {
+ "css-select": "1.2.0",
+ "dom-converter": "0.2.0",
+ "htmlparser2": "3.3.0",
+ "strip-ansi": "3.0.1",
+ "utila": "0.4.0"
+ },
+ "dependencies": {
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "requires": {
+ "boolbase": "1.0.0",
+ "css-what": "2.1.2",
+ "domutils": "1.5.1",
+ "nth-check": "1.0.2"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.1"
+ }
+ }
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "requires": {
+ "aws-sign2": "0.7.0",
+ "aws4": "1.8.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.7",
+ "extend": "3.0.2",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.3",
+ "har-validator": "5.1.3",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.21",
+ "oauth-sign": "0.9.0",
+ "performance-now": "2.1.0",
+ "qs": "6.5.2",
+ "safe-buffer": "5.1.2",
+ "tough-cookie": "2.4.3",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.3.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "requires": {
+ "psl": "1.1.31",
+ "punycode": "1.4.1"
+ }
+ }
+ }
+ },
+ "request-promise-core": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
+ "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
+ "requires": {
+ "lodash": "4.17.11"
+ }
+ },
+ "request-promise-native": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz",
+ "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
+ "requires": {
+ "request-promise-core": "1.1.1",
+ "stealthy-require": "1.1.1",
+ "tough-cookie": "2.5.0"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ },
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "requires": {
+ "caller-path": "0.1.0",
+ "resolve-from": "1.0.1"
+ },
+ "dependencies": {
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "requires": {
+ "callsites": "0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo="
+ },
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY="
+ }
+ }
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ },
+ "resolve": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
+ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+ "requires": {
+ "path-parse": "1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "requires": {
+ "resolve-from": "3.0.0"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "global-modules": "1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
+ },
+ "resolve-pathname": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz",
+ "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg=="
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "requires": {
+ "onetime": "2.0.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
+ },
+ "rgb-regex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
+ "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE="
+ },
+ "rgba-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
+ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM="
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "requires": {
+ "glob": "7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "requires": {
+ "hash-base": "3.0.4",
+ "inherits": "2.0.3"
+ }
+ },
+ "rsvp": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
+ "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw=="
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "requires": {
+ "is-promise": "2.1.0"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "requires": {
+ "aproba": "1.2.0"
+ }
+ },
+ "rxjs": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+ "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+ "requires": {
+ "tslib": "1.9.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "requires": {
+ "ret": "0.1.15"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sane": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz",
+ "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=",
+ "requires": {
+ "anymatch": "2.0.0",
+ "capture-exit": "1.2.0",
+ "exec-sh": "0.2.2",
+ "fb-watchman": "2.0.0",
+ "fsevents": "1.2.4",
+ "micromatch": "3.1.10",
+ "minimist": "1.2.0",
+ "walker": "1.0.7",
+ "watch": "0.18.0"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "sass-graph": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
+ "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+ "requires": {
+ "glob": "7.1.3",
+ "lodash": "4.17.11",
+ "scss-tokenizer": "0.2.3",
+ "yargs": "7.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wrap-ansi": "2.1.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "requires": {
+ "lcid": "1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "which-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8="
+ },
+ "yargs": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
+ "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+ "requires": {
+ "camelcase": "3.0.0",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "1.4.0",
+ "read-pkg-up": "1.0.1",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "1.0.2",
+ "which-module": "1.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "5.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
+ "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+ "requires": {
+ "camelcase": "3.0.0"
+ }
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz",
+ "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==",
+ "requires": {
+ "clone-deep": "2.0.2",
+ "loader-utils": "1.2.3",
+ "lodash.tail": "4.1.1",
+ "neo-async": "2.6.0",
+ "pify": "3.0.0",
+ "semver": "5.6.0"
+ },
+ "dependencies": {
+ "clone-deep": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
+ "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
+ "requires": {
+ "for-own": "1.0.0",
+ "is-plain-object": "2.0.4",
+ "kind-of": "6.0.2",
+ "shallow-clone": "1.0.0"
+ }
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ },
+ "shallow-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
+ "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "requires": {
+ "is-extendable": "0.1.1",
+ "kind-of": "5.1.0",
+ "mixin-object": "2.0.1"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ }
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "saxes": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.5.tgz",
+ "integrity": "sha512-2mgiX2VOarcQv8G40WdJ5QJniYdsPr0yGedkd98PqApodsS9DG29qyHl/X65OILm7Bapd1/zUUvTHVZwNLhXvQ==",
+ "requires": {
+ "xmlchars": "1.3.1"
+ }
+ },
+ "scheduler": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.12.0.tgz",
+ "integrity": "sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw==",
+ "requires": {
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "requires": {
+ "ajv": "6.6.2",
+ "ajv-errors": "1.0.1",
+ "ajv-keywords": "3.2.0"
+ }
+ },
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "requires": {
+ "js-base64": "2.5.0",
+ "source-map": "0.4.4"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
+ "seamless-immutable": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/seamless-immutable/-/seamless-immutable-7.1.4.tgz",
+ "integrity": "sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A=="
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo="
+ },
+ "selfsigned": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
+ "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
+ "requires": {
+ "node-forge": "0.7.5"
+ }
+ },
+ "semver": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "1.6.3",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.4.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "serialize-javascript": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz",
+ "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw=="
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "requires": {
+ "accepts": "1.3.5",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "1.0.3",
+ "http-errors": "1.6.3",
+ "mime-types": "2.1.21",
+ "parseurl": "1.3.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+ "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "requires": {
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "parseurl": "1.3.2",
+ "send": "0.16.2"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "split-string": "3.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "shallow-clone": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz",
+ "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=",
+ "requires": {
+ "is-extendable": "0.1.1",
+ "kind-of": "2.0.1",
+ "lazy-cache": "0.2.7",
+ "mixin-object": "2.0.1"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz",
+ "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ },
+ "lazy-cache": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz",
+ "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U="
+ }
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "requires": {
+ "array-filter": "0.0.1",
+ "array-map": "0.0.0",
+ "array-reduce": "0.0.0",
+ "jsonify": "0.0.0"
+ }
+ },
+ "shellwords": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "requires": {
+ "is-arrayish": "0.3.2"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ }
+ }
+ },
+ "sisteransi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz",
+ "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g=="
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0"
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "requires": {
+ "base": "0.11.2",
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "map-cache": "0.2.2",
+ "source-map": "0.5.7",
+ "source-map-resolve": "0.5.2",
+ "use": "3.1.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "requires": {
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "snapdragon-util": "3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "sockjs": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+ "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+ "requires": {
+ "faye-websocket": "0.10.0",
+ "uuid": "3.3.2"
+ },
+ "dependencies": {
+ "faye-websocket": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+ "requires": {
+ "websocket-driver": "0.7.0"
+ }
+ }
+ }
+ },
+ "sockjs-client": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz",
+ "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=",
+ "requires": {
+ "debug": "2.6.9",
+ "eventsource": "0.1.6",
+ "faye-websocket": "0.11.1",
+ "inherits": "2.0.3",
+ "json3": "3.3.2",
+ "url-parse": "1.4.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "requires": {
+ "atob": "2.1.2",
+ "decode-uri-component": "0.2.0",
+ "resolve-url": "0.2.1",
+ "source-map-url": "0.4.0",
+ "urix": "0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "requires": {
+ "source-map": "0.5.7"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "requires": {
+ "spdx-expression-parse": "3.0.0",
+ "spdx-license-ids": "3.0.3"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "requires": {
+ "spdx-exceptions": "2.2.0",
+ "spdx-license-ids": "3.0.3"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
+ "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g=="
+ },
+ "spdy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz",
+ "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==",
+ "requires": {
+ "debug": "4.1.1",
+ "handle-thing": "2.0.0",
+ "http-deceiver": "1.2.7",
+ "select-hose": "2.0.0",
+ "spdy-transport": "3.0.0"
+ }
+ },
+ "spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "requires": {
+ "debug": "4.1.1",
+ "detect-node": "2.0.4",
+ "hpack.js": "2.1.6",
+ "obuf": "1.1.2",
+ "readable-stream": "3.1.1",
+ "wbuf": "1.7.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz",
+ "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==",
+ "requires": {
+ "inherits": "2.0.3",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "requires": {
+ "extend-shallow": "3.0.2"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "sshpk": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz",
+ "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==",
+ "requires": {
+ "asn1": "0.2.4",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.2",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.2",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2",
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "requires": {
+ "figgy-pudding": "3.5.1"
+ }
+ },
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
+ },
+ "stack-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
+ "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA=="
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "requires": {
+ "define-property": "0.2.5",
+ "object-copy": "0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+ },
+ "stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+ "requires": {
+ "readable-stream": "2.3.6"
+ }
+ },
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "stream-shift": "1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "requires": {
+ "builtin-status-codes": "3.0.0",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "to-arraybuffer": "1.0.1",
+ "xtend": "4.0.1"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
+ },
+ "strict-uri-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
+ "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY="
+ },
+ "string-length": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
+ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
+ "requires": {
+ "astral-regex": "1.0.0",
+ "strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "requires": {
+ "get-own-enumerable-property-symbols": "3.0.0",
+ "is-obj": "1.0.1",
+ "is-regexp": "1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "strip-comments": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz",
+ "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==",
+ "requires": {
+ "babel-extract-comments": "1.0.0",
+ "babel-plugin-transform-object-rest-spread": "6.26.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "requires": {
+ "get-stdin": "4.0.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+ },
+ "style-loader": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.0.tgz",
+ "integrity": "sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ==",
+ "requires": {
+ "loader-utils": "1.2.3",
+ "schema-utils": "0.4.7"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "requires": {
+ "ajv": "6.6.2",
+ "ajv-keywords": "3.2.0"
+ }
+ }
+ }
+ },
+ "stylehacks": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz",
+ "integrity": "sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==",
+ "requires": {
+ "browserslist": "4.3.7",
+ "postcss": "7.0.8",
+ "postcss-selector-parser": "3.1.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz",
+ "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==",
+ "requires": {
+ "chalk": "2.4.2",
+ "source-map": "0.6.1",
+ "supports-color": "6.0.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+ "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+ "requires": {
+ "dot-prop": "4.2.0",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ },
+ "svgo": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz",
+ "integrity": "sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==",
+ "requires": {
+ "coa": "2.0.2",
+ "colors": "1.1.2",
+ "css-select": "2.0.2",
+ "css-select-base-adapter": "0.1.1",
+ "css-tree": "1.0.0-alpha.28",
+ "css-url-regex": "1.1.0",
+ "csso": "3.5.1",
+ "js-yaml": "3.12.1",
+ "mkdirp": "0.5.1",
+ "object.values": "1.1.0",
+ "sax": "1.2.4",
+ "stable": "0.1.8",
+ "unquote": "1.1.1",
+ "util.promisify": "1.0.0"
+ }
+ },
+ "symbol-observable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
+ },
+ "symbol-tree": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
+ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY="
+ },
+ "table": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz",
+ "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==",
+ "requires": {
+ "ajv": "6.6.2",
+ "ajv-keywords": "3.2.0",
+ "chalk": "2.4.1",
+ "lodash": "4.17.11",
+ "slice-ansi": "1.0.0",
+ "string-width": "2.1.1"
+ }
+ },
+ "tapable": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
+ "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA=="
+ },
+ "tar": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.11",
+ "inherits": "2.0.3"
+ }
+ },
+ "terser": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz",
+ "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==",
+ "requires": {
+ "commander": "2.17.1",
+ "source-map": "0.6.1",
+ "source-map-support": "0.5.9"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-support": {
+ "version": "0.5.9",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
+ "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+ "requires": {
+ "buffer-from": "1.1.1",
+ "source-map": "0.6.1"
+ }
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz",
+ "integrity": "sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==",
+ "requires": {
+ "cacache": "11.3.2",
+ "find-cache-dir": "2.0.0",
+ "schema-utils": "1.0.0",
+ "serialize-javascript": "1.6.1",
+ "source-map": "0.6.1",
+ "terser": "3.14.1",
+ "webpack-sources": "1.3.0",
+ "worker-farm": "1.6.0"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz",
+ "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==",
+ "requires": {
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "requires": {
+ "find-up": "3.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "test-exclude": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz",
+ "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==",
+ "requires": {
+ "arrify": "1.0.1",
+ "micromatch": "2.3.11",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "require-main-filename": "1.0.1"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
+ },
+ "throat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
+ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo="
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "requires": {
+ "readable-stream": "2.3.6",
+ "xtend": "4.0.1"
+ }
+ },
+ "thunky": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz",
+ "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow=="
+ },
+ "timers-browserify": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
+ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+ "requires": {
+ "setimmediate": "1.0.5"
+ }
+ },
+ "timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
+ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "requires": {
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "tmpl": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
+ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "requires": {
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "regex-not": "1.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "requires": {
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ }
+ }
+ },
+ "topo": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz",
+ "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
+ "requires": {
+ "hoek": "4.2.1"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "requires": {
+ "psl": "1.1.31",
+ "punycode": "2.1.1"
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "requires": {
+ "punycode": "2.1.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
+ },
+ "true-case-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+ "requires": {
+ "glob": "7.1.3"
+ }
+ },
+ "tryer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
+ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
+ },
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "requires": {
+ "prelude-ls": "1.1.2"
+ }
+ },
+ "type-is": {
+ "version": "1.6.16",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "2.1.21"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ },
+ "typesafe-actions": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/typesafe-actions/-/typesafe-actions-3.0.0.tgz",
+ "integrity": "sha512-NLpRc/FY+jPfWL0aUXQzjxPyF0Xug2om6akaoRLQ18KGwP2yYNBJu9vkv2q1q+Cx/+edy2Qf6O8xXnYY/xwz1A=="
+ },
+ "typescript": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz",
+ "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg=="
+ },
+ "u2f-api": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/u2f-api/-/u2f-api-1.0.10.tgz",
+ "integrity": "sha512-0Zh+IqM2l6xaA/IUJDT9WwoEM6nwPx6ive4flVVYEfzzgXIrKFRaenieItsEkbXIgOZEw13nO3o3oLtSDOyesA=="
+ },
+ "uglify-js": {
+ "version": "3.4.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+ "requires": {
+ "commander": "2.17.1",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "uglifyjs-webpack-plugin": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz",
+ "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==",
+ "requires": {
+ "cacache": "10.0.4",
+ "find-cache-dir": "1.0.0",
+ "schema-utils": "0.4.7",
+ "serialize-javascript": "1.6.1",
+ "source-map": "0.6.1",
+ "uglify-es": "3.3.9",
+ "webpack-sources": "1.3.0",
+ "worker-farm": "1.6.0"
+ },
+ "dependencies": {
+ "cacache": {
+ "version": "10.0.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
+ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
+ "requires": {
+ "bluebird": "3.5.3",
+ "chownr": "1.1.1",
+ "glob": "7.1.3",
+ "graceful-fs": "4.1.15",
+ "lru-cache": "4.1.5",
+ "mississippi": "2.0.0",
+ "mkdirp": "0.5.1",
+ "move-concurrently": "1.0.1",
+ "promise-inflight": "1.0.1",
+ "rimraf": "2.6.3",
+ "ssri": "5.3.0",
+ "unique-filename": "1.1.1",
+ "y18n": "4.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA=="
+ },
+ "mississippi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
+ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
+ "requires": {
+ "concat-stream": "1.6.2",
+ "duplexify": "3.6.1",
+ "end-of-stream": "1.4.1",
+ "flush-write-stream": "1.0.3",
+ "from2": "2.3.0",
+ "parallel-transform": "1.1.0",
+ "pump": "2.0.1",
+ "pumpify": "1.5.1",
+ "stream-each": "1.2.3",
+ "through2": "2.0.5"
+ }
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
+ }
+ },
+ "schema-utils": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "requires": {
+ "ajv": "6.6.2",
+ "ajv-keywords": "3.2.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "ssri": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz",
+ "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "uglify-es": {
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+ "requires": {
+ "commander": "2.13.0",
+ "source-map": "0.6.1"
+ }
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ }
+ }
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ=="
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "1.0.4",
+ "unicode-property-aliases-ecmascript": "1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz",
+ "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ=="
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg=="
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "requires": {
+ "arr-union": "3.1.0",
+ "get-value": "2.0.6",
+ "is-extendable": "0.1.1",
+ "set-value": "0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "to-object-path": "0.3.0"
+ }
+ }
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI="
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "requires": {
+ "unique-slug": "2.0.1"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
+ "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
+ "requires": {
+ "imurmurhash": "0.1.4"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ="
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "requires": {
+ "has-value": "0.3.1",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "requires": {
+ "get-value": "2.0.6",
+ "has-values": "0.1.4",
+ "isobject": "2.1.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ }
+ }
+ },
+ "upath": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
+ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw=="
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg="
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "requires": {
+ "punycode": "2.1.1"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+ }
+ }
+ },
+ "url-loader": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.1.tgz",
+ "integrity": "sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg==",
+ "requires": {
+ "loader-utils": "1.2.3",
+ "mime": "2.4.0",
+ "schema-utils": "1.0.0"
+ }
+ },
+ "url-parse": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz",
+ "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==",
+ "requires": {
+ "querystringify": "2.1.0",
+ "requires-port": "1.0.0"
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
+ },
+ "util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "requires": {
+ "define-properties": "1.1.3",
+ "object.getownpropertydescriptors": "2.0.3"
+ }
+ },
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw="
+ },
+ "utility-types": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.4.1.tgz",
+ "integrity": "sha512-GyH068kJf7c4vhfqj4aCM5X+TeV8jG2iPFLimpGpnQ7dvKfogZOHfiYxMww/nGEfMm/bEmnVbeZGO1see1OVKg=="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "requires": {
+ "spdx-correct": "3.1.0",
+ "spdx-expression-parse": "3.0.0"
+ }
+ },
+ "value-equal": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz",
+ "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw=="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "vendors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz",
+ "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ=="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "1.3.0"
+ }
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "w3c-hr-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
+ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
+ "requires": {
+ "browser-process-hrtime": "0.1.3"
+ }
+ },
+ "w3c-xmlserializer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz",
+ "integrity": "sha512-XZGI1OH/OLQr/NaJhhPmzhngwcAnZDLytsvXnRmlYeRkmbb0I7sqFFA22erq4WQR0sUu17ZSQOAV9mFwCqKRNg==",
+ "requires": {
+ "domexception": "1.0.1",
+ "webidl-conversions": "4.0.2",
+ "xml-name-validator": "3.0.0"
+ }
+ },
+ "walker": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "requires": {
+ "makeerror": "1.0.11"
+ }
+ },
+ "warning": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz",
+ "integrity": "sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug==",
+ "requires": {
+ "loose-envify": "1.4.0"
+ }
+ },
+ "watch": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz",
+ "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=",
+ "requires": {
+ "exec-sh": "0.2.2",
+ "minimist": "1.2.0"
+ }
+ },
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "requires": {
+ "chokidar": "2.0.4",
+ "graceful-fs": "4.1.15",
+ "neo-async": "2.6.0"
+ }
+ },
+ "wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "requires": {
+ "minimalistic-assert": "1.0.1"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
+ },
+ "webpack": {
+ "version": "4.19.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.19.1.tgz",
+ "integrity": "sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g==",
+ "requires": {
+ "@webassemblyjs/ast": "1.7.6",
+ "@webassemblyjs/helper-module-context": "1.7.6",
+ "@webassemblyjs/wasm-edit": "1.7.6",
+ "@webassemblyjs/wasm-parser": "1.7.6",
+ "acorn": "5.7.3",
+ "acorn-dynamic-import": "3.0.0",
+ "ajv": "6.6.2",
+ "ajv-keywords": "3.2.0",
+ "chrome-trace-event": "1.0.0",
+ "enhanced-resolve": "4.1.0",
+ "eslint-scope": "4.0.0",
+ "json-parse-better-errors": "1.0.2",
+ "loader-runner": "2.3.1",
+ "loader-utils": "1.2.3",
+ "memory-fs": "0.4.1",
+ "micromatch": "3.1.10",
+ "mkdirp": "0.5.1",
+ "neo-async": "2.6.0",
+ "node-libs-browser": "2.1.0",
+ "schema-utils": "0.4.7",
+ "tapable": "1.1.1",
+ "uglifyjs-webpack-plugin": "1.3.0",
+ "watchpack": "1.6.0",
+ "webpack-sources": "1.3.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "eslint-scope": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
+ "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+ "requires": {
+ "esrecurse": "4.2.1",
+ "estraverse": "4.2.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "schema-utils": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "requires": {
+ "ajv": "6.6.2",
+ "ajv-keywords": "3.2.0"
+ }
+ }
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz",
+ "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==",
+ "requires": {
+ "memory-fs": "0.4.1",
+ "mime": "2.4.0",
+ "range-parser": "1.2.0",
+ "webpack-log": "2.0.0"
+ }
+ },
+ "webpack-dev-server": {
+ "version": "3.1.14",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz",
+ "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==",
+ "requires": {
+ "ansi-html": "0.0.7",
+ "bonjour": "3.5.0",
+ "chokidar": "2.0.4",
+ "compression": "1.7.3",
+ "connect-history-api-fallback": "1.6.0",
+ "debug": "3.2.6",
+ "del": "3.0.0",
+ "express": "4.16.4",
+ "html-entities": "1.2.1",
+ "http-proxy-middleware": "0.18.0",
+ "import-local": "2.0.0",
+ "internal-ip": "3.0.1",
+ "ip": "1.1.5",
+ "killable": "1.0.1",
+ "loglevel": "1.6.1",
+ "opn": "5.4.0",
+ "portfinder": "1.0.20",
+ "schema-utils": "1.0.0",
+ "selfsigned": "1.10.4",
+ "semver": "5.6.0",
+ "serve-index": "1.9.1",
+ "sockjs": "0.3.19",
+ "sockjs-client": "1.3.0",
+ "spdy": "4.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "5.5.0",
+ "url": "0.11.0",
+ "webpack-dev-middleware": "3.4.0",
+ "webpack-log": "2.0.0",
+ "yargs": "12.0.2"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "2.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
+ "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+ "requires": {
+ "xregexp": "4.0.0"
+ }
+ },
+ "eventsource": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
+ "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
+ "requires": {
+ "original": "1.0.2"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "requires": {
+ "cross-spawn": "6.0.5",
+ "get-stream": "4.1.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "requires": {
+ "pump": "3.0.0"
+ }
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "requires": {
+ "pkg-dir": "3.0.0",
+ "resolve-cwd": "2.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "requires": {
+ "invert-kv": "2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
+ "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+ "requires": {
+ "map-age-cleaner": "0.1.3",
+ "mimic-fn": "1.2.0",
+ "p-is-promise": "1.1.0"
+ }
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "requires": {
+ "execa": "1.0.0",
+ "lcid": "2.0.0",
+ "mem": "4.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ=="
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "requires": {
+ "find-up": "3.0.0"
+ }
+ },
+ "sockjs-client": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz",
+ "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==",
+ "requires": {
+ "debug": "3.2.6",
+ "eventsource": "1.0.7",
+ "faye-websocket": "0.11.1",
+ "inherits": "2.0.3",
+ "json3": "3.3.2",
+ "url-parse": "1.4.4"
+ }
+ },
+ "yargs": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
+ "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
+ "requires": {
+ "cliui": "4.1.0",
+ "decamelize": "2.0.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "3.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "10.1.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "requires": {
+ "camelcase": "4.1.0"
+ }
+ }
+ }
+ },
+ "webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "requires": {
+ "ansi-colors": "3.2.3",
+ "uuid": "3.3.2"
+ }
+ },
+ "webpack-manifest-plugin": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz",
+ "integrity": "sha512-nejhOHexXDBKQOj/5v5IZSfCeTO3x1Dt1RZEcGfBSul891X/eLIcIVH31gwxPDdsi2Z8LKKFGpM4w9+oTBOSCg==",
+ "requires": {
+ "fs-extra": "7.0.0",
+ "lodash": "4.17.11",
+ "tapable": "1.1.1"
+ }
+ },
+ "webpack-sources": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
+ "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
+ "requires": {
+ "source-list-map": "2.0.1",
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
+ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+ "requires": {
+ "http-parser-js": "0.5.0",
+ "websocket-extensions": "0.1.3"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
+ },
+ "whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "requires": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "whatwg-fetch": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
+ "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
+ },
+ "whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
+ },
+ "whatwg-url": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
+ "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
+ "requires": {
+ "lodash.sortby": "4.7.0",
+ "tr46": "1.0.1",
+ "webidl-conversions": "4.0.2"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+ },
+ "workbox-background-sync": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz",
+ "integrity": "sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-broadcast-cache-update": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz",
+ "integrity": "sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-build": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-3.6.3.tgz",
+ "integrity": "sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g==",
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "common-tags": "1.8.0",
+ "fs-extra": "4.0.3",
+ "glob": "7.1.3",
+ "joi": "11.4.0",
+ "lodash.template": "4.4.0",
+ "pretty-bytes": "4.0.2",
+ "stringify-object": "3.3.0",
+ "strip-comments": "1.0.2",
+ "workbox-background-sync": "3.6.3",
+ "workbox-broadcast-cache-update": "3.6.3",
+ "workbox-cache-expiration": "3.6.3",
+ "workbox-cacheable-response": "3.6.3",
+ "workbox-core": "3.6.3",
+ "workbox-google-analytics": "3.6.3",
+ "workbox-navigation-preload": "3.6.3",
+ "workbox-precaching": "3.6.3",
+ "workbox-range-requests": "3.6.3",
+ "workbox-routing": "3.6.3",
+ "workbox-strategies": "3.6.3",
+ "workbox-streams": "3.6.3",
+ "workbox-sw": "3.6.3"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.2"
+ }
+ }
+ }
+ },
+ "workbox-cache-expiration": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz",
+ "integrity": "sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-cacheable-response": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz",
+ "integrity": "sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-core": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.6.3.tgz",
+ "integrity": "sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ=="
+ },
+ "workbox-google-analytics": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz",
+ "integrity": "sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig==",
+ "requires": {
+ "workbox-background-sync": "3.6.3",
+ "workbox-core": "3.6.3",
+ "workbox-routing": "3.6.3",
+ "workbox-strategies": "3.6.3"
+ }
+ },
+ "workbox-navigation-preload": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz",
+ "integrity": "sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-precaching": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-3.6.3.tgz",
+ "integrity": "sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-range-requests": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz",
+ "integrity": "sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-routing": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-3.6.3.tgz",
+ "integrity": "sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-strategies": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-3.6.3.tgz",
+ "integrity": "sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-streams": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-3.6.3.tgz",
+ "integrity": "sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w==",
+ "requires": {
+ "workbox-core": "3.6.3"
+ }
+ },
+ "workbox-sw": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-3.6.3.tgz",
+ "integrity": "sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg=="
+ },
+ "workbox-webpack-plugin": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-3.6.3.tgz",
+ "integrity": "sha512-RwmKjc7HFHUFHoOlKoZUq9349u0QN3F8W5tZZU0vc1qsBZDINWXRiIBCAKvo/Njgay5sWz7z4I2adnyTo97qIQ==",
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "json-stable-stringify": "1.0.1",
+ "workbox-build": "3.6.3"
+ }
+ },
+ "worker-farm": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
+ "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
+ "requires": {
+ "errno": "0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "requires": {
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "requires": {
+ "mkdirp": "0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
+ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "requires": {
+ "graceful-fs": "4.1.15",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "ws": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz",
+ "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==",
+ "requires": {
+ "async-limiter": "1.0.0"
+ }
+ },
+ "xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
+ },
+ "xmlchars": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz",
+ "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw=="
+ },
+ "xregexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
+ "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg=="
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ },
+ "yargs": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
+ "requires": {
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "2.1.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "2.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "9.0.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+ "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+ "requires": {
+ "camelcase": "4.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
+ }
+ }
+ }
+ }
+}
diff --git a/client/package.json b/client/package.json
new file mode 100644
index 000000000..33afc7a92
--- /dev/null
+++ b/client/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "authelia-portal",
+ "version": "0.1.0",
+ "private": true,
+ "dependencies": {
+ "@material/react-button": "^0.8.0",
+ "@material/react-checkbox": "^0.8.0",
+ "@material/react-text-field": "^0.8.0",
+ "@types/classnames": "^2.2.7",
+ "@types/jss": "^9.5.7",
+ "@types/node": "^10.12.2",
+ "@types/node-sass": "^3.10.32",
+ "@types/qrcode.react": "^0.8.1",
+ "@types/query-string": "^6.2.0",
+ "@types/react": "^16.4.18",
+ "@types/react-dom": "^16.0.9",
+ "@types/react-redux": "^6.0.12",
+ "@types/react-router-dom": "^4.3.1",
+ "@types/redux-thunk": "^2.1.0",
+ "await-to-js": "^2.1.1",
+ "classnames": "^2.2.6",
+ "connected-react-router": "^6.2.1",
+ "node-sass": "^4.11.0",
+ "qrcode.react": "^0.9.2",
+ "query-string": "^6.2.0",
+ "react": "^16.6.0",
+ "react-dom": "^16.6.0",
+ "react-redux": "^6.0.0",
+ "react-router-dom": "^4.3.1",
+ "react-scripts": "^2.1.3",
+ "redux-thunk": "^2.3.0",
+ "typesafe-actions": "^3.0.0",
+ "typescript": "^3.1.6",
+ "u2f-api": "^1.0.10",
+ "utility-types": "^3.4.1"
+ },
+ "scripts": {
+ "start": "SASS_PATH=./node_modules react-scripts start",
+ "build": "INLINE_RUNTIME_CHUNK=false SASS_PATH=./node_modules react-scripts build",
+ "test": "react-scripts test",
+ "eject": "react-scripts eject"
+ },
+ "eslintConfig": {
+ "extends": "react-app"
+ },
+ "browserslist": [
+ ">0.2%",
+ "not dead",
+ "not ie <= 11",
+ "not op_mini all"
+ ]
+}
diff --git a/client/public/favicon.ico b/client/public/favicon.ico
new file mode 100644
index 000000000..83f645c6f
Binary files /dev/null and b/client/public/favicon.ico differ
diff --git a/client/public/index.html b/client/public/index.html
new file mode 100644
index 000000000..064a74229
--- /dev/null
+++ b/client/public/index.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Authelia - Portal
+
+
+
+ You need to enable JavaScript to run this app.
+
+
+
+
+
diff --git a/client/public/manifest.json b/client/public/manifest.json
new file mode 100644
index 000000000..f0ff81c47
--- /dev/null
+++ b/client/public/manifest.json
@@ -0,0 +1,13 @@
+{
+ "short_name": "Authelia",
+ "name": "Authelia - Portal",
+ "icons": [
+ {
+ "src": "favicon.ico",
+ "sizes": "64x64 32x32 24x24 16x16",
+ "type": "image/x-icon"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone"
+}
diff --git a/client/src/App.scss b/client/src/App.scss
new file mode 100644
index 000000000..d305c5e43
--- /dev/null
+++ b/client/src/App.scss
@@ -0,0 +1,3 @@
+@import "@material/react-button/index.scss";
+@import "@material/react-checkbox/index.scss";
+@import "@material/react-text-field/index.scss";
\ No newline at end of file
diff --git a/client/src/App.test.tsx b/client/src/App.test.tsx
new file mode 100644
index 000000000..a754b201b
--- /dev/null
+++ b/client/src/App.test.tsx
@@ -0,0 +1,9 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import App from './App';
+
+it('renders without crashing', () => {
+ const div = document.createElement('div');
+ ReactDOM.render( , div);
+ ReactDOM.unmountComponentAtNode(div);
+});
diff --git a/client/src/App.tsx b/client/src/App.tsx
new file mode 100644
index 000000000..f35684a48
--- /dev/null
+++ b/client/src/App.tsx
@@ -0,0 +1,42 @@
+import React, { Component } from 'react';
+import './App.scss';
+
+import { Route, Switch } from "react-router-dom";
+import { routes } from './routes/index';
+import { createBrowserHistory } from 'history';
+import { createStore, applyMiddleware, compose } from 'redux';
+import reducer from './reducers';
+import { Provider } from 'react-redux';
+import thunk from 'redux-thunk';
+import { routerMiddleware, ConnectedRouter } from 'connected-react-router';
+
+const history = createBrowserHistory();
+const store = createStore(
+ reducer(history),
+ compose(
+ applyMiddleware(
+ routerMiddleware(history),
+ thunk
+ )
+ )
+);
+
+class App extends Component {
+ render() {
+ return (
+
+
+
+
+ {routes.map((r, key) => {
+ return
+ })}
+
+
+
+
+ );
+ }
+}
+
+export default App;
diff --git a/client/src/img/stores/applestore-badge.svg b/client/src/assets/images/applestore-badge.svg
similarity index 100%
rename from client/src/img/stores/applestore-badge.svg
rename to client/src/assets/images/applestore-badge.svg
diff --git a/client/src/assets/images/error.svg b/client/src/assets/images/error.svg
new file mode 100644
index 000000000..b0e544af1
--- /dev/null
+++ b/client/src/assets/images/error.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/img/stores/googleplay-badge.svg b/client/src/assets/images/googleplay-badge.svg
similarity index 100%
rename from client/src/img/stores/googleplay-badge.svg
rename to client/src/assets/images/googleplay-badge.svg
diff --git a/client/src/img/mail.png b/client/src/assets/images/mail.png
similarity index 100%
rename from client/src/img/mail.png
rename to client/src/assets/images/mail.png
diff --git a/client/src/assets/images/security-key-hand.png b/client/src/assets/images/security-key-hand.png
new file mode 100644
index 000000000..ab9a28424
Binary files /dev/null and b/client/src/assets/images/security-key-hand.png differ
diff --git a/client/src/assets/images/security-key-large.png b/client/src/assets/images/security-key-large.png
new file mode 100644
index 000000000..c612b17cf
Binary files /dev/null and b/client/src/assets/images/security-key-large.png differ
diff --git a/client/src/assets/images/security-key.png b/client/src/assets/images/security-key.png
new file mode 100644
index 000000000..116e644f5
Binary files /dev/null and b/client/src/assets/images/security-key.png differ
diff --git a/client/src/assets/images/user.svg b/client/src/assets/images/user.svg
new file mode 100644
index 000000000..db78e7d94
--- /dev/null
+++ b/client/src/assets/images/user.svg
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/assets/scss/_variables.scss b/client/src/assets/scss/_variables.scss
new file mode 100644
index 000000000..03c844ad0
--- /dev/null
+++ b/client/src/assets/scss/_variables.scss
@@ -0,0 +1,2 @@
+
+$theme-spacing: 10px;
\ No newline at end of file
diff --git a/client/src/assets/scss/components/AlreadyAuthenticated/AlreadyAuthenticated.module.scss b/client/src/assets/scss/components/AlreadyAuthenticated/AlreadyAuthenticated.module.scss
new file mode 100644
index 000000000..ae31adfa7
--- /dev/null
+++ b/client/src/assets/scss/components/AlreadyAuthenticated/AlreadyAuthenticated.module.scss
@@ -0,0 +1,24 @@
+@import '../../variables.scss';
+
+.container {
+ text-align: center;
+}
+
+.messageContainer {
+ color: green;
+
+ .username {
+ display: block;
+ font-size: 1.6em;
+ font-weight: bold;
+ }
+}
+
+.statusIcon {
+ margin-top: ($theme-spacing) * 2;
+ margin-bottom: ($theme-spacing) * 2;
+}
+
+.logoutButtonContainer {
+ margin-top: ($theme-spacing) * 2,
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/components/CircleLoader/CircleLoader.module.scss b/client/src/assets/scss/components/CircleLoader/CircleLoader.module.scss
new file mode 100644
index 000000000..9763156bf
--- /dev/null
+++ b/client/src/assets/scss/components/CircleLoader/CircleLoader.module.scss
@@ -0,0 +1,148 @@
+$brand-success: #5cb85c;
+$brand-failure: #d44141;
+$loader-size: 4em;
+$check-height: $loader-size/2;
+$check-width: $check-height/2;
+$check-left: ($loader-size/6 + $loader-size/25);
+$check-thickness: 3px;
+$check-color: $brand-success;
+
+$cross-height: $loader-size/2;
+$cross-width: $check-height/10 - $check-height/12;
+$cross-left: $loader-size/2;
+$cross-top: $loader-size/4;
+
+.circleLoader {
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-left-color: $check-color;
+ animation: loader-spin 1.2s infinite linear;
+ position: relative;
+ display: inline-block;
+ vertical-align: top;
+ border-radius: 50%;
+ width: $loader-size;
+ height: $loader-size;
+}
+
+.loadComplete {
+ -webkit-animation: none;
+ animation: none;
+ transition: border 500ms ease-out;
+ &.success {
+ border-color: $brand-success;
+ }
+ &.failure {
+ border-color: $brand-failure;
+ }
+}
+
+.checkmark {
+ display: none;
+
+ &.show {
+ display: inline;
+ }
+
+ &.draw:after {
+ animation-duration: 800ms;
+ animation-timing-function: ease;
+ animation-name: checkmark;
+ transform: scaleX(-1) rotate(135deg);
+ }
+
+ &:after {
+ opacity: 1;
+ height: $check-height;
+ width: $check-width;
+ transform-origin: left top;
+ border-right: $check-thickness solid $check-color;
+ border-top: $check-thickness solid $check-color;
+ content: '';
+ left: $check-left;
+ top: $check-height;
+ position: absolute;
+ }
+}
+
+.cross {
+ display: none;
+
+ &.show {
+ display: inline;
+ }
+
+ &.draw:after, &.draw:before {
+ animation-duration: 300ms;
+ animation-timing-function: ease;
+ animation-name: cross;
+ }
+
+ &:before, &:after {
+ position: absolute;
+ left: $cross-left;
+ top: $cross-top;
+ content: '';
+ height: $cross-height;
+ width: $cross-width;
+ background-color: $brand-failure;
+ }
+
+ &:before {
+ transform: rotate(45deg);
+ }
+
+ &:after {
+ transform: rotate(-45deg);
+ }
+}
+
+@keyframes loader-spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes checkmark {
+ 0% {
+ height: 0;
+ width: 0;
+ opacity: 1;
+ }
+ 20% {
+ height: 0;
+ width: $check-width;
+ opacity: 1;
+ }
+ 40% {
+ height: $check-height;
+ width: $check-width;
+ opacity: 1;
+ }
+ 100% {
+ height: $check-height;
+ width: $check-width;
+ opacity: 1;
+ }
+}
+
+@keyframes cross {
+ 0% {
+ width: 0;
+ height: 0;
+ }
+ 20% {
+ height: 0;
+ width: $cross-width;
+ }
+ 40% {
+ height: $cross-height;
+ width: $cross-width;
+ }
+ 100% {
+ width: $cross-width;
+ height: $cross-height;
+ }
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/components/FirstFactorForm/FirstFactorForm.module.scss b/client/src/assets/scss/components/FirstFactorForm/FirstFactorForm.module.scss
new file mode 100644
index 000000000..58fb58b0b
--- /dev/null
+++ b/client/src/assets/scss/components/FirstFactorForm/FirstFactorForm.module.scss
@@ -0,0 +1,43 @@
+@import '../../variables.scss';
+
+.notification {
+ margin-bottom: ($theme-spacing) * 2;
+}
+
+.field {
+ padding-bottom: ($theme-spacing) * 2;
+}
+
+.input {
+ width: 100%;
+}
+
+.buttons button{
+ width: 100%;
+}
+
+.controls {
+ display: inline-block;
+ width: 100%;
+ font-size: 0.875rem;
+}
+
+.rememberMe {
+ float: left;
+ font-size: 0.8em;
+ display: flex;
+ align-items: center;
+ margin-left: -11px;
+}
+
+.resetPassword {
+ height: 40px;
+ float: right;
+ display: flex;
+ align-items: center;
+}
+
+.resetPassword a {
+ color: black;
+ font-size: 0.8em;
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/components/Notification/Notification.module.scss b/client/src/assets/scss/components/Notification/Notification.module.scss
new file mode 100644
index 000000000..018237c95
--- /dev/null
+++ b/client/src/assets/scss/components/Notification/Notification.module.scss
@@ -0,0 +1,10 @@
+@import '../../variables.scss';
+
+.container {
+ color: white;
+ font-size: 0.8em;
+ padding: ($theme-spacing) * 2;
+ border: 1px solid red;
+ border-radius: 5px;
+ background-color: #ff8d8d;
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/components/SecondFactorForm/SecondFactorForm.module.scss b/client/src/assets/scss/components/SecondFactorForm/SecondFactorForm.module.scss
new file mode 100644
index 000000000..631cecddd
--- /dev/null
+++ b/client/src/assets/scss/components/SecondFactorForm/SecondFactorForm.module.scss
@@ -0,0 +1,75 @@
+@import '../../variables.scss';
+
+.container {
+ position: relative,
+}
+
+.header {
+ font-size: 1.5em;
+ margin-bottom: ($theme-spacing);
+ position: relative;
+
+ .hello {
+ display: inline-block;
+ }
+
+ .logout {
+ position: absolute;
+ bottom: 0px;
+ right: 0px;
+ font-size: 0.6em,
+ }
+}
+
+.body {
+ padding-top: ($theme-spacing) * 2;
+ padding-bottom: ($theme-spacing) * 2;
+ padding-left: ($theme-spacing) * 2;
+ padding-right: ($theme-spacing) * 2;
+ border: 1px solid #e0e0e0;
+ border-radius: 2px;
+}
+
+.methodName {
+ font-size: 1.2em;
+ font-weight: bold;
+ margin-bottom: ($theme-spacing);
+}
+
+.methodU2f {
+ border-bottom: 1px solid #e0e0e0;
+ padding: ($theme-spacing);
+}
+
+.methodTotp {
+ padding: ($theme-spacing);
+ padding-top: ($theme-spacing) * 2;
+}
+
+.image {
+ width: '120px';
+}
+
+.imageContainer {
+ text-align: center;
+ margin-top: ($theme-spacing) * 2;
+ margin-bottom: ($theme-spacing) * 2;
+}
+
+.registerDeviceContainer {
+ text-align: right;
+ font-size: 0.7em;
+}
+
+.totpField {
+ margin-top: ($theme-spacing) * 2;
+ width: 100%;
+}
+
+.totpButton {
+ margin-top: ($theme-spacing);
+
+ button {
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/layouts/PortalLayout/PortalLayout.module.scss b/client/src/assets/scss/layouts/PortalLayout/PortalLayout.module.scss
new file mode 100644
index 000000000..0d0d3069d
--- /dev/null
+++ b/client/src/assets/scss/layouts/PortalLayout/PortalLayout.module.scss
@@ -0,0 +1,40 @@
+@import '../../variables.scss';
+@import "@material/theme/mdc-theme";
+
+.mainContent {
+ width: 440px;
+ margin: auto;
+ margin-top: 80px;
+}
+
+.title {
+ font-size: 1.4em;
+ font-weight: bold;
+ display: inline-block;
+ padding-bottom: ($theme-spacing);
+}
+
+.frame {
+ box-shadow:
+ rgba(0,0,0,0.14902) 0px 1px 1px 0px,
+ rgba(0,0,0,0.09804) 0px 1px 2px 0px;
+ background-color: white;
+ border-radius: 5px;
+ padding: 40px;
+ border-top: 6px solid ($mdc-theme-primary);
+}
+
+.innerFrame {
+ width: 100%;
+}
+
+.footer {
+ margin-top: 10px;
+ text-align: center;
+ font-size: 0.65em;
+ color: grey;
+
+ a:visited {
+ color: grey;
+ }
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/views/ConfirmationSentView/ConfirmationSentView.module.scss b/client/src/assets/scss/views/ConfirmationSentView/ConfirmationSentView.module.scss
new file mode 100644
index 000000000..2ac1291e8
--- /dev/null
+++ b/client/src/assets/scss/views/ConfirmationSentView/ConfirmationSentView.module.scss
@@ -0,0 +1,26 @@
+
+.image {
+ width: 100%;
+ display: inline-block
+}
+
+.image img {
+ width: 64px;
+ display: block;
+}
+
+
+.left {
+ width: 24%;
+ display: inline-block;
+}
+
+.right {
+ width: 76%;
+ display: inline-block;
+ vertical-align: top;
+}
+
+.buttonContainer {
+ padding-top: 20px;
+}
diff --git a/client/src/assets/scss/views/ForgotPasswordView/ForgotPasswordView.module.scss b/client/src/assets/scss/views/ForgotPasswordView/ForgotPasswordView.module.scss
new file mode 100644
index 000000000..02060a026
--- /dev/null
+++ b/client/src/assets/scss/views/ForgotPasswordView/ForgotPasswordView.module.scss
@@ -0,0 +1,36 @@
+@import '../../variables.scss';
+
+.form {
+ padding-top: ($theme-spacing) * 2;
+}
+
+.field {
+ width: 100%;
+}
+
+.buttonsContainer {
+ margin-top: ($theme-spacing) * 2;
+ width: 100%;
+}
+
+.buttonContainer {
+ width: 50%;
+ display: inline-block;
+ box-sizing: border-box;
+}
+
+.buttonConfirmContainer {
+ padding-right: ($theme-spacing) / 2;
+}
+
+.buttonConfirm {
+ width: 100%;
+}
+
+.buttonCancelContainer {
+ padding-left: ($theme-spacing) / 2;
+}
+
+.buttonCancel {
+ width: 100%;
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.module.scss b/client/src/assets/scss/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.module.scss
new file mode 100644
index 000000000..35c860267
--- /dev/null
+++ b/client/src/assets/scss/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.module.scss
@@ -0,0 +1,64 @@
+@import '../../variables.scss';
+
+.secretContainer {
+ width: 100%;
+ border: 1px solid #dcdcdc;
+ border-radius: 10px;
+ margin-top: ($theme-spacing) * 2;
+ margin-bottom: ($theme-spacing) * 2;
+}
+
+.qrcodeContainer {
+ text-align: center;
+ padding: ($theme-spacing) * 2;
+}
+
+.base32Container {
+ text-align: center;
+ border-top: 1px solid #dcdcdc;
+ padding: ($theme-spacing);
+ word-wrap: break-word;
+}
+
+.otpauthContainer {
+ display: none;
+}
+
+.text {
+ text-align: center;
+}
+
+.needGoogleAuthenticator {
+ text-align: center;
+ margin-top: ($theme-spacing) * 2;
+}
+
+.needGoogleAuthenticatorText {
+ font-size: 0.8em;
+}
+
+.store {
+ width: 100px;
+ margin-top: ($theme-spacing) * 0.5;
+ margin-left: ($theme-spacing) * 0.5;
+ margin-right: ($theme-spacing) * 0.5;
+}
+
+.buttonContainer {
+ text-align: center;
+ padding-top: ($theme-spacing) * 2;
+}
+
+.progressContainer {
+ text-align: center;
+ padding-top: ($theme-spacing) * 2,
+}
+
+.button {
+ margin-left: ($theme-spacing);
+ margin-right: ($theme-spacing);
+}
+
+.loginButtonContainer {
+ text-align: center;
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/views/ResetPasswordView/ResetPasswordView.module.scss b/client/src/assets/scss/views/ResetPasswordView/ResetPasswordView.module.scss
new file mode 100644
index 000000000..c716fa7a8
--- /dev/null
+++ b/client/src/assets/scss/views/ResetPasswordView/ResetPasswordView.module.scss
@@ -0,0 +1,32 @@
+@import '../../variables.scss';
+
+.form {
+ margin-top: ($theme-spacing) * 2,
+}
+
+.field {
+ width: 100%;
+ margin-bottom: ($theme-spacing) * 2;
+}
+
+.buttonsContainer {
+ width: 100%;
+}
+
+.buttonContainer {
+ width: 50%;
+ box-sizing: border-box;
+ display: inline-block;
+}
+
+.buttonResetContainer {
+ padding-right: ($theme-spacing) / 2;
+}
+
+.buttonCancelContainer {
+ padding-left: ($theme-spacing) / 2;
+}
+
+.button {
+ width: 100%;
+}
\ No newline at end of file
diff --git a/client/src/assets/scss/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.module.scss b/client/src/assets/scss/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.module.scss
new file mode 100644
index 000000000..1486c4f71
--- /dev/null
+++ b/client/src/assets/scss/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.module.scss
@@ -0,0 +1,18 @@
+@import '../../variables.scss';
+
+.infoContainer {
+ margin-bottom: ($theme-spacing) * 2;
+}
+
+.imageContainer {
+ text-align: center;
+
+ img {
+ width: 120px;
+ }
+}
+
+.retryButtonContainer {
+ text-align: center;
+ padding-top: ($theme-spacing) * 2;
+}
\ No newline at end of file
diff --git a/client/src/behaviors/FetchStateBehavior.ts b/client/src/behaviors/FetchStateBehavior.ts
new file mode 100644
index 000000000..37db1e2c7
--- /dev/null
+++ b/client/src/behaviors/FetchStateBehavior.ts
@@ -0,0 +1,19 @@
+import { Dispatch } from "redux";
+import * as AutheliaService from '../services/AutheliaService';
+import { fetchStateFailure, fetchStateSuccess } from "../reducers/Portal/Authentication/actions";
+import to from "await-to-js";
+
+export default async function(dispatch: Dispatch) {
+ let err, res;
+ [err, res] = await to(AutheliaService.fetchState());
+ if (err) {
+ await dispatch(fetchStateFailure(err.message));
+ return;
+ }
+ if (!res) {
+ await dispatch(fetchStateFailure('No response'));
+ return
+ }
+ await dispatch(fetchStateSuccess(res));
+ return res;
+}
\ No newline at end of file
diff --git a/client/src/behaviors/LogoutBehavior.ts b/client/src/behaviors/LogoutBehavior.ts
new file mode 100644
index 000000000..a6b7b50b3
--- /dev/null
+++ b/client/src/behaviors/LogoutBehavior.ts
@@ -0,0 +1,18 @@
+import { Dispatch } from "redux";
+import { logout, logoutFailure, logoutSuccess } from "../reducers/Portal/SecondFactor/actions";
+import to from "await-to-js";
+import * as AutheliaService from '../services/AutheliaService';
+import fetchState from "./FetchStateBehavior";
+
+export default async function(dispatch: Dispatch) {
+ await dispatch(logout());
+ let err, res;
+ [err, res] = await to(AutheliaService.postLogout());
+
+ if (err) {
+ await dispatch(logoutFailure(err.message));
+ return;
+ }
+ await dispatch(logoutSuccess());
+ await fetchState(dispatch);
+}
\ No newline at end of file
diff --git a/client/src/behaviors/SafelyRedirectBehavior.ts b/client/src/behaviors/SafelyRedirectBehavior.ts
new file mode 100644
index 000000000..0d683456f
--- /dev/null
+++ b/client/src/behaviors/SafelyRedirectBehavior.ts
@@ -0,0 +1,15 @@
+import { Dispatch } from "redux";
+import * as AutheliaService from '../services/AutheliaService';
+
+export default async function(url: string) {
+ try {
+ // Check the url against the backend before redirecting.
+ await AutheliaService.checkRedirection(url);
+ window.location.href = url;
+ } catch (e) {
+ console.error(
+ 'Cannot redirect since the URL is not in the protected domain.' +
+ 'This behavior could be malicious so please the issue to an administrator.');
+ throw e;
+ }
+}
\ No newline at end of file
diff --git a/client/src/components/AlreadyAuthenticated/AlreadyAuthenticated.tsx b/client/src/components/AlreadyAuthenticated/AlreadyAuthenticated.tsx
new file mode 100644
index 000000000..d73d636d0
--- /dev/null
+++ b/client/src/components/AlreadyAuthenticated/AlreadyAuthenticated.tsx
@@ -0,0 +1,43 @@
+import React, { Component } from "react";
+import classnames from 'classnames';
+
+import styles from '../../assets/scss/components/AlreadyAuthenticated/AlreadyAuthenticated.module.scss';
+import Button from "@material/react-button";
+import CircleLoader, { Status } from "../CircleLoader/CircleLoader";
+
+export interface OwnProps {
+ username: string;
+ redirectionUrl: string;
+}
+
+export interface DispatchProps {
+ onLogoutClicked: () => void;
+}
+
+export type Props = OwnProps & DispatchProps;
+
+class AlreadyAuthenticated extends Component {
+ render() {
+ return (
+
+ )
+ }
+}
+
+export default AlreadyAuthenticated;
\ No newline at end of file
diff --git a/client/src/components/CircleLoader/CircleLoader.tsx b/client/src/components/CircleLoader/CircleLoader.tsx
new file mode 100644
index 000000000..c87dc441a
--- /dev/null
+++ b/client/src/components/CircleLoader/CircleLoader.tsx
@@ -0,0 +1,44 @@
+import React, { Component } from "react";
+import classnames from 'classnames';
+
+import styles from '../../assets/scss/components/CircleLoader/CircleLoader.module.scss';
+
+export enum Status {
+ LOADING,
+ SUCCESSFUL,
+ FAILURE,
+}
+
+export interface Props {
+ status: Status;
+}
+
+class CircleLoader extends Component {
+ render() {
+ const containerClasses = [styles.circleLoader];
+ const checkmarkClasses = [styles.checkmark, styles.draw];
+ const crossClasses = [styles.cross, styles.draw];
+
+ if (this.props.status === Status.SUCCESSFUL) {
+ containerClasses.push(styles.loadComplete);
+ containerClasses.push(styles.success);
+ checkmarkClasses.push(styles.show);
+ }
+ else if (this.props.status === Status.FAILURE) {
+ containerClasses.push(styles.loadComplete);
+ containerClasses.push(styles.failure);
+ crossClasses.push(styles.show);
+ }
+
+ const key = 'container-' + this.props.status;
+
+ return (
+
+ )
+ }
+}
+
+export default CircleLoader;
\ No newline at end of file
diff --git a/client/src/components/FirstFactorForm/FirstFactorForm.tsx b/client/src/components/FirstFactorForm/FirstFactorForm.tsx
new file mode 100644
index 000000000..57a1d323e
--- /dev/null
+++ b/client/src/components/FirstFactorForm/FirstFactorForm.tsx
@@ -0,0 +1,143 @@
+import React, { Component, KeyboardEvent, FormEvent } from "react";
+
+import TextField, {Input} from '@material/react-text-field';
+import Button from '@material/react-button';
+import Checkbox from '@material/react-checkbox';
+
+import { Link } from "react-router-dom";
+
+import Notification from "../../components/Notification/Notification";
+
+import styles from '../../assets/scss/components/FirstFactorForm/FirstFactorForm.module.scss';
+
+export interface OwnProps {
+ redirectionUrl: string | null;
+}
+
+export interface StateProps {
+ formDisabled: boolean;
+ error: string | null;
+}
+
+export interface DispatchProps {
+ onAuthenticationRequested(username: string, password: string, rememberMe: boolean): void;
+}
+
+export type Props = OwnProps & StateProps & DispatchProps;
+
+interface State {
+ username: string;
+ password: string;
+ rememberMe: boolean;
+}
+
+class FirstFactorForm extends Component {
+ constructor(props: Props) {
+ super(props)
+ this.state = {
+ username: '',
+ password: '',
+ rememberMe: false,
+ }
+ }
+
+ toggleRememberMe = () => {
+ this.setState({
+ rememberMe: !(this.state.rememberMe)
+ })
+ }
+
+ onUsernameChanged = (e: FormEvent) => {
+ const val = (e.target as HTMLInputElement).value;
+ this.setState({username: val});
+ }
+
+ onPasswordChanged = (e: FormEvent) => {
+ const val = (e.target as HTMLInputElement).value;
+ this.setState({password: val});
+ }
+
+ onLoginClicked = () => {
+ this.authenticate();
+ }
+
+ onPasswordKeyPressed = (e: KeyboardEvent) => {
+ if (e.key === 'Enter') {
+ this.authenticate();
+ }
+ }
+
+ render() {
+ return (
+
+
+ {this.props.error || ''}
+
+
+
+
+
+ Login
+
+
+
+
+
+ Remember me
+
+
+ Forgot password?
+
+
+
+
+ )
+ }
+
+ private authenticate() {
+ this.props.onAuthenticationRequested(
+ this.state.username,
+ this.state.password,
+ this.state.rememberMe);
+ }
+}
+
+export default FirstFactorForm;
\ No newline at end of file
diff --git a/client/src/components/Notification/Notification.tsx b/client/src/components/Notification/Notification.tsx
new file mode 100644
index 000000000..46cd27e9c
--- /dev/null
+++ b/client/src/components/Notification/Notification.tsx
@@ -0,0 +1,21 @@
+import React, { Component } from "react";
+import classnames from 'classnames';
+
+import styles from '../../assets/scss/components/Notification/Notification.module.scss';
+
+interface Props {
+ className?: string;
+ show: boolean;
+}
+
+class Notification extends Component {
+ render() {
+ return (this.props.show)
+ ? (
+ {this.props.children}
+
)
+ : null;
+ }
+}
+
+export default Notification;
\ No newline at end of file
diff --git a/client/src/components/SecondFactorForm/SecondFactorForm.tsx b/client/src/components/SecondFactorForm/SecondFactorForm.tsx
new file mode 100644
index 000000000..a2ac3b3ea
--- /dev/null
+++ b/client/src/components/SecondFactorForm/SecondFactorForm.tsx
@@ -0,0 +1,162 @@
+import React, { Component, KeyboardEvent, FormEvent } from 'react';
+import classnames from 'classnames';
+
+import TextField, { Input } from '@material/react-text-field';
+import Button from '@material/react-button';
+
+import styles from '../../assets/scss/components/SecondFactorForm/SecondFactorForm.module.scss';
+import CircleLoader, { Status } from '../../components/CircleLoader/CircleLoader';
+import Notification from '../Notification/Notification';
+
+export interface OwnProps {
+ username: string;
+ redirectionUrl: string | null;
+}
+
+export interface StateProps {
+ securityKeySupported: boolean;
+ securityKeyVerified: boolean;
+ securityKeyError: string | null;
+
+ oneTimePasswordVerificationInProgress: boolean,
+ oneTimePasswordVerificationError: string | null;
+}
+
+export interface DispatchProps {
+ onInit: () => void;
+ onLogoutClicked: () => void;
+ onRegisterSecurityKeyClicked: () => void;
+ onRegisterOneTimePasswordClicked: () => void;
+
+ onOneTimePasswordValidationRequested: (token: string) => void;
+}
+
+export type Props = OwnProps & StateProps & DispatchProps;
+
+interface State {
+ oneTimePassword: string;
+}
+
+class SecondFactorView extends Component {
+ constructor(props: Props) {
+ super(props);
+ this.state = {
+ oneTimePassword: '',
+ }
+ }
+
+ componentWillMount() {
+ this.props.onInit();
+ }
+
+ private renderU2f(n: number) {
+ let u2fStatus = Status.LOADING;
+ if (this.props.securityKeyVerified) {
+ u2fStatus = Status.SUCCESSFUL;
+ } else if (this.props.securityKeyError) {
+ u2fStatus = Status.FAILURE;
+ }
+ return (
+
+
Option {n} - Security Key
+
Insert your security key into a USB port and touch the gold disk.
+
+
+
+
+
+ )
+ }
+
+ private onOneTimePasswordChanged = (e: FormEvent) => {
+ this.setState({oneTimePassword: (e.target as HTMLInputElement).value});
+ }
+
+ private onTotpKeyPressed = (e: KeyboardEvent) => {
+ if (e.key === 'Enter') {
+ this.onOneTimePasswordValidationRequested();
+ }
+ }
+
+ private onOneTimePasswordValidationRequested = () => {
+ if (this.props.oneTimePasswordVerificationInProgress) return;
+ this.props.onOneTimePasswordValidationRequested(this.state.oneTimePassword);
+ }
+
+ private renderTotp(n: number) {
+ return (
+
+
Option {n} - One-Time Password
+
+ {this.props.oneTimePasswordVerificationError}
+
+
+
+
+
+
+
+ OK
+
+
+
+ )
+ }
+
+ private renderMode() {
+ const methods = [];
+ let n = 1;
+ if (this.props.securityKeySupported) {
+ methods.push(this.renderU2f(n));
+ n++;
+ }
+ methods.push(this.renderTotp(n));
+
+ return (
+
+ {methods}
+
+ );
+ }
+
+ render() {
+ return (
+
+
+
Hello {this.props.username}
+
+
+
+ {this.renderMode()}
+
+
+ )
+ }
+}
+
+export default SecondFactorView;
\ No newline at end of file
diff --git a/client/src/constants.ts b/client/src/constants.ts
new file mode 100644
index 000000000..2ba816e87
--- /dev/null
+++ b/client/src/constants.ts
@@ -0,0 +1,3 @@
+
+export const AUTHELIA_URL = "https://www.authelia.com/"
+export const AUTHELIA_GITHUB_URL = "https://github.com/clems4ever/authelia";
\ No newline at end of file
diff --git a/client/src/containers/components/AlreadyAuthenticated/AlreadyAuthenticated.ts b/client/src/containers/components/AlreadyAuthenticated/AlreadyAuthenticated.ts
new file mode 100644
index 000000000..5029b5f4e
--- /dev/null
+++ b/client/src/containers/components/AlreadyAuthenticated/AlreadyAuthenticated.ts
@@ -0,0 +1,17 @@
+import { connect } from 'react-redux';
+import { Dispatch } from 'redux';
+import { RootState } from '../../../reducers';
+import AlreadyAuthenticated, { DispatchProps } from '../../../components/AlreadyAuthenticated/AlreadyAuthenticated';
+import LogoutBehavior from '../../../behaviors/LogoutBehavior';
+
+const mapStateToProps = (state: RootState) => {
+ return {};
+}
+
+const mapDispatchToProps = (dispatch: Dispatch): DispatchProps => {
+ return {
+ onLogoutClicked: () => LogoutBehavior(dispatch),
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(AlreadyAuthenticated);
\ No newline at end of file
diff --git a/client/src/containers/components/FirstFactorForm/FirstFactorForm.ts b/client/src/containers/components/FirstFactorForm/FirstFactorForm.ts
new file mode 100644
index 000000000..e47ad6176
--- /dev/null
+++ b/client/src/containers/components/FirstFactorForm/FirstFactorForm.ts
@@ -0,0 +1,65 @@
+import { connect } from 'react-redux';
+import { Dispatch } from 'redux';
+import { authenticateFailure, authenticateSuccess, authenticate } from '../../../reducers/Portal/FirstFactor/actions';
+import FirstFactorForm, { StateProps, OwnProps } from '../../../components/FirstFactorForm/FirstFactorForm';
+import { RootState } from '../../../reducers';
+import * as AutheliaService from '../../../services/AutheliaService';
+import to from 'await-to-js';
+import FetchStateBehavior from '../../../behaviors/FetchStateBehavior';
+import SafelyRedirectBehavior from '../../../behaviors/SafelyRedirectBehavior';
+
+const mapStateToProps = (state: RootState): StateProps => {
+ return {
+ error: state.firstFactor.error,
+ formDisabled: state.firstFactor.loading,
+ };
+}
+
+function onAuthenticationRequested(dispatch: Dispatch, redirectionUrl: string | null) {
+ return async (username: string, password: string, rememberMe: boolean) => {
+ let err, res;
+
+ // Validate first factor
+ dispatch(authenticate());
+ [err, res] = await to(AutheliaService.postFirstFactorAuth(
+ username, password, rememberMe, redirectionUrl));
+
+ if (err) {
+ await dispatch(authenticateFailure(err.message));
+ return;
+ }
+
+ if (!res) {
+ await dispatch(authenticateFailure('No response'));
+ return;
+ }
+
+ if (res.status === 200) {
+ const json = await res.json();
+ if ('error' in json) {
+ await dispatch(authenticateFailure(json['error']));
+ return;
+ }
+
+ if ('redirect' in json) {
+ window.location.href = json['redirect'];
+ return;
+ }
+ } else if (res.status === 204) {
+ dispatch(authenticateSuccess());
+
+ // fetch state to move to next stage
+ FetchStateBehavior(dispatch);
+ } else {
+ dispatch(authenticateFailure('Unknown error'));
+ }
+ }
+}
+
+const mapDispatchToProps = (dispatch: Dispatch, ownProps: OwnProps) => {
+ return {
+ onAuthenticationRequested: onAuthenticationRequested(dispatch, ownProps.redirectionUrl),
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(FirstFactorForm);
\ No newline at end of file
diff --git a/client/src/containers/components/SecondFactorForm/SecondFactorForm.ts b/client/src/containers/components/SecondFactorForm/SecondFactorForm.ts
new file mode 100644
index 000000000..804abdc9e
--- /dev/null
+++ b/client/src/containers/components/SecondFactorForm/SecondFactorForm.ts
@@ -0,0 +1,119 @@
+import { connect } from 'react-redux';
+import { RootState } from '../../../reducers';
+import { Dispatch } from 'redux';
+import u2fApi from 'u2f-api';
+import to from 'await-to-js';
+import { securityKeySignSuccess, securityKeySign, securityKeySignFailure, setSecurityKeySupported, oneTimePasswordVerification, oneTimePasswordVerificationFailure, oneTimePasswordVerificationSuccess } from '../../../reducers/Portal/SecondFactor/actions';
+import SecondFactorForm, { OwnProps, StateProps } from '../../../components/SecondFactorForm/SecondFactorForm';
+import * as AutheliaService from '../../../services/AutheliaService';
+import { push } from 'connected-react-router';
+import fetchState from '../../../behaviors/FetchStateBehavior';
+import LogoutBehavior from '../../../behaviors/LogoutBehavior';
+import SafelyRedirectBehavior from '../../../behaviors/SafelyRedirectBehavior';
+
+const mapStateToProps = (state: RootState): StateProps => ({
+ securityKeySupported: state.secondFactor.securityKeySupported,
+ securityKeyVerified: state.secondFactor.securityKeySignSuccess || false,
+ securityKeyError: state.secondFactor.error,
+
+ oneTimePasswordVerificationInProgress: state.secondFactor.oneTimePasswordVerificationLoading,
+ oneTimePasswordVerificationError: state.secondFactor.oneTimePasswordVerificationError,
+});
+
+async function triggerSecurityKeySigning(dispatch: Dispatch) {
+ let err, result;
+ dispatch(securityKeySign());
+ [err, result] = await to(AutheliaService.requestSigning());
+ if (err) {
+ await dispatch(securityKeySignFailure(err.message));
+ throw err;
+ }
+
+ if (!result) {
+ await dispatch(securityKeySignFailure('No response'));
+ throw 'No response';
+ }
+
+ [err, result] = await to(u2fApi.sign(result, 60));
+ if (err) {
+ await dispatch(securityKeySignFailure(err.message));
+ throw err;
+ }
+
+ if (!result) {
+ await dispatch(securityKeySignFailure('No response'));
+ throw 'No response';
+ }
+
+ [err, result] = await to(AutheliaService.completeSecurityKeySigning(result));
+ if (err) {
+ await dispatch(securityKeySignFailure(err.message));
+ throw err;
+ }
+ await dispatch(securityKeySignSuccess());
+}
+
+async function handleSuccess(dispatch: Dispatch, ownProps: OwnProps, duration?: number) {
+ async function handle() {
+ if (ownProps.redirectionUrl) {
+ try {
+ await SafelyRedirectBehavior(ownProps.redirectionUrl);
+ } catch (e) {
+ await fetchState(dispatch);
+ }
+ } else {
+ await fetchState(dispatch);
+ }
+ }
+
+ if (duration) {
+ setTimeout(handle, duration);
+ } else {
+ await handle();
+ }
+}
+
+const mapDispatchToProps = (dispatch: Dispatch, ownProps: OwnProps) => {
+ return {
+ onLogoutClicked: () => LogoutBehavior(dispatch),
+ onRegisterSecurityKeyClicked: async () => {
+ await AutheliaService.startU2FRegistrationIdentityProcess();
+ await dispatch(push('/confirmation-sent'));
+ },
+ onRegisterOneTimePasswordClicked: async () => {
+ await AutheliaService.startTOTPRegistrationIdentityProcess();
+ await dispatch(push('/confirmation-sent'));
+ },
+ onInit: async () => {
+ const isU2FSupported = await u2fApi.isSupported();
+ if (isU2FSupported) {
+ await dispatch(setSecurityKeySupported(true));
+ await triggerSecurityKeySigning(dispatch);
+ await handleSuccess(dispatch, ownProps, 1000);
+ }
+ },
+ onOneTimePasswordValidationRequested: async (token: string) => {
+ let err, res;
+ dispatch(oneTimePasswordVerification());
+ [err, res] = await to(AutheliaService.verifyTotpToken(token));
+ if (err) {
+ dispatch(oneTimePasswordVerificationFailure(err.message));
+ throw err;
+ }
+ if (!res) {
+ dispatch(oneTimePasswordVerificationFailure('No response'));
+ throw 'No response';
+ }
+
+ const body = await res.json();
+ if ('error' in body) {
+ dispatch(oneTimePasswordVerificationFailure(body['error']));
+ throw body['error'];
+ }
+ dispatch(oneTimePasswordVerificationSuccess());
+ await handleSuccess(dispatch, ownProps);
+ },
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(SecondFactorForm);
\ No newline at end of file
diff --git a/client/src/containers/layouts/PortalLayout/PortalLayout.ts b/client/src/containers/layouts/PortalLayout/PortalLayout.ts
new file mode 100644
index 000000000..f3c52147b
--- /dev/null
+++ b/client/src/containers/layouts/PortalLayout/PortalLayout.ts
@@ -0,0 +1,7 @@
+import { connect } from 'react-redux';
+import PortalLayout from '../../../layouts/PortalLayout/PortalLayout';
+import { RootState } from '../../../reducers';
+
+const mapStateToProps = (state: RootState) => ({});
+
+export default connect(mapStateToProps)(PortalLayout);
\ No newline at end of file
diff --git a/client/src/containers/views/AuthenticationView/AuthenticationView.ts b/client/src/containers/views/AuthenticationView/AuthenticationView.ts
new file mode 100644
index 000000000..472037194
--- /dev/null
+++ b/client/src/containers/views/AuthenticationView/AuthenticationView.ts
@@ -0,0 +1,46 @@
+import { connect } from 'react-redux';
+import QueryString from 'query-string';
+import AuthenticationView, {StateProps, Stage, DispatchProps, OwnProps} from '../../../views/AuthenticationView/AuthenticationView';
+import { RootState } from '../../../reducers';
+import { Dispatch } from 'redux';
+import AuthenticationLevel from '../../../types/AuthenticationLevel';
+import FetchStateBehavior from '../../../behaviors/FetchStateBehavior';
+
+function authenticationLevelToStage(level: AuthenticationLevel): Stage {
+ switch (level) {
+ case AuthenticationLevel.NOT_AUTHENTICATED:
+ return Stage.FIRST_FACTOR;
+ case AuthenticationLevel.ONE_FACTOR:
+ return Stage.SECOND_FACTOR;
+ case AuthenticationLevel.TWO_FACTOR:
+ return Stage.ALREADY_AUTHENTICATED;
+ }
+}
+
+const mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {
+ const stage = (state.authentication.remoteState)
+ ? authenticationLevelToStage(state.authentication.remoteState.authentication_level)
+ : Stage.FIRST_FACTOR;
+
+ let url: string | null = null;
+ if (ownProps.location) {
+ const params = QueryString.parse(ownProps.location.search);
+ if ('rd' in params) {
+ url = params['rd'] as string;
+ }
+ }
+
+ return {
+ redirectionUrl: url,
+ remoteState: state.authentication.remoteState,
+ stage: stage,
+ };
+}
+
+const mapDispatchToProps = (dispatch: Dispatch) => {
+ return {
+ onInit: async () => await FetchStateBehavior(dispatch)
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(AuthenticationView);
\ No newline at end of file
diff --git a/client/src/containers/views/ForgotPasswordView/ForgotPasswordView.ts b/client/src/containers/views/ForgotPasswordView/ForgotPasswordView.ts
new file mode 100644
index 000000000..53fc7721a
--- /dev/null
+++ b/client/src/containers/views/ForgotPasswordView/ForgotPasswordView.ts
@@ -0,0 +1,31 @@
+import { connect } from 'react-redux';
+import { RootState } from '../../../reducers';
+import { Dispatch } from 'redux';
+import { push } from 'connected-react-router';
+import * as AutheliaService from '../../../services/AutheliaService';
+import ForgotPasswordView from '../../../views/ForgotPasswordView/ForgotPasswordView';
+import { forgotPasswordRequest, forgotPasswordSuccess, forgotPasswordFailure } from '../../../reducers/Portal/ForgotPassword/actions';
+
+const mapStateToProps = (state: RootState) => ({
+ disabled: state.forgotPassword.loading,
+});
+
+const mapDispatchToProps = (dispatch: Dispatch) => {
+ return {
+ onPasswordResetRequested: async (username: string) => {
+ try {
+ dispatch(forgotPasswordRequest());
+ await AutheliaService.initiatePasswordResetIdentityValidation(username);
+ dispatch(forgotPasswordSuccess());
+ await dispatch(push('/confirmation-sent'));
+ } catch (err) {
+ dispatch(forgotPasswordFailure(err.message));
+ }
+ },
+ onCancelClicked: async () => {
+ dispatch(push('/'));
+ }
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(ForgotPasswordView);
\ No newline at end of file
diff --git a/client/src/containers/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.ts b/client/src/containers/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.ts
new file mode 100644
index 000000000..f724b3458
--- /dev/null
+++ b/client/src/containers/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.ts
@@ -0,0 +1,68 @@
+import { connect } from 'react-redux';
+import OneTimePasswordRegistrationView from '../../../views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView';
+import { RootState } from '../../../reducers';
+import { Dispatch } from 'redux';
+import {to} from 'await-to-js';
+import { generateTotpSecret, generateTotpSecretSuccess, generateTotpSecretFailure } from '../../../reducers/Portal/OneTimePasswordRegistration/actions';
+import { push } from 'connected-react-router';
+
+const mapStateToProps = (state: RootState) => ({
+ error: state.oneTimePasswordRegistration.error,
+ secret: state.oneTimePasswordRegistration.secret,
+});
+
+async function checkIdentity(token: string) {
+ return fetch(`/api/secondfactor/totp/identity/finish?token=${token}`, {
+ method: 'POST',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ })
+ .then(async (res) => {
+ if (res.status !== 200) {
+ throw new Error('Status code ' + res.status);
+ }
+
+ const body = await res.json();
+ if ('error' in body) {
+ throw new Error(body['error']);
+ }
+ return body;
+ });
+}
+
+async function tryGenerateTotpSecret(dispatch: Dispatch, token: string) {
+ let err, result;
+ dispatch(generateTotpSecret());
+ [err, result] = await to(checkIdentity(token));
+ if (err) {
+ const e = err;
+ setTimeout(() => {
+ dispatch(generateTotpSecretFailure(e.message));
+ }, 2000);
+ return;
+ }
+ dispatch(generateTotpSecretSuccess(result));
+}
+
+const mapDispatchToProps = (dispatch: Dispatch) => {
+ let internalToken: string;
+ return {
+ onInit: async (token: string) => {
+ internalToken = token;
+ await tryGenerateTotpSecret(dispatch, internalToken);
+ },
+ onRetryClicked: async () => {
+ await tryGenerateTotpSecret(dispatch, internalToken);
+ },
+ onCancelClicked: () => {
+ dispatch(push('/'));
+ },
+ onLoginClicked: () => {
+ dispatch(push('/'));
+ }
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(OneTimePasswordRegistrationView);
\ No newline at end of file
diff --git a/client/src/containers/views/ResetPasswordView/ResetPasswordView.ts b/client/src/containers/views/ResetPasswordView/ResetPasswordView.ts
new file mode 100644
index 000000000..60840c171
--- /dev/null
+++ b/client/src/containers/views/ResetPasswordView/ResetPasswordView.ts
@@ -0,0 +1,27 @@
+import { connect } from 'react-redux';
+import { RootState } from '../../../reducers';
+import { Dispatch } from 'redux';
+import { push } from 'connected-react-router';
+import * as AutheliaService from '../../../services/AutheliaService';
+import ResetPasswordView, { StateProps } from '../../../views/ResetPasswordView/ResetPasswordView';
+
+const mapStateToProps = (state: RootState): StateProps => ({
+ disabled: state.resetPassword.loading,
+});
+
+const mapDispatchToProps = (dispatch: Dispatch) => {
+ return {
+ onInit: async (token: string) => {
+ await AutheliaService.completePasswordResetIdentityValidation(token);
+ },
+ onPasswordResetRequested: async (newPassword: string) => {
+ await AutheliaService.resetPassword(newPassword);
+ await dispatch(push('/'));
+ },
+ onCancelClicked: async () => {
+ await dispatch(push('/'));
+ }
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(ResetPasswordView);
\ No newline at end of file
diff --git a/client/src/containers/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.ts b/client/src/containers/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.ts
new file mode 100644
index 000000000..f51fcb45e
--- /dev/null
+++ b/client/src/containers/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.ts
@@ -0,0 +1,90 @@
+import { connect } from 'react-redux';
+import SecurityKeyRegistrationView from '../../../views/SecurityKeyRegistrationView/SecurityKeyRegistrationView';
+import { RootState } from '../../../reducers';
+import { Dispatch } from 'redux';
+import {to} from 'await-to-js';
+import * as U2fApi from "u2f-api";
+import { Props } from '../../../views/SecurityKeyRegistrationView/SecurityKeyRegistrationView';
+import { registerSecurityKey, registerSecurityKeyFailure, registerSecurityKeySuccess } from '../../../reducers/Portal/SecurityKeyRegistration/actions';
+
+const mapStateToProps = (state: RootState) => ({
+ deviceRegistered: state.securityKeyRegistration.success,
+ error: state.securityKeyRegistration.error,
+});
+
+async function checkIdentity(token: string) {
+ return fetch(`/api/secondfactor/u2f/identity/finish?token=${token}`, {
+ method: 'POST',
+ });
+}
+
+async function requestRegistration() {
+ return fetch('/api/u2f/register_request')
+ .then(async (res) => {
+ if (res.status !== 200) {
+ throw new Error('Status code ' + res.status);
+ }
+ return res.json();
+ });
+}
+
+async function completeRegistration(response: U2fApi.RegisterResponse) {
+ return fetch('/api/u2f/register', {
+ method: 'POST',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(response),
+ })
+ .then(async (res) => {
+ if (res.status !== 200) {
+ throw new Error('Status code ' + res.status);
+ }
+ });
+}
+
+function fail(dispatch: Dispatch, err: Error) {
+ dispatch(registerSecurityKeyFailure(err.message));
+}
+
+const mapDispatchToProps = (dispatch: Dispatch, ownProps: Props) => {
+ return {
+ onInit: async (token: string) => {
+ let err, result;
+ dispatch(registerSecurityKey());
+ [err, result] = await to(checkIdentity(token));
+ if (err) {
+ fail(dispatch, err);
+ return;
+ }
+ [err, result] = await to(requestRegistration());
+ if (err) {
+ fail(dispatch, err);
+ return;
+ }
+
+ [err, result] = await to(U2fApi.register(result, [], 60));
+ if (err) {
+ fail(dispatch, err);
+ return;
+ }
+
+ [err, result] = await to(completeRegistration(result as U2fApi.RegisterResponse));
+ if (err) {
+ fail(dispatch, err);
+ return;
+ }
+
+ dispatch(registerSecurityKeySuccess());
+ setTimeout(() => {
+ ownProps.history.push('/2fa');
+ }, 2000);
+ },
+ onBackClicked: () => {
+ ownProps.history.push('/2fa');
+ }
+ }
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(SecurityKeyRegistrationView);
\ No newline at end of file
diff --git a/client/src/css/00-bootstrap.min.css b/client/src/css/00-bootstrap.min.css
deleted file mode 100644
index ed3905e0e..000000000
--- a/client/src/css/00-bootstrap.min.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
-/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/client/src/css/01-main.css b/client/src/css/01-main.css
deleted file mode 100644
index ead0852a7..000000000
--- a/client/src/css/01-main.css
+++ /dev/null
@@ -1,67 +0,0 @@
-body {
- background-image: url("/img/background.svg");
-}
-.authelia-brand {
- font-weight: bold;
- font-style: italic;
- color: #648caf
-}
-.poweredby-block {
- margin: 0px 30px;
- margin-top: 10px;
- padding-top: 15px;
- border-top: 1px solid rgba(0, 0, 0, 0.15);
-}
-.poweredby {
- font-size: 0.7em;
- color: #6b6b6b;
-}
-/* notifications */
-.notification {
- padding: 10px;
- margin: 15px 0px;
- border-radius: 6px;
- display: none;
- position: absolute;
-}
-.notification img {
- width: 24px;
- margin-right: 10px;
-}
-.notification i,
-.notification span {
- display:table-cell;
- vertical-align:middle;
-}
-.info {
- border: 1px solid #9cb1ff;
- background-color: rgb(192, 220, 255);
-}
-.success {
- border: 1px solid #65ec7c;
- background-color: rgb(163, 255, 157);
-}
-.error {
- border: 1px solid #ffa3a3;
- background-color: rgb(255, 175, 175);
-}
-.warning {
- border: 1px solid #ffd743;
- background-color: rgb(255, 230, 143);
-}
-.bottom-right-links {
- text-align: right;
- margin-top: 10px;
- font-size: 0.8em;
-}
-.header {
- background-color: #778dab;
- color: white;
- margin: 0px;
-}
-.body {
- padding: 10px;
-}
-h1 {
- font-size: 25px;
-}
diff --git a/client/src/css/02-login.css b/client/src/css/02-login.css
deleted file mode 100644
index aa59733d3..000000000
--- a/client/src/css/02-login.css
+++ /dev/null
@@ -1,132 +0,0 @@
-.form-signin
-{
- margin: 0 auto;
-}
-
-.form-signin .form-signin-heading, .form-signin .checkbox
-{
- margin-bottom: 10px;
-}
-
-.form-signin .checkbox
-{
- font-weight: normal;
-}
-
-.form-signin .form-control
-{
- position: relative;
- font-size: 16px;
- height: auto;
- padding: 10px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.form-signin .form-control:focus
-{
- z-index: 2;
-}
-.form-signin input[type="text"]
-{
- margin-bottom: -1px;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-.form-signin input[type="password"]
-{
- /* margin-bottom: 10px; */
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.account-wall
-{
- border: 1px solid #DDD;
- margin-top: 20px;
- padding-bottom: 20px;
- background-color: #f7f7f7;
- -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
- -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
- box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
-}
-.account-wall h1
-{
- margin-bottom: 15px;
- margin-top: 15px;
- font-weight: 800;
- display: block;
- text-align: center;
-}
-.account-wall h3
-{
- display: block;
- text-align: center;
-}
-.account-wall p
-{
- text-align: center;
- margin: 10px;
-}
-.account-wall .form-inputs
-{
- margin-bottom: 10px;
-}
-.account-wall hr {
- border-color: #c5c5c5;
-}
-
-.header-img
-{
- width: 96px;
- height: 96px;
- margin: 0 auto 10px;
- display: block;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
- border-radius: 50%;
-}
-
-.link
-{
- margin-top: 10px;
-}
-
-.btn-primary.totp
-{
- background-color: rgb(102, 135, 162);
-}
-
-.btn-primary.u2f
-{
- background-color: rgb(83, 149, 204);
-}
-
-.u2f-token {
- text-align: center;
-}
-
-.u2f-token img {
- width: 70px;
-}
-
-.keep-me-logged-in {
- margin-top: 10px;
- font-size: 0.8em;
-}
-
-.keep-me-logged-in input[type=checkbox] {
- transform: scale(0.8);
- margin: 0;
- margin-right: 4px;
-}
-
-.keep-me-logged-in label {
- font-weight: 300;
-}
-
-.keep-me-logged-in input,
-.keep-me-logged-in label {
- display: inline-block;
- margin-bottom: 0; /* I added this after I posted my reply */
- vertical-align: middle; /* Fixes any weird issues in Firefox and IE */
-}
\ No newline at end of file
diff --git a/client/src/css/03-errors.css b/client/src/css/03-errors.css
deleted file mode 100644
index e9f97f33b..000000000
--- a/client/src/css/03-errors.css
+++ /dev/null
@@ -1,12 +0,0 @@
-
-.error-401 .header-img {
- border-radius: 0%;
-}
-
-.error-403 .header-img {
- border-radius: 0%;
-}
-
-.error-404 .header-img {
- border-radius: 0%;
-}
\ No newline at end of file
diff --git a/client/src/css/03-password-reset-form.css b/client/src/css/03-password-reset-form.css
deleted file mode 100644
index 34066bc24..000000000
--- a/client/src/css/03-password-reset-form.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-form .header-img {
- border-radius: 0%;
-}
diff --git a/client/src/css/03-password-reset-request.css b/client/src/css/03-password-reset-request.css
deleted file mode 100644
index 1a2ad4df8..000000000
--- a/client/src/css/03-password-reset-request.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-request .header-img {
- border-radius: 0%;
-}
diff --git a/client/src/css/03-totp-register.css b/client/src/css/03-totp-register.css
deleted file mode 100644
index cb76720ad..000000000
--- a/client/src/css/03-totp-register.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.totp-register #secret {
- background-color: white;
- font-size: 0.9em;
- font-weight: bold;
- padding: 5px;
- border: 1px solid #c7c7c7;
- word-wrap: break-word;
-}
-.totp-register #qrcode img {
- margin: 10px auto;
-}
-.totp-register .need-google-authenticator {
- text-align: center;
- margin-top: 20px;
-}
-.totp-register .store-badges {
- margin-top: 5px;
-}
-.totp-register .store-badge {
- width: 110px;
- height: 30px;
-}
\ No newline at end of file
diff --git a/client/src/css/03-u2f-register.css b/client/src/css/03-u2f-register.css
deleted file mode 100644
index e54cddf89..000000000
--- a/client/src/css/03-u2f-register.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
-.u2f-register img {
- display: block;
- margin: 20px auto;
-}
\ No newline at end of file
diff --git a/client/src/img/background.svg b/client/src/img/background.svg
deleted file mode 100644
index 93b00339b..000000000
--- a/client/src/img/background.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/client/src/img/icon.png b/client/src/img/icon.png
deleted file mode 100644
index 040d10c1a..000000000
Binary files a/client/src/img/icon.png and /dev/null differ
diff --git a/client/src/img/notifications/error.png b/client/src/img/notifications/error.png
deleted file mode 100644
index bf64d28f7..000000000
Binary files a/client/src/img/notifications/error.png and /dev/null differ
diff --git a/client/src/img/notifications/info.png b/client/src/img/notifications/info.png
deleted file mode 100644
index 67928e88c..000000000
Binary files a/client/src/img/notifications/info.png and /dev/null differ
diff --git a/client/src/img/notifications/success.png b/client/src/img/notifications/success.png
deleted file mode 100644
index d3998392d..000000000
Binary files a/client/src/img/notifications/success.png and /dev/null differ
diff --git a/client/src/img/notifications/warning.png b/client/src/img/notifications/warning.png
deleted file mode 100644
index ab8b54ffc..000000000
Binary files a/client/src/img/notifications/warning.png and /dev/null differ
diff --git a/client/src/img/padlock.png b/client/src/img/padlock.png
deleted file mode 100644
index 31abbaeef..000000000
Binary files a/client/src/img/padlock.png and /dev/null differ
diff --git a/client/src/img/password.png b/client/src/img/password.png
deleted file mode 100644
index cf6164740..000000000
Binary files a/client/src/img/password.png and /dev/null differ
diff --git a/client/src/img/pendrive.png b/client/src/img/pendrive.png
deleted file mode 100644
index fa49178c3..000000000
Binary files a/client/src/img/pendrive.png and /dev/null differ
diff --git a/client/src/img/success.png b/client/src/img/success.png
deleted file mode 100644
index ee9d6841b..000000000
Binary files a/client/src/img/success.png and /dev/null differ
diff --git a/client/src/img/user.png b/client/src/img/user.png
deleted file mode 100644
index 00941399d..000000000
Binary files a/client/src/img/user.png and /dev/null differ
diff --git a/client/src/img/warning.png b/client/src/img/warning.png
deleted file mode 100644
index c6acd953b..000000000
Binary files a/client/src/img/warning.png and /dev/null differ
diff --git a/client/src/index.css b/client/src/index.css
new file mode 100644
index 000000000..4821f2cce
--- /dev/null
+++ b/client/src/index.css
@@ -0,0 +1,11 @@
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
+ "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
+ sans-serif;
+ background: #eee;
+}
+
+code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
+ monospace;
+}
diff --git a/client/src/index.ts b/client/src/index.ts
deleted file mode 100644
index 6c22d17c7..000000000
--- a/client/src/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-
-import FirstFactorValidator = require("./lib/firstfactor/FirstFactorValidator");
-
-import FirstFactor from "./lib/firstfactor/index";
-import SecondFactor from "./lib/secondfactor/index";
-import TOTPRegister from "./lib/totp-register/totp-register";
-import U2fRegister from "./lib/u2f-register/u2f-register";
-import ResetPasswordRequest from "./lib/reset-password/reset-password-request";
-import ResetPasswordForm from "./lib/reset-password/reset-password-form";
-import jslogger = require("js-logger");
-import jQuery = require("jquery");
-import Endpoints = require("../../shared/api");
-
-jslogger.useDefaults();
-jslogger.setLevel(jslogger.INFO);
-
-(function () {
- (window).jQuery = jQuery;
- require("bootstrap");
-
- jQuery('[data-toggle="tooltip"]').tooltip();
- if (window.location.pathname == Endpoints.FIRST_FACTOR_GET)
- FirstFactor(window, jQuery, FirstFactorValidator, jslogger);
- else if (window.location.pathname == Endpoints.SECOND_FACTOR_GET)
- SecondFactor(window, jQuery);
- else if (window.location.pathname == Endpoints.SECOND_FACTOR_TOTP_IDENTITY_FINISH_GET)
- TOTPRegister(window, jQuery);
- else if (window.location.pathname == Endpoints.SECOND_FACTOR_U2F_IDENTITY_FINISH_GET)
- U2fRegister(window, jQuery);
- else if (window.location.pathname == Endpoints.RESET_PASSWORD_IDENTITY_FINISH_GET)
- ResetPasswordForm(window, jQuery);
- else if (window.location.pathname == Endpoints.RESET_PASSWORD_REQUEST_GET)
- ResetPasswordRequest(window, jQuery);
-})();
diff --git a/client/src/index.tsx b/client/src/index.tsx
new file mode 100644
index 000000000..0c5e75da1
--- /dev/null
+++ b/client/src/index.tsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import './index.css';
+import App from './App';
+import * as serviceWorker from './serviceWorker';
+
+ReactDOM.render( , document.getElementById('root'));
+
+// If you want your app to work offline and load faster, you can change
+// unregister() to register() below. Note this comes with some pitfalls.
+// Learn more about service workers: http://bit.ly/CRA-PWA
+serviceWorker.unregister();
diff --git a/client/src/layouts/PortalLayout/PortalLayout.tsx b/client/src/layouts/PortalLayout/PortalLayout.tsx
new file mode 100644
index 000000000..eb9760e41
--- /dev/null
+++ b/client/src/layouts/PortalLayout/PortalLayout.tsx
@@ -0,0 +1,52 @@
+import React, { Component } from "react";
+
+import { Route, Switch, Redirect, RouterProps, RouteProps } from "react-router";
+
+import { routes } from '../../routes/routes';
+import { AUTHELIA_GITHUB_URL } from "../../constants";
+
+import styles from '../../assets/scss/layouts/PortalLayout/PortalLayout.module.scss';
+
+interface Props extends RouterProps, RouteProps {}
+
+class PortalLayout extends Component {
+ private renderTitle() {
+ if (!this.props.location) return;
+
+ for (let i in routes) {
+ const route = routes[i];
+ if (route.path && route.path.indexOf(this.props.location.pathname) > -1) {
+ return route.title.toUpperCase();
+ }
+ }
+ return;
+ }
+
+
+ render() {
+ return (
+
+
+
+ {this.renderTitle()}
+
+
+
+
+ {routes.map((r, key) => {
+ return
+ })}
+
+
+
+
+
+
+
+ )
+ }
+}
+
+export default PortalLayout;
\ No newline at end of file
diff --git a/client/src/lib/GetPromised.ts b/client/src/lib/GetPromised.ts
deleted file mode 100644
index 779139654..000000000
--- a/client/src/lib/GetPromised.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import BluebirdPromise = require("bluebird");
-
-export default function ($: JQueryStatic, url: string, data: Object, fn: any,
- dataType: string): BluebirdPromise {
- return new BluebirdPromise((resolve, reject) => {
- $.get(url, {}, undefined, dataType)
- .done((data: any) => {
- resolve(data);
- })
- .fail((xhr: JQueryXHR, textStatus: string) => {
- reject(textStatus);
- });
- });
-}
\ No newline at end of file
diff --git a/client/src/lib/INotifier.ts b/client/src/lib/INotifier.ts
deleted file mode 100644
index df947538f..000000000
--- a/client/src/lib/INotifier.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-
-declare type Handler = () => void;
-
-export interface Handlers {
- onFadedIn: Handler;
- onFadedOut: Handler;
-}
-
-export interface INotifier {
- success(msg: string, handlers?: Handlers): void;
- error(msg: string, handlers?: Handlers): void;
- warning(msg: string, handlers?: Handlers): void;
- info(msg: string, handlers?: Handlers): void;
-}
\ No newline at end of file
diff --git a/client/src/lib/Notifier.ts b/client/src/lib/Notifier.ts
deleted file mode 100644
index c0252b9b9..000000000
--- a/client/src/lib/Notifier.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-import util = require("util");
-import { INotifier, Handlers } from "./INotifier";
-
-class NotificationEvent {
- private element: JQuery;
- private message: string;
- private statusType: string;
- private timeoutId: any;
-
- constructor(element: JQuery, msg: string, statusType: string) {
- this.message = msg;
- this.statusType = statusType;
- this.element = element;
- }
-
- private clearNotification() {
- this.element.removeClass(this.statusType);
- this.element.html("");
- }
-
- start(handlers?: Handlers) {
- const that = this;
- const FADE_TIME = 500;
- const html = util.format(' \
- %s ', this.statusType, this.statusType, this.message);
- this.element.html(html);
- this.element.addClass(this.statusType);
- this.element.fadeIn(FADE_TIME, function () {
- if (handlers)
- handlers.onFadedIn();
- });
-
- this.timeoutId = setTimeout(function () {
- that.element.fadeOut(FADE_TIME, function () {
- that.clearNotification();
- if (handlers)
- handlers.onFadedOut();
- });
- }, 4000);
- }
-
- interrupt() {
- this.clearNotification();
- this.element.hide();
- clearTimeout(this.timeoutId);
- }
-}
-
-export class Notifier implements INotifier {
- private element: JQuery;
- private onGoingEvent: NotificationEvent;
-
- constructor(selector: string, $: JQueryStatic) {
- this.element = $(selector);
- this.onGoingEvent = undefined;
- }
-
- private displayAndFadeout(msg: string, statusType: string, handlers?: Handlers): void {
- if (this.onGoingEvent)
- this.onGoingEvent.interrupt();
-
- this.onGoingEvent = new NotificationEvent(this.element, msg, statusType);
- this.onGoingEvent.start(handlers);
- }
-
- success(msg: string, handlers?: Handlers) {
- this.displayAndFadeout(msg, "success", handlers);
- }
-
- error(msg: string, handlers?: Handlers) {
- this.displayAndFadeout(msg, "error", handlers);
- }
-
- warning(msg: string, handlers?: Handlers) {
- this.displayAndFadeout(msg, "warning", handlers);
- }
-
- info(msg: string, handlers?: Handlers) {
- this.displayAndFadeout(msg, "info", handlers);
- }
-}
\ No newline at end of file
diff --git a/client/src/lib/QueryParametersRetriever.ts b/client/src/lib/QueryParametersRetriever.ts
deleted file mode 100644
index a529adb6e..000000000
--- a/client/src/lib/QueryParametersRetriever.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-
-export class QueryParametersRetriever {
- static get(name: string, url?: string): string {
- if (!url) url = window.location.href;
- name = name.replace(/[\[\]]/g, "\\$&");
- const regex = new RegExp("[?&]" + name + "(=([^]*)|&|#|$)"),
- results = regex.exec(url);
- if (!results) return undefined;
- if (!results[2]) return "";
- return decodeURIComponent(results[2].replace(/\+/g, " "));
- }
-}
\ No newline at end of file
diff --git a/client/src/lib/SafeRedirect.ts b/client/src/lib/SafeRedirect.ts
deleted file mode 100644
index 7e7684b8a..000000000
--- a/client/src/lib/SafeRedirect.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { BelongToDomain } from "../../../shared/BelongToDomain";
-
-export function SafeRedirect(url: string, cb: () => void): void {
- const domain = window.location.hostname.split(".").slice(-2).join(".");
- if (url.startsWith("/") || BelongToDomain(url, domain)) {
- window.location.href = url;
- return;
- }
- cb();
-}
\ No newline at end of file
diff --git a/client/src/lib/firstfactor/FirstFactorValidator.ts b/client/src/lib/firstfactor/FirstFactorValidator.ts
deleted file mode 100644
index eaa496fdd..000000000
--- a/client/src/lib/firstfactor/FirstFactorValidator.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-import Endpoints = require("../../../../shared/api");
-import Constants = require("../../../../shared/constants");
-import Util = require("util");
-import UserMessages = require("../../../../shared/UserMessages");
-
-export function validate(username: string, password: string,
- keepMeLoggedIn: boolean, redirectUrl: string, $: JQueryStatic)
- : BluebirdPromise {
- return new BluebirdPromise(function (resolve, reject) {
- let url: string;
- if (redirectUrl != undefined) {
- const redirectParam = Util.format("%s=%s", Constants.REDIRECT_QUERY_PARAM, redirectUrl);
- url = Util.format("%s?%s", Endpoints.FIRST_FACTOR_POST, redirectParam);
- }
- else {
- url = Util.format("%s", Endpoints.FIRST_FACTOR_POST);
- }
-
- const data: any = {
- username: username,
- password: password,
- };
-
- if (keepMeLoggedIn) {
- data.keepMeLoggedIn = "true";
- }
-
- $.ajax({
- method: "POST",
- url: url,
- data: data
- })
- .done(function (body: any) {
- if (body && body.error) {
- reject(new Error(body.error));
- return;
- }
- resolve(body.redirect);
- })
- .fail(function (xhr: JQueryXHR, textStatus: string) {
- reject(new Error(UserMessages.AUTHENTICATION_FAILED));
- });
- });
-}
diff --git a/client/src/lib/firstfactor/UISelectors.ts b/client/src/lib/firstfactor/UISelectors.ts
deleted file mode 100644
index 0e971b3c3..000000000
--- a/client/src/lib/firstfactor/UISelectors.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-
-export const USERNAME_FIELD_ID = "#username";
-export const PASSWORD_FIELD_ID = "#password";
-export const SIGN_IN_BUTTON_ID = "#signin";
-export const KEEP_ME_LOGGED_IN_ID = "#keep_me_logged_in";
diff --git a/client/src/lib/firstfactor/index.ts b/client/src/lib/firstfactor/index.ts
deleted file mode 100644
index 24affee2d..000000000
--- a/client/src/lib/firstfactor/index.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import FirstFactorValidator = require("./FirstFactorValidator");
-import JSLogger = require("js-logger");
-import UISelectors = require("./UISelectors");
-import { Notifier } from "../Notifier";
-import { QueryParametersRetriever } from "../QueryParametersRetriever";
-import Constants = require("../../../../shared/constants");
-import Endpoints = require("../../../../shared/api");
-import UserMessages = require("../../../../shared/UserMessages");
-import { SafeRedirect } from "../SafeRedirect";
-
-export default function (window: Window, $: JQueryStatic,
- firstFactorValidator: typeof FirstFactorValidator, jslogger: typeof JSLogger) {
-
- const notifier = new Notifier(".notification", $);
-
- function onFormSubmitted() {
- const username: string = $(UISelectors.USERNAME_FIELD_ID).val() as string;
- const password: string = $(UISelectors.PASSWORD_FIELD_ID).val() as string;
- const keepMeLoggedIn: boolean = $(UISelectors.KEEP_ME_LOGGED_IN_ID).is(":checked");
-
- $("form").css("opacity", 0.5);
- $("input,button").attr("disabled", "true");
- $(UISelectors.SIGN_IN_BUTTON_ID).text("Please wait...");
-
- const redirectUrl = QueryParametersRetriever.get(Constants.REDIRECT_QUERY_PARAM);
- firstFactorValidator.validate(username, password, keepMeLoggedIn, redirectUrl, $)
- .then(onFirstFactorSuccess, onFirstFactorFailure);
- return false;
- }
-
- function onFirstFactorSuccess(redirectUrl: string) {
- SafeRedirect(redirectUrl, () => {
- notifier.error("Cannot redirect to an external domain.");
- });
- }
-
- function onFirstFactorFailure(err: Error) {
- $("input,button").removeAttr("disabled");
- $("form").css("opacity", 1);
- notifier.error(UserMessages.AUTHENTICATION_FAILED);
- $(UISelectors.PASSWORD_FIELD_ID).select();
- $(UISelectors.SIGN_IN_BUTTON_ID).text("Sign in");
- }
-
- $(window.document).ready(function () {
- $("form").on("submit", onFormSubmitted);
- });
-}
-
diff --git a/client/src/lib/reset-password/constants.ts b/client/src/lib/reset-password/constants.ts
deleted file mode 100644
index d48d4e67d..000000000
--- a/client/src/lib/reset-password/constants.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-
-export const FORM_SELECTOR = ".form-signin";
\ No newline at end of file
diff --git a/client/src/lib/reset-password/reset-password-form.ts b/client/src/lib/reset-password/reset-password-form.ts
deleted file mode 100644
index b94279cde..000000000
--- a/client/src/lib/reset-password/reset-password-form.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import BluebirdPromise = require("bluebird");
-
-import Endpoints = require("../../../../shared/api");
-import UserMessages = require("../../../../shared/UserMessages");
-
-import Constants = require("./constants");
-import { Notifier } from "../Notifier";
-
-export default function (window: Window, $: JQueryStatic) {
- const notifier = new Notifier(".notification", $);
-
- function modifyPassword(newPassword: string) {
- return new BluebirdPromise(function (resolve, reject) {
- $.post(Endpoints.RESET_PASSWORD_FORM_POST, {
- password: newPassword,
- })
- .done(function (body: any) {
- if (body && body.error) {
- reject(new Error(body.error));
- return;
- }
- resolve(body);
- })
- .fail(function (xhr, status) {
- reject(status);
- });
- });
- }
-
- function onFormSubmitted() {
- const password1 = $("#password1").val() as string;
- const password2 = $("#password2").val() as string;
-
- if (!password1 || !password2) {
- notifier.warning(UserMessages.MISSING_PASSWORD);
- return false;
- }
-
- if (password1 != password2) {
- notifier.warning(UserMessages.DIFFERENT_PASSWORDS);
- return false;
- }
-
- modifyPassword(password1)
- .then(function () {
- window.location.href = Endpoints.FIRST_FACTOR_GET;
- })
- .error(function () {
- notifier.error(UserMessages.RESET_PASSWORD_FAILED);
- });
- return false;
- }
-
- $(document).ready(function () {
- $(Constants.FORM_SELECTOR).on("submit", onFormSubmitted);
- });
-}
diff --git a/client/src/lib/reset-password/reset-password-request.ts b/client/src/lib/reset-password/reset-password-request.ts
deleted file mode 100644
index 846226d75..000000000
--- a/client/src/lib/reset-password/reset-password-request.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-
-import Endpoints = require("../../../../shared/api");
-import UserMessages = require("../../../../shared/UserMessages");
-import Constants = require("./constants");
-import jslogger = require("js-logger");
-import { Notifier } from "../Notifier";
-
-export default function (window: Window, $: JQueryStatic) {
- const notifier = new Notifier(".notification", $);
-
- function requestPasswordReset(username: string) {
- return new BluebirdPromise(function (resolve, reject) {
- $.get(Endpoints.RESET_PASSWORD_IDENTITY_START_GET, {
- userid: username,
- })
- .done(function (body: any) {
- if (body && body.error) {
- reject(new Error(body.error));
- return;
- }
- resolve();
- })
- .fail(function (xhr: JQueryXHR, textStatus: string) {
- reject(new Error(textStatus));
- });
- });
- }
-
- function onFormSubmitted() {
- const username = $("#username").val() as string;
-
- if (!username) {
- notifier.warning(UserMessages.MISSING_USERNAME);
- return;
- }
-
- requestPasswordReset(username)
- .then(function () {
- notifier.success(UserMessages.MAIL_SENT);
- setTimeout(function () {
- window.location.replace(Endpoints.FIRST_FACTOR_GET);
- }, 1000);
- })
- .error(function () {
- notifier.error(UserMessages.MAIL_NOT_SENT);
- });
- return false;
- }
-
- $(document).ready(function () {
- $(Constants.FORM_SELECTOR).on("submit", onFormSubmitted);
- });
-}
-
diff --git a/client/src/lib/secondfactor/TOTPValidator.ts b/client/src/lib/secondfactor/TOTPValidator.ts
deleted file mode 100644
index 5394139a6..000000000
--- a/client/src/lib/secondfactor/TOTPValidator.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-import Endpoints = require("../../../../shared/api");
-import { RedirectionMessage } from "../../../../shared/RedirectionMessage";
-import { ErrorMessage } from "../../../../shared/ErrorMessage";
-
-export function validate(token: string, $: JQueryStatic): BluebirdPromise {
- return new BluebirdPromise(function (resolve, reject) {
- $.ajax({
- url: Endpoints.SECOND_FACTOR_TOTP_POST,
- data: {
- token: token,
- },
- method: "POST",
- dataType: "json"
- } as JQueryAjaxSettings)
- .done(function (body: RedirectionMessage | ErrorMessage) {
- if (body && "error" in body) {
- reject(new Error((body as ErrorMessage).error));
- return;
- }
- resolve((body as RedirectionMessage).redirect);
- })
- .fail(function (xhr: JQueryXHR, textStatus: string) {
- reject(new Error(textStatus));
- });
- });
-}
\ No newline at end of file
diff --git a/client/src/lib/secondfactor/U2FValidator.ts b/client/src/lib/secondfactor/U2FValidator.ts
deleted file mode 100644
index 5812922f7..000000000
--- a/client/src/lib/secondfactor/U2FValidator.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import U2f = require("u2f");
-import U2fApi from "u2f-api";
-import BluebirdPromise = require("bluebird");
-import Endpoints = require("../../../../shared/api");
-import UserMessages = require("../../../../shared/UserMessages");
-import { INotifier } from "../INotifier";
-import { RedirectionMessage } from "../../../../shared/RedirectionMessage";
-import { ErrorMessage } from "../../../../shared/ErrorMessage";
-import GetPromised from "../GetPromised";
-
-function finishU2fAuthentication(responseData: U2fApi.SignResponse,
- $: JQueryStatic): BluebirdPromise {
- return new BluebirdPromise(function (resolve, reject) {
- $.ajax({
- url: Endpoints.SECOND_FACTOR_U2F_SIGN_POST,
- data: responseData,
- method: "POST",
- dataType: "json"
- } as JQueryAjaxSettings)
- .done(function (body: RedirectionMessage | ErrorMessage) {
- if (body && "error" in body) {
- reject(new Error((body as ErrorMessage).error));
- return;
- }
- resolve((body as RedirectionMessage).redirect);
- })
- .fail(function (xhr: JQueryXHR, textStatus: string) {
- reject(new Error(textStatus));
- });
- });
-}
-
-export function validate($: JQueryStatic): BluebirdPromise {
- return GetPromised($, Endpoints.SECOND_FACTOR_U2F_SIGN_REQUEST_GET, {},
- undefined, "json")
- .then(function (signRequest: U2f.Request) {
- return U2fApi.sign(signRequest, 60);
- })
- .then(function (signResponse: U2fApi.SignResponse) {
- return finishU2fAuthentication(signResponse, $);
- });
-}
diff --git a/client/src/lib/secondfactor/constants.ts b/client/src/lib/secondfactor/constants.ts
deleted file mode 100644
index 50bba7571..000000000
--- a/client/src/lib/secondfactor/constants.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-
-export const TOTP_FORM_SELECTOR = ".form-signin.totp";
-export const TOTP_TOKEN_SELECTOR = ".form-signin #token";
diff --git a/client/src/lib/secondfactor/index.ts b/client/src/lib/secondfactor/index.ts
deleted file mode 100644
index 279723dce..000000000
--- a/client/src/lib/secondfactor/index.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import TOTPValidator = require("./TOTPValidator");
-import U2FValidator = require("./U2FValidator");
-import ClientConstants = require("./constants");
-import { Notifier } from "../Notifier";
-import { QueryParametersRetriever } from "../QueryParametersRetriever";
-import UserMessages = require("../../../../shared/UserMessages");
-import SharedConstants = require("../../../../shared/constants");
-import { SafeRedirect } from "../SafeRedirect";
-
-export default function (window: Window, $: JQueryStatic) {
- const notifier = new Notifier(".notification", $);
-
- function onAuthenticationSuccess(serverRedirectUrl: string) {
- const queryRedirectUrl = QueryParametersRetriever.get(SharedConstants.REDIRECT_QUERY_PARAM);
- if (queryRedirectUrl) {
- SafeRedirect(queryRedirectUrl, () => {
- notifier.error(UserMessages.CANNOT_REDIRECT_TO_EXTERNAL_DOMAIN);
- });
- } else if (serverRedirectUrl) {
- SafeRedirect(serverRedirectUrl, () => {
- notifier.error(UserMessages.CANNOT_REDIRECT_TO_EXTERNAL_DOMAIN);
- });
- } else {
- notifier.success(UserMessages.AUTHENTICATION_SUCCEEDED);
- }
- }
-
- function onSecondFactorTotpSuccess(redirectUrl: string) {
- onAuthenticationSuccess(redirectUrl);
- }
-
- function onSecondFactorTotpFailure(err: Error) {
- notifier.error(UserMessages.AUTHENTICATION_TOTP_FAILED);
- }
-
- function onU2fAuthenticationSuccess(redirectUrl: string) {
- onAuthenticationSuccess(redirectUrl);
- }
-
- function onU2fAuthenticationFailure() {
- // TODO(clems4ever): we should not display this error message until a device
- // is registered.
- // notifier.error(UserMessages.AUTHENTICATION_U2F_FAILED);
- }
-
- function onTOTPFormSubmitted(): boolean {
- const token = $(ClientConstants.TOTP_TOKEN_SELECTOR).val() as string;
- TOTPValidator.validate(token, $)
- .then(onSecondFactorTotpSuccess)
- .catch(onSecondFactorTotpFailure);
- return false;
- }
-
- $(window.document).ready(function () {
- $(ClientConstants.TOTP_FORM_SELECTOR).on("submit", onTOTPFormSubmitted);
- U2FValidator.validate($)
- .then(onU2fAuthenticationSuccess, onU2fAuthenticationFailure);
- });
-}
\ No newline at end of file
diff --git a/client/src/lib/totp-register/totp-register.ts b/client/src/lib/totp-register/totp-register.ts
deleted file mode 100644
index 6a9aa7ee0..000000000
--- a/client/src/lib/totp-register/totp-register.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-
-import jslogger = require("js-logger");
-import UISelector = require("./ui-selector");
-
-export default function(window: Window, $: JQueryStatic) {
- jslogger.debug("Creating QRCode from OTPAuth url");
- const qrcode = $(UISelector.QRCODE_ID_SELECTOR);
- const val = qrcode.text();
- qrcode.empty();
- new (window as any).QRCode(qrcode.get(0), val);
-}
diff --git a/client/src/lib/totp-register/ui-selector.ts b/client/src/lib/totp-register/ui-selector.ts
deleted file mode 100644
index 9d43fabea..000000000
--- a/client/src/lib/totp-register/ui-selector.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-
-export const QRCODE_ID_SELECTOR = "#qrcode";
\ No newline at end of file
diff --git a/client/src/lib/u2f-register/u2f-register.ts b/client/src/lib/u2f-register/u2f-register.ts
deleted file mode 100644
index abf40ee05..000000000
--- a/client/src/lib/u2f-register/u2f-register.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-import U2f = require("u2f");
-import * as U2fApi from "u2f-api";
-import { Notifier } from "../Notifier";
-import GetPromised from "../GetPromised";
-import Endpoints = require("../../../../shared/api");
-import UserMessages = require("../../../../shared/UserMessages");
-import { RedirectionMessage } from "../../../../shared/RedirectionMessage";
-import { ErrorMessage } from "../../../../shared/ErrorMessage";
-import { SafeRedirect } from "../SafeRedirect";
-
-export default function (window: Window, $: JQueryStatic) {
- const notifier = new Notifier(".notification", $);
-
- function checkRegistration(regResponse: U2fApi.RegisterResponse): BluebirdPromise {
- return new BluebirdPromise(function (resolve, reject) {
- $.post(Endpoints.SECOND_FACTOR_U2F_REGISTER_POST, regResponse, undefined, "json")
- .done((body: RedirectionMessage | ErrorMessage) => {
- if (body && "error" in body) {
- reject(new Error((body as ErrorMessage).error));
- return;
- }
- resolve((body as RedirectionMessage).redirect);
- })
- .fail((xhr, status) => {
- reject(new Error("Failed to register device."));
- });
- });
- }
-
- function requestRegistration(): BluebirdPromise {
- return GetPromised($, Endpoints.SECOND_FACTOR_U2F_REGISTER_REQUEST_GET, {},
- undefined, "json")
- .then((registrationRequest: U2f.Request) => {
- return U2fApi.register(registrationRequest, [], 60);
- })
- .then((res) => checkRegistration(res));
- }
-
- function onRegisterFailure(err: Error) {
- notifier.error(UserMessages.REGISTRATION_U2F_FAILED);
- }
-
- $(document).ready(function () {
- requestRegistration()
- .then((redirectionUrl: string) => {
- SafeRedirect(redirectionUrl, () => {
- notifier.error(UserMessages.CANNOT_REDIRECT_TO_EXTERNAL_DOMAIN);
- });
- })
- .catch((err) => {
- onRegisterFailure(err);
- });
- });
-}
diff --git a/client/src/react-app-env.d.ts b/client/src/react-app-env.d.ts
new file mode 100644
index 000000000..6431bc5fc
--- /dev/null
+++ b/client/src/react-app-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/client/src/reducers/Portal/Authentication/actions.ts b/client/src/reducers/Portal/Authentication/actions.ts
new file mode 100644
index 000000000..ff0da5dc1
--- /dev/null
+++ b/client/src/reducers/Portal/Authentication/actions.ts
@@ -0,0 +1,20 @@
+import { createAction } from 'typesafe-actions';
+import {
+ FETCH_STATE_REQUEST,
+ FETCH_STATE_SUCCESS,
+ FETCH_STATE_FAILURE,
+} from "../../constants";
+import RemoteState from '../../../views/AuthenticationView/RemoteState';
+
+/* FETCH_STATE */
+export const fetchState = createAction(FETCH_STATE_REQUEST);
+export const fetchStateSuccess = createAction(FETCH_STATE_SUCCESS, resolve => {
+ return (state: RemoteState) => {
+ return resolve(state);
+ }
+});
+export const fetchStateFailure = createAction(FETCH_STATE_FAILURE, resolve => {
+ return (err: string) => {
+ return resolve(err);
+ }
+});
\ No newline at end of file
diff --git a/client/src/reducers/Portal/Authentication/reducer.ts b/client/src/reducers/Portal/Authentication/reducer.ts
new file mode 100644
index 000000000..c298ebe10
--- /dev/null
+++ b/client/src/reducers/Portal/Authentication/reducer.ts
@@ -0,0 +1,43 @@
+
+import * as Actions from './actions';
+import { ActionType, getType } from 'typesafe-actions';
+import RemoteState from '../../../views/AuthenticationView/RemoteState';
+
+export type Action = ActionType;
+
+interface State {
+ remoteState: RemoteState | null;
+ remoteStateLoading: boolean;
+ remoteStateError: string | null;
+}
+
+const initialState: State = {
+ remoteState: null,
+ remoteStateLoading: false,
+ remoteStateError: null,
+}
+
+export default (state = initialState, action: Action): State => {
+ switch(action.type) {
+ case getType(Actions.fetchState):
+ return {
+ ...state,
+ remoteState: null,
+ remoteStateError: null,
+ remoteStateLoading: true,
+ };
+ case getType(Actions.fetchStateSuccess):
+ return {
+ ...state,
+ remoteState: action.payload,
+ remoteStateLoading: false,
+ };
+ case getType(Actions.fetchStateFailure):
+ return {
+ ...state,
+ remoteStateError: action.payload,
+ remoteStateLoading: false,
+ };
+ }
+ return state;
+}
\ No newline at end of file
diff --git a/client/src/reducers/Portal/FirstFactor/actions.ts b/client/src/reducers/Portal/FirstFactor/actions.ts
new file mode 100644
index 000000000..cbbf2cdd2
--- /dev/null
+++ b/client/src/reducers/Portal/FirstFactor/actions.ts
@@ -0,0 +1,13 @@
+import { createAction } from 'typesafe-actions';
+import {
+ AUTHENTICATE_REQUEST,
+ AUTHENTICATE_SUCCESS,
+ AUTHENTICATE_FAILURE
+} from "../../constants";
+
+/* AUTHENTICATE_REQUEST */
+export const authenticate = createAction(AUTHENTICATE_REQUEST);
+export const authenticateSuccess = createAction(AUTHENTICATE_SUCCESS);
+export const authenticateFailure = createAction(AUTHENTICATE_FAILURE, resolve => {
+ return (error: string) => resolve(error);
+});
diff --git a/client/src/reducers/Portal/FirstFactor/reducer.ts b/client/src/reducers/Portal/FirstFactor/reducer.ts
new file mode 100644
index 000000000..f7aa685db
--- /dev/null
+++ b/client/src/reducers/Portal/FirstFactor/reducer.ts
@@ -0,0 +1,49 @@
+
+import * as Actions from './actions';
+import { ActionType, getType } from 'typesafe-actions';
+
+export type FirstFactorAction = ActionType;
+
+enum Result {
+ NONE,
+ SUCCESS,
+ FAILURE,
+}
+
+interface FirstFactorState {
+ lastResult: Result;
+ loading: boolean;
+ error: string | null;
+}
+
+const firstFactorInitialState: FirstFactorState = {
+ lastResult: Result.NONE,
+ loading: false,
+ error: null,
+}
+
+export default (state = firstFactorInitialState, action: FirstFactorAction): FirstFactorState => {
+ switch(action.type) {
+ case getType(Actions.authenticate):
+ return {
+ ...state,
+ loading: true,
+ error: null
+ };
+ case getType(Actions.authenticateSuccess):
+ return {
+ ...state,
+ lastResult: Result.SUCCESS,
+ loading: false,
+ error: null,
+ };
+ case getType(Actions.authenticateFailure):
+ return {
+ ...state,
+ lastResult: Result.FAILURE,
+ loading: false,
+ error: action.payload,
+ };
+ }
+ return state;
+}
\ No newline at end of file
diff --git a/client/src/reducers/Portal/ForgotPassword/actions.ts b/client/src/reducers/Portal/ForgotPassword/actions.ts
new file mode 100644
index 000000000..9182dfa93
--- /dev/null
+++ b/client/src/reducers/Portal/ForgotPassword/actions.ts
@@ -0,0 +1,13 @@
+import { createAction } from 'typesafe-actions';
+import {
+ FORGOT_PASSWORD_REQUEST,
+ FORGOT_PASSWORD_SUCCESS,
+ FORGOT_PASSWORD_FAILURE
+} from "../../constants";
+
+/* AUTHENTICATE_REQUEST */
+export const forgotPasswordRequest = createAction(FORGOT_PASSWORD_REQUEST);
+export const forgotPasswordSuccess = createAction(FORGOT_PASSWORD_SUCCESS);
+export const forgotPasswordFailure = createAction(FORGOT_PASSWORD_FAILURE, resolve => {
+ return (error: string) => resolve(error);
+});
diff --git a/client/src/reducers/Portal/ForgotPassword/reducer.ts b/client/src/reducers/Portal/ForgotPassword/reducer.ts
new file mode 100644
index 000000000..d210eb63a
--- /dev/null
+++ b/client/src/reducers/Portal/ForgotPassword/reducer.ts
@@ -0,0 +1,44 @@
+
+import * as Actions from './actions';
+import { ActionType, getType } from 'typesafe-actions';
+
+export type Action = ActionType;
+
+
+interface State {
+ loading: boolean;
+ success: boolean | null;
+ error: string | null;
+}
+
+const initialState: State = {
+ loading: false,
+ success: null,
+ error: null,
+}
+
+export default (state = initialState, action: Action): State => {
+ switch(action.type) {
+ case getType(Actions.forgotPasswordRequest):
+ return {
+ ...state,
+ loading: true,
+ error: null
+ };
+ case getType(Actions.forgotPasswordSuccess):
+ return {
+ ...state,
+ success: true,
+ loading: false,
+ error: null,
+ };
+ case getType(Actions.forgotPasswordFailure):
+ return {
+ ...state,
+ success: false,
+ loading: false,
+ error: action.payload,
+ };
+ }
+ return state;
+}
\ No newline at end of file
diff --git a/client/src/reducers/Portal/OneTimePasswordRegistration/actions.ts b/client/src/reducers/Portal/OneTimePasswordRegistration/actions.ts
new file mode 100644
index 000000000..f9a90dba3
--- /dev/null
+++ b/client/src/reducers/Portal/OneTimePasswordRegistration/actions.ts
@@ -0,0 +1,13 @@
+import { createAction } from "typesafe-actions";
+import { GENERATE_TOTP_SECRET_REQUEST, GENERATE_TOTP_SECRET_SUCCESS, GENERATE_TOTP_SECRET_FAILURE } from "../../constants";
+import { Secret } from "../../../views/OneTimePasswordRegistrationView/Secret";
+
+
+/* GENERATE_TOTP_SECRET_REQUEST */
+export const generateTotpSecret = createAction(GENERATE_TOTP_SECRET_REQUEST);
+export const generateTotpSecretSuccess = createAction(GENERATE_TOTP_SECRET_SUCCESS, resolve => {
+ return (secret: Secret) => resolve(secret);
+});
+export const generateTotpSecretFailure = createAction(GENERATE_TOTP_SECRET_FAILURE, resolve => {
+ return (error: string) => resolve(error);
+});
diff --git a/client/src/reducers/Portal/OneTimePasswordRegistration/reducer.ts b/client/src/reducers/Portal/OneTimePasswordRegistration/reducer.ts
new file mode 100644
index 000000000..0ac990418
--- /dev/null
+++ b/client/src/reducers/Portal/OneTimePasswordRegistration/reducer.ts
@@ -0,0 +1,41 @@
+import { ActionType, getType } from "typesafe-actions";
+import * as Actions from './actions';
+import { Secret } from "../../../views/OneTimePasswordRegistrationView/Secret";
+
+type OneTimePasswordRegistrationAction = ActionType
+
+export interface OneTimePasswordRegistrationState {
+ loading: boolean;
+ error: string | null;
+ secret: Secret | null;
+}
+
+let oneTimePasswordRegistrationInitialState: OneTimePasswordRegistrationState = {
+ loading: true,
+ error: null,
+ secret: null,
+}
+
+export default (state = oneTimePasswordRegistrationInitialState, action: OneTimePasswordRegistrationAction): OneTimePasswordRegistrationState => {
+ switch(action.type) {
+ case getType(Actions.generateTotpSecret):
+ return {
+ loading: true,
+ error: null,
+ secret: null,
+ };
+ case getType(Actions.generateTotpSecretSuccess):
+ return {
+ ...state,
+ loading: false,
+ secret: action.payload,
+ }
+ case getType(Actions.generateTotpSecretFailure):
+ return {
+ ...state,
+ loading: false,
+ error: action.payload,
+ }
+ }
+ return state;
+}
\ No newline at end of file
diff --git a/client/src/reducers/Portal/ResetPassword/actions.ts b/client/src/reducers/Portal/ResetPassword/actions.ts
new file mode 100644
index 000000000..9220ec435
--- /dev/null
+++ b/client/src/reducers/Portal/ResetPassword/actions.ts
@@ -0,0 +1,9 @@
+import { createAction } from 'typesafe-actions';
+import { RESET_PASSWORD_REQUEST, RESET_PASSWORD_SUCCESS, RESET_PASSWORD_FAILURE } from "../../constants";
+
+/* AUTHENTICATE_REQUEST */
+export const resetPasswordRequest = createAction(RESET_PASSWORD_REQUEST);
+export const resetPasswordSuccess = createAction(RESET_PASSWORD_SUCCESS);
+export const resetPasswordFailure = createAction(RESET_PASSWORD_FAILURE, resolve => {
+ return (error: string) => resolve(error);
+});
diff --git a/client/src/reducers/Portal/ResetPassword/reducer.ts b/client/src/reducers/Portal/ResetPassword/reducer.ts
new file mode 100644
index 000000000..8d415ac9e
--- /dev/null
+++ b/client/src/reducers/Portal/ResetPassword/reducer.ts
@@ -0,0 +1,44 @@
+
+import * as Actions from './actions';
+import { ActionType, getType } from 'typesafe-actions';
+
+export type Action = ActionType;
+
+
+interface State {
+ loading: boolean;
+ success: boolean | null;
+ error: string | null;
+}
+
+const initialState: State = {
+ loading: false,
+ success: null,
+ error: null,
+}
+
+export default (state = initialState, action: Action): State => {
+ switch(action.type) {
+ case getType(Actions.resetPasswordRequest):
+ return {
+ ...state,
+ loading: true,
+ error: null
+ };
+ case getType(Actions.resetPasswordSuccess):
+ return {
+ ...state,
+ success: true,
+ loading: false,
+ error: null,
+ };
+ case getType(Actions.resetPasswordFailure):
+ return {
+ ...state,
+ success: false,
+ loading: false,
+ error: action.payload,
+ };
+ }
+ return state;
+}
\ No newline at end of file
diff --git a/client/src/reducers/Portal/SecondFactor/actions.ts b/client/src/reducers/Portal/SecondFactor/actions.ts
new file mode 100644
index 000000000..c934824ef
--- /dev/null
+++ b/client/src/reducers/Portal/SecondFactor/actions.ts
@@ -0,0 +1,36 @@
+import { createAction } from "typesafe-actions";
+import {
+ LOGOUT_REQUEST,
+ LOGOUT_SUCCESS,
+ LOGOUT_FAILURE,
+ SECURITY_KEY_SIGN,
+ SECURITY_KEY_SIGN_SUCCESS,
+ SECURITY_KEY_SIGN_FAILURE,
+ SET_SECURITY_KEY_SUPPORTED,
+ ONE_TIME_PASSWORD_VERIFICATION_REQUEST,
+ ONE_TIME_PASSWORD_VERIFICATION_SUCCESS,
+ ONE_TIME_PASSWORD_VERIFICATION_FAILURE
+} from "../../constants";
+
+export const setSecurityKeySupported = createAction(SET_SECURITY_KEY_SUPPORTED, resolve => {
+ return (supported: boolean) => resolve(supported);
+})
+
+export const securityKeySign = createAction(SECURITY_KEY_SIGN);
+export const securityKeySignSuccess = createAction(SECURITY_KEY_SIGN_SUCCESS);
+export const securityKeySignFailure = createAction(SECURITY_KEY_SIGN_FAILURE, resolve => {
+ return (error: string) => resolve(error);
+});
+
+export const oneTimePasswordVerification = createAction(ONE_TIME_PASSWORD_VERIFICATION_REQUEST);
+export const oneTimePasswordVerificationSuccess = createAction(ONE_TIME_PASSWORD_VERIFICATION_SUCCESS);
+export const oneTimePasswordVerificationFailure = createAction(ONE_TIME_PASSWORD_VERIFICATION_FAILURE, resolve => {
+ return (err: string) => resolve(err);
+});
+
+
+export const logout = createAction(LOGOUT_REQUEST);
+export const logoutSuccess = createAction(LOGOUT_SUCCESS);
+export const logoutFailure = createAction(LOGOUT_FAILURE, resolve => {
+ return (error: string) => resolve(error);
+});
diff --git a/client/src/reducers/Portal/SecondFactor/reducer.ts b/client/src/reducers/Portal/SecondFactor/reducer.ts
new file mode 100644
index 000000000..86a446122
--- /dev/null
+++ b/client/src/reducers/Portal/SecondFactor/reducer.ts
@@ -0,0 +1,104 @@
+
+import * as Actions from './actions';
+import { ActionType, getType, StateType } from 'typesafe-actions';
+
+export type SecondFactorAction = ActionType;
+
+interface SecondFactorState {
+ logoutLoading: boolean;
+ logoutSuccess: boolean | null;
+ error: string | null;
+
+ securityKeySupported: boolean;
+ securityKeySignLoading: boolean;
+ securityKeySignSuccess: boolean | null;
+
+ oneTimePasswordVerificationLoading: boolean,
+ oneTimePasswordVerificationSuccess: boolean | null,
+ oneTimePasswordVerificationError: string | null,
+}
+
+const secondFactorInitialState: SecondFactorState = {
+ logoutLoading: false,
+ logoutSuccess: null,
+ error: null,
+
+ securityKeySupported: false,
+ securityKeySignLoading: false,
+ securityKeySignSuccess: null,
+
+ oneTimePasswordVerificationLoading: false,
+ oneTimePasswordVerificationError: null,
+ oneTimePasswordVerificationSuccess: null,
+}
+
+export type PortalState = StateType;
+
+export default (state = secondFactorInitialState, action: SecondFactorAction): SecondFactorState => {
+ switch(action.type) {
+ case getType(Actions.logout):
+ return {
+ ...state,
+ logoutLoading: true,
+ logoutSuccess: null,
+ error: null,
+ };
+ case getType(Actions.logoutSuccess):
+ return {
+ ...state,
+ logoutLoading: false,
+ logoutSuccess: true,
+ };
+ case getType(Actions.logoutFailure):
+ return {
+ ...state,
+ logoutLoading: false,
+ error: action.payload,
+ }
+
+ case getType(Actions.securityKeySign):
+ return {
+ ...state,
+ securityKeySignLoading: true,
+ securityKeySignSuccess: false,
+ };
+ case getType(Actions.securityKeySignSuccess):
+ return {
+ ...state,
+ securityKeySignLoading: false,
+ securityKeySignSuccess: true,
+ };
+ case getType(Actions.securityKeySignFailure):
+ return {
+ ...state,
+ securityKeySignLoading: false,
+ securityKeySignSuccess: false,
+ };
+
+ case getType(Actions.setSecurityKeySupported):
+ return {
+ ...state,
+ securityKeySupported: action.payload,
+ };
+
+ case getType(Actions.oneTimePasswordVerification):
+ return {
+ ...state,
+ oneTimePasswordVerificationLoading: true,
+ oneTimePasswordVerificationError: null,
+ }
+ case getType(Actions.oneTimePasswordVerificationSuccess):
+ return {
+ ...state,
+ oneTimePasswordVerificationLoading: false,
+ oneTimePasswordVerificationSuccess: true,
+ }
+ case getType(Actions.oneTimePasswordVerificationFailure):
+ return {
+ ...state,
+ oneTimePasswordVerificationLoading: false,
+ oneTimePasswordVerificationError: action.payload,
+ }
+ }
+ return state;
+}
\ No newline at end of file
diff --git a/client/src/reducers/Portal/SecurityKeyRegistration/actions.ts b/client/src/reducers/Portal/SecurityKeyRegistration/actions.ts
new file mode 100644
index 000000000..8ee3b4148
--- /dev/null
+++ b/client/src/reducers/Portal/SecurityKeyRegistration/actions.ts
@@ -0,0 +1,8 @@
+import { createAction } from "typesafe-actions";
+import { REGISTER_SECURITY_KEY_REQUEST, REGISTER_SECURITY_KEY_SUCCESS, REGISTER_SECURITY_KEY_FAILURE } from "../../constants";
+
+export const registerSecurityKey = createAction(REGISTER_SECURITY_KEY_REQUEST);
+export const registerSecurityKeySuccess = createAction(REGISTER_SECURITY_KEY_SUCCESS);
+export const registerSecurityKeyFailure = createAction(REGISTER_SECURITY_KEY_FAILURE, resolve => {
+ return (error: string) => resolve(error);
+});
diff --git a/client/src/reducers/Portal/SecurityKeyRegistration/reducer.ts b/client/src/reducers/Portal/SecurityKeyRegistration/reducer.ts
new file mode 100644
index 000000000..00ff3c530
--- /dev/null
+++ b/client/src/reducers/Portal/SecurityKeyRegistration/reducer.ts
@@ -0,0 +1,36 @@
+import { ActionType, getType } from "typesafe-actions";
+import * as Actions from './actions';
+
+type SecurityKeyRegistrationAction = ActionType
+
+export interface SecurityKeyRegistrationState {
+ error: string | null;
+ success: boolean | null;
+}
+
+let securityKeyRegistrationInitialState: SecurityKeyRegistrationState = {
+ error: null,
+ success: null,
+}
+
+export default (state = securityKeyRegistrationInitialState, action: SecurityKeyRegistrationAction): SecurityKeyRegistrationState => {
+ switch(action.type) {
+ case getType(Actions.registerSecurityKey):
+ return {
+ success: null,
+ error: null,
+ };
+ case getType(Actions.registerSecurityKeySuccess):
+ return {
+ ...state,
+ success: true,
+ };
+ case getType(Actions.registerSecurityKeyFailure):
+ return {
+ ...state,
+ success: false,
+ error: action.payload,
+ };
+ }
+ return state;
+}
\ No newline at end of file
diff --git a/client/src/reducers/Portal/index.ts b/client/src/reducers/Portal/index.ts
new file mode 100644
index 000000000..65265caa9
--- /dev/null
+++ b/client/src/reducers/Portal/index.ts
@@ -0,0 +1,28 @@
+import { combineReducers } from 'redux';
+
+import FirstFactorReducer from './FirstFactor/reducer';
+import SecondFactorReducer from './SecondFactor/reducer';
+import OneTimePasswordRegistrationReducer from './OneTimePasswordRegistration/reducer';
+import SecurityKeyRegistrationReducer from './SecurityKeyRegistration/reducer';
+import AuthenticationReducer from './Authentication/reducer';
+import ForgotPasswordReducer from './ForgotPassword/reducer';
+import ResetPasswordReducer from './ResetPassword/reducer';
+
+import { connectRouter } from 'connected-react-router'
+import { History } from 'history';
+
+function reducer(history: History) {
+ return combineReducers({
+ router: connectRouter(history),
+ authentication: AuthenticationReducer,
+ firstFactor: FirstFactorReducer,
+ secondFactor: SecondFactorReducer,
+ oneTimePasswordRegistration: OneTimePasswordRegistrationReducer,
+ securityKeyRegistration: SecurityKeyRegistrationReducer,
+ forgotPassword: ForgotPasswordReducer,
+ resetPassword: ResetPasswordReducer,
+ });
+}
+
+
+export default reducer;
\ No newline at end of file
diff --git a/client/src/reducers/constants.ts b/client/src/reducers/constants.ts
new file mode 100644
index 000000000..232e13ce7
--- /dev/null
+++ b/client/src/reducers/constants.ts
@@ -0,0 +1,44 @@
+
+export const FETCH_STATE_REQUEST = '@portal/fetch_state_request';
+export const FETCH_STATE_SUCCESS = '@portal/fetch_state_success';
+export const FETCH_STATE_FAILURE = '@portal/fetch_state_failure';
+
+// AUTHENTICATION PROCESS
+export const AUTHENTICATE_REQUEST = '@portal/authenticate_request';
+export const AUTHENTICATE_SUCCESS = '@portal/authenticate_success';
+export const AUTHENTICATE_FAILURE = '@portal/authenticate_failure';
+
+// SECOND FACTOR PAGE
+export const SET_SECURITY_KEY_SUPPORTED = '@portal/second_factor/set_security_key_supported';
+
+export const SECURITY_KEY_SIGN = '@portal/second_factor/security_key_sign';
+export const SECURITY_KEY_SIGN_SUCCESS = '@portal/second_factor/security_key_sign_success';
+export const SECURITY_KEY_SIGN_FAILURE = '@portal/second_factor/security_key_sign_failure';
+
+export const ONE_TIME_PASSWORD_VERIFICATION_REQUEST = '@portal/second_factor/one_time_password_verification_request';
+export const ONE_TIME_PASSWORD_VERIFICATION_SUCCESS = '@portal/second_factor/one_time_password_verification_success';
+export const ONE_TIME_PASSWORD_VERIFICATION_FAILURE = '@portal/second_factor/one_time_password_verification_failure';
+
+export const LOGOUT_REQUEST = '@portal/logout_request';
+export const LOGOUT_SUCCESS = '@portal/logout_success';
+export const LOGOUT_FAILURE = '@portal/logout_failure';
+
+// TOTP REGISTRATION
+export const GENERATE_TOTP_SECRET_REQUEST = '@portal/generate_totp_secret_request';
+export const GENERATE_TOTP_SECRET_SUCCESS = '@portal/generate_totp_secret_success';
+export const GENERATE_TOTP_SECRET_FAILURE = '@portal/generate_totp_secret_failure';
+
+// U2F REGISTRATION
+export const REGISTER_SECURITY_KEY_REQUEST = '@portal/security_key_registration/register_request';
+export const REGISTER_SECURITY_KEY_SUCCESS = '@portal/security_key_registration/register_success';
+export const REGISTER_SECURITY_KEY_FAILURE = '@portal/security_key_registration/register_failed';
+
+// FORGOT PASSWORD
+export const FORGOT_PASSWORD_REQUEST = '@portal/forgot_password/forgot_password_request';
+export const FORGOT_PASSWORD_SUCCESS = '@portal/forgot_password/forgot_password_success';
+export const FORGOT_PASSWORD_FAILURE = '@portal/forgot_password/forgot_password_failure';
+
+// FORGOT PASSWORD
+export const RESET_PASSWORD_REQUEST = '@portal/forgot_password/reset_password_request';
+export const RESET_PASSWORD_SUCCESS = '@portal/forgot_password/reset_password_success';
+export const RESET_PASSWORD_FAILURE = '@portal/forgot_password/reset_password_failure';
\ No newline at end of file
diff --git a/client/src/reducers/index.ts b/client/src/reducers/index.ts
new file mode 100644
index 000000000..8458f5230
--- /dev/null
+++ b/client/src/reducers/index.ts
@@ -0,0 +1,12 @@
+import PortalReducer from './Portal';
+import { StateType } from 'typesafe-actions';
+
+function getReturnType (f: (...args: any[]) => R): R {
+ return null!;
+}
+
+const t = getReturnType(PortalReducer)
+
+export type RootState = StateType;
+
+export default PortalReducer;
\ No newline at end of file
diff --git a/client/src/routes/index.ts b/client/src/routes/index.ts
new file mode 100644
index 000000000..731c0a05f
--- /dev/null
+++ b/client/src/routes/index.ts
@@ -0,0 +1,6 @@
+import PortalLayout from "../containers/layouts/PortalLayout/PortalLayout";
+
+export const routes = [{
+ path: '/',
+ component: PortalLayout
+}];
\ No newline at end of file
diff --git a/client/src/routes/routes.ts b/client/src/routes/routes.ts
new file mode 100644
index 000000000..7fe058ac3
--- /dev/null
+++ b/client/src/routes/routes.ts
@@ -0,0 +1,32 @@
+import ConfirmationSentView from "../views/ConfirmationSentView/ConfirmationSentView";
+import OneTimePasswordRegistrationView from "../containers/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView";
+import SecurityKeyRegistrationView from "../containers/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView";
+import ForgotPasswordView from "../containers/views/ForgotPasswordView/ForgotPasswordView";
+import ResetPasswordView from "../containers/views/ResetPasswordView/ResetPasswordView";
+import AuthenticationView from "../containers/views/AuthenticationView/AuthenticationView";
+
+export const routes = [{
+ path: '/',
+ title: 'Sign in',
+ component: AuthenticationView,
+}, {
+ path: '/confirmation-sent',
+ title: 'e-mail sent',
+ component: ConfirmationSentView
+}, {
+ path: '/one-time-password-registration',
+ title: 'One-time password',
+ component: OneTimePasswordRegistrationView,
+}, {
+ path: '/security-key-registration',
+ title: 'Security key',
+ component: SecurityKeyRegistrationView,
+}, {
+ path: '/forgot-password',
+ title: 'Forgot password',
+ component: ForgotPasswordView,
+}, {
+ path: '/reset-password',
+ title: 'Reset password',
+ component: ResetPasswordView,
+}]
\ No newline at end of file
diff --git a/client/src/serviceWorker.ts b/client/src/serviceWorker.ts
new file mode 100644
index 000000000..86af82ce8
--- /dev/null
+++ b/client/src/serviceWorker.ts
@@ -0,0 +1,135 @@
+// This optional code is used to register a service worker.
+// register() is not called by default.
+
+// This lets the app load faster on subsequent visits in production, and gives
+// it offline capabilities. However, it also means that developers (and users)
+// will only see deployed updates on subsequent visits to a page, after all the
+// existing tabs open on the page have been closed, since previously cached
+// resources are updated in the background.
+
+// To learn more about the benefits of this model and instructions on how to
+// opt-in, read http://bit.ly/CRA-PWA
+
+const isLocalhost = Boolean(
+ window.location.hostname === 'localhost' ||
+ // [::1] is the IPv6 localhost address.
+ window.location.hostname === '[::1]' ||
+ // 127.0.0.1/8 is considered localhost for IPv4.
+ window.location.hostname.match(
+ /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
+ )
+);
+
+export function register(config: any) {
+ if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
+ // The URL constructor is available in all browsers that support SW.
+ const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
+ if (publicUrl.origin !== window.location.origin) {
+ // Our service worker won't work if PUBLIC_URL is on a different origin
+ // from what our page is served on. This might happen if a CDN is used to
+ // serve assets; see https://github.com/facebook/create-react-app/issues/2374
+ return;
+ }
+
+ window.addEventListener('load', () => {
+ const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
+
+ if (isLocalhost) {
+ // This is running on localhost. Let's check if a service worker still exists or not.
+ checkValidServiceWorker(swUrl, config);
+
+ // Add some additional logging to localhost, pointing developers to the
+ // service worker/PWA documentation.
+ navigator.serviceWorker.ready.then(() => {
+ console.log(
+ 'This web app is being served cache-first by a service ' +
+ 'worker. To learn more, visit http://bit.ly/CRA-PWA'
+ );
+ });
+ } else {
+ // Is not localhost. Just register service worker
+ registerValidSW(swUrl, config);
+ }
+ });
+ }
+}
+
+function registerValidSW(swUrl: any, config: any) {
+ navigator.serviceWorker
+ .register(swUrl)
+ .then(registration => {
+ registration.onupdatefound = () => {
+ const installingWorker = registration.installing;
+ if (installingWorker == null) {
+ return;
+ }
+ installingWorker.onstatechange = () => {
+ if (installingWorker.state === 'installed') {
+ if (navigator.serviceWorker.controller) {
+ // At this point, the updated precached content has been fetched,
+ // but the previous service worker will still serve the older
+ // content until all client tabs are closed.
+ console.log(
+ 'New content is available and will be used when all ' +
+ 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'
+ );
+
+ // Execute callback
+ if (config && config.onUpdate) {
+ config.onUpdate(registration);
+ }
+ } else {
+ // At this point, everything has been precached.
+ // It's the perfect time to display a
+ // "Content is cached for offline use." message.
+ console.log('Content is cached for offline use.');
+
+ // Execute callback
+ if (config && config.onSuccess) {
+ config.onSuccess(registration);
+ }
+ }
+ }
+ };
+ };
+ })
+ .catch(error => {
+ console.error('Error during service worker registration:', error);
+ });
+}
+
+function checkValidServiceWorker(swUrl: any, config: any) {
+ // Check if the service worker can be found. If it can't reload the page.
+ fetch(swUrl)
+ .then(response => {
+ // Ensure service worker exists, and that we really are getting a JS file.
+ const contentType = response.headers.get('content-type');
+ if (
+ response.status === 404 ||
+ (contentType != null && contentType.indexOf('javascript') === -1)
+ ) {
+ // No service worker found. Probably a different app. Reload the page.
+ navigator.serviceWorker.ready.then(registration => {
+ registration.unregister().then(() => {
+ window.location.reload();
+ });
+ });
+ } else {
+ // Service worker found. Proceed as normal.
+ registerValidSW(swUrl, config);
+ }
+ })
+ .catch(() => {
+ console.log(
+ 'No internet connection found. App is running in offline mode.'
+ );
+ });
+}
+
+export function unregister() {
+ if ('serviceWorker' in navigator) {
+ navigator.serviceWorker.ready.then(registration => {
+ registration.unregister();
+ });
+ }
+}
diff --git a/client/src/services/AutheliaService.ts b/client/src/services/AutheliaService.ts
new file mode 100644
index 000000000..ed77fdff2
--- /dev/null
+++ b/client/src/services/AutheliaService.ts
@@ -0,0 +1,146 @@
+import RemoteState from "../views/AuthenticationView/RemoteState";
+import u2fApi, { SignRequest } from "u2f-api";
+
+async function fetchSafe(url: string, options?: RequestInit) {
+ return fetch(url, options)
+ .then(async (res) => {
+ if (res.status !== 200 && res.status !== 204) {
+ throw new Error('Status code ' + res.status);
+ }
+ return res;
+ });
+}
+
+/**
+ * Fetch current authentication state.
+ */
+export async function fetchState() {
+ return fetchSafe('/api/state')
+ .then(async (res) => {
+ const body = await res.json() as RemoteState;
+ return body;
+ });
+}
+
+export async function postFirstFactorAuth(username: string, password: string,
+ rememberMe: boolean, redirectionUrl: string | null) {
+
+ const headers: Record = {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ }
+
+ if (redirectionUrl) {
+ headers['X-Target-Url'] = redirectionUrl;
+ }
+
+ return fetchSafe('/api/firstfactor', {
+ method: 'POST',
+ headers: headers,
+ body: JSON.stringify({
+ username: username,
+ password: password,
+ keepMeLoggedIn: rememberMe,
+ })
+ });
+}
+
+export async function postLogout() {
+ return fetchSafe('/api/logout', {
+ method: 'POST',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ })
+}
+
+export async function startU2FRegistrationIdentityProcess() {
+ return fetchSafe('/api/secondfactor/u2f/identity/start', {
+ method: 'POST',
+ });
+}
+
+export async function startTOTPRegistrationIdentityProcess() {
+ return fetchSafe('/api/secondfactor/totp/identity/start', {
+ method: 'POST',
+ });
+}
+
+export async function requestSigning() {
+ return fetchSafe('/api/u2f/sign_request')
+ .then(async (res) => {
+ const body = await res.json();
+ return body as SignRequest;
+ });
+}
+
+export async function completeSecurityKeySigning(response: u2fApi.SignResponse) {
+ return fetchSafe('/api/u2f/sign', {
+ method: 'POST',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(response),
+ });
+}
+
+export async function verifyTotpToken(token: string) {
+ return fetchSafe('/api/totp', {
+ method: 'POST',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({token}),
+ })
+}
+
+export async function initiatePasswordResetIdentityValidation(username: string) {
+ return fetchSafe('/api/password-reset/identity/start', {
+ method: 'POST',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({username})
+ });
+}
+
+export async function completePasswordResetIdentityValidation(token: string) {
+ return fetch(`/api/password-reset/identity/finish?token=${token}`, {
+ method: 'POST',
+ });
+}
+
+export async function resetPassword(newPassword: string) {
+ return fetchSafe('/api/password-reset', {
+ method: 'POST',
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({password: newPassword})
+ });
+}
+
+export async function checkRedirection(url: string) {
+ const res = await fetch('/api/redirect', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({url})
+ })
+
+ if (res.status !== 200) {
+ throw new Error('Status code ' + res.status);
+ }
+
+ const text = await res.text();
+ if (text !== 'OK') {
+ throw new Error('Cannot redirect');
+ }
+ return;
+}
\ No newline at end of file
diff --git a/client/src/thirdparties/qrcode.min.js b/client/src/thirdparties/qrcode.min.js
deleted file mode 100644
index 993e88f39..000000000
--- a/client/src/thirdparties/qrcode.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push(' ');g.push(" ")}g.push("
"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
diff --git a/client/src/types/AuthenticationLevel.ts b/client/src/types/AuthenticationLevel.ts
new file mode 100644
index 000000000..550cc947c
--- /dev/null
+++ b/client/src/types/AuthenticationLevel.ts
@@ -0,0 +1,7 @@
+enum AuthenticationLevel {
+ NOT_AUTHENTICATED = 0,
+ ONE_FACTOR = 1,
+ TWO_FACTOR = 2
+};
+
+export default AuthenticationLevel;
\ No newline at end of file
diff --git a/client/src/views/AuthenticationView/AuthenticationView.tsx b/client/src/views/AuthenticationView/AuthenticationView.tsx
new file mode 100644
index 000000000..c6bba5d85
--- /dev/null
+++ b/client/src/views/AuthenticationView/AuthenticationView.tsx
@@ -0,0 +1,49 @@
+import React, { Component } from "react";
+import AlreadyAuthenticated from "../../containers/components/AlreadyAuthenticated/AlreadyAuthenticated";
+import FirstFactorForm from "../../containers/components/FirstFactorForm/FirstFactorForm";
+import SecondFactorForm from "../../containers/components/SecondFactorForm/SecondFactorForm";
+import RemoteState from "./RemoteState";
+import { RouterProps, RouteProps } from "react-router";
+
+export enum Stage {
+ FIRST_FACTOR,
+ SECOND_FACTOR,
+ ALREADY_AUTHENTICATED,
+}
+
+export interface OwnProps extends RouteProps {}
+
+export interface StateProps {
+ stage: Stage;
+ remoteState: RemoteState | null;
+ redirectionUrl: string | null;
+}
+
+export interface DispatchProps {
+ onInit: () => void;
+}
+
+export type Props = StateProps & DispatchProps & RouterProps;
+
+class AuthenticationView extends Component {
+ componentWillMount() {
+ this.props.onInit();
+ }
+
+ render() {
+ if (!this.props.remoteState) return null;
+
+ if (this.props.stage === Stage.SECOND_FACTOR) {
+ return ;
+ } else if (this.props.stage === Stage.ALREADY_AUTHENTICATED) {
+ return ;
+ }
+ return ;
+ }
+}
+
+export default AuthenticationView;
\ No newline at end of file
diff --git a/client/src/views/AuthenticationView/RemoteState.ts b/client/src/views/AuthenticationView/RemoteState.ts
new file mode 100644
index 000000000..e99eca5b3
--- /dev/null
+++ b/client/src/views/AuthenticationView/RemoteState.ts
@@ -0,0 +1,9 @@
+import AuthenticationLevel from '../../types/AuthenticationLevel';
+
+interface RemoteState {
+ username: string;
+ authentication_level: AuthenticationLevel;
+ default_redirection_url: string;
+}
+
+export default RemoteState;
\ No newline at end of file
diff --git a/client/src/views/ConfirmationSentView/ConfirmationSentView.tsx b/client/src/views/ConfirmationSentView/ConfirmationSentView.tsx
new file mode 100644
index 000000000..55eb7637d
--- /dev/null
+++ b/client/src/views/ConfirmationSentView/ConfirmationSentView.tsx
@@ -0,0 +1,36 @@
+import React, { Component } from "react";
+import classnames from 'classnames';
+
+import mail from '../../assets/images/mail.png';
+
+import styles from '../../assets/scss/views/ConfirmationSentView/ConfirmationSentView.module.scss';
+import Button from "@material/react-button";
+import { RouterProps } from "react-router";
+
+interface Props extends RouterProps {}
+
+class ConfirmationSentView extends Component {
+ render() {
+ return (
+
+
+
+
+
+ Please check your e-mails and follow the instructions to confirm the operation.
+
+ this.props.history.goBack()}
+ className={styles.button}
+ raised={true}
+ color="primary">
+ Back
+
+
+
+
+ )
+ }
+}
+
+export default ConfirmationSentView;
\ No newline at end of file
diff --git a/client/src/views/ForgotPasswordView/ForgotPasswordView.tsx b/client/src/views/ForgotPasswordView/ForgotPasswordView.tsx
new file mode 100644
index 000000000..f75ab23bb
--- /dev/null
+++ b/client/src/views/ForgotPasswordView/ForgotPasswordView.tsx
@@ -0,0 +1,92 @@
+import React, { Component, KeyboardEvent, FormEvent } from "react";
+import classnames from 'classnames';
+import Button from "@material/react-button";
+import TextField, { Input } from "@material/react-text-field";
+
+import styles from '../../assets/scss/views/ForgotPasswordView/ForgotPasswordView.module.scss';
+
+export interface StateProps {
+ disabled: boolean;
+}
+
+export interface DispatchProps {
+ onPasswordResetRequested: (username: string) => void;
+ onCancelClicked: () => void;
+}
+
+export type Props = StateProps & DispatchProps;
+
+interface State {
+ username: string;
+}
+
+class ForgotPasswordView extends Component {
+ constructor(props: Props) {
+ super(props);
+ this.state = {
+ username: '',
+ }
+ }
+
+ private onUsernameChanged = (e: FormEvent) => {
+ this.setState({username: (e.target as HTMLInputElement).value});
+ }
+
+ private onKeyPressed = (e: KeyboardEvent) => {
+ if (e.key == 'Enter') {
+ this.onPasswordResetRequested();
+ }
+ }
+
+ private onPasswordResetRequested = () => {
+ if (this.state.username.length == 0) return;
+ this.props.onPasswordResetRequested(this.state.username);
+ }
+
+ render() {
+ return (
+
+
What's your username?
+
+
+
+
+
+
+
+ Next
+
+
+
+
+ Cancel
+
+
+
+
+
+ );
+ }
+}
+
+export default ForgotPasswordView;
\ No newline at end of file
diff --git a/client/src/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.tsx b/client/src/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.tsx
new file mode 100644
index 000000000..15e55cd04
--- /dev/null
+++ b/client/src/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.tsx
@@ -0,0 +1,129 @@
+import React, { Component } from "react";
+import classnames from 'classnames';
+
+import Button from "@material/react-button";
+
+import styles from '../../assets/scss/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.module.scss';
+import { RouteProps, RouterProps } from "react-router";
+import QueryString from 'query-string';
+
+import QRCode from 'qrcode.react';
+import Notification from "../../components/Notification/Notification";
+
+import googleStoreImage from '../../assets/images/googleplay-badge.svg';
+import appleStoreImage from '../../assets/images/applestore-badge.svg';
+import { Secret } from "./Secret";
+import CircleLoader, { Status } from "../../components/CircleLoader/CircleLoader";
+
+export interface Props extends RouteProps, RouterProps {
+ secret: Secret | null;
+ error: string | null;
+ onInit: (token: string) => void;
+ onRetryClicked: () => void;
+ onCancelClicked: () => void;
+ onLoginClicked: () => void;
+}
+
+class OneTimePasswordRegistrationView extends Component {
+ private token: string | null;
+ constructor(props: Props) {
+ super(props);
+ this.token = null;
+ }
+
+ componentWillMount() {
+ // If secret is already populated, we skip onInit (for testing purposes).
+ if (this.props.secret) return;
+
+ if (!this.props.location) {
+ console.error('There is no location to retrieve query params from...');
+ return;
+ }
+ const params = QueryString.parse(this.props.location.search);
+ if (!('token' in params)) {
+ console.error('Token parameter is expected and not provided');
+ return;
+ }
+ this.token = params['token'] as string;
+ this.props.onInit(this.token);
+ }
+
+ private renderWithSecret(secret: Secret) {
+ return (
+
+
+ Register your device by scanning the barcode or adding the key.
+
+
+
+
+
+
{secret.otpauth_url}
+
{secret.base32_secret}
+
+
+
+ Login
+
+
+
+
Need Google Authenticator?
+
+
+
+
+ )
+ }
+
+ private renderError() {
+ return (
+
+
+ {this.props.error}
+
+
+
+ Retry
+
+
+ Cancel
+
+
+
+ );
+ }
+
+ private renderSecret() {
+ return this.props.secret
+ ? this.renderWithSecret(this.props.secret)
+ : this.renderError();
+ }
+
+ private renderLoading() {
+ return (
+
+
One-Time password secret is being generated...
+
+
+ )
+ }
+
+ render() {
+ return !this.props.secret && !this.props.error
+ ? this.renderLoading()
+ : this.renderSecret();
+ }
+}
+
+export default OneTimePasswordRegistrationView;
\ No newline at end of file
diff --git a/client/src/views/OneTimePasswordRegistrationView/Secret.ts b/client/src/views/OneTimePasswordRegistrationView/Secret.ts
new file mode 100644
index 000000000..61e939434
--- /dev/null
+++ b/client/src/views/OneTimePasswordRegistrationView/Secret.ts
@@ -0,0 +1,5 @@
+
+export interface Secret {
+ otpauth_url: string;
+ base32_secret: string;
+}
\ No newline at end of file
diff --git a/client/src/views/ResetPasswordView/ResetPasswordView.tsx b/client/src/views/ResetPasswordView/ResetPasswordView.tsx
new file mode 100644
index 000000000..75c229957
--- /dev/null
+++ b/client/src/views/ResetPasswordView/ResetPasswordView.tsx
@@ -0,0 +1,143 @@
+import React, { Component, KeyboardEvent, FormEvent } from "react";
+import { RouterProps } from "react-router";
+import classnames from 'classnames';
+import QueryString from 'query-string';
+
+import Button from "@material/react-button";
+import TextField, { Input } from "@material/react-text-field";
+
+import styles from '../../assets/scss/views/ResetPasswordView/ResetPasswordView.module.scss';
+import Notification from "../../components/Notification/Notification";
+
+export interface StateProps {
+ disabled: boolean;
+}
+
+export interface DispatchProps {
+ onInit: (token: string) => void;
+ onPasswordResetRequested: (password: string) => void;
+ onCancelClicked: () => void;
+}
+
+export type Props = StateProps & DispatchProps & RouterProps;
+
+interface State {
+ password1: string;
+ password2: string;
+ error: string | null,
+}
+
+class ResetPasswordView extends Component {
+ constructor(props: Props) {
+ super(props);
+ this.state = {
+ password1: '',
+ password2: '',
+ error: null,
+ }
+ }
+
+ componentWillMount() {
+ if (!this.props.history.location) {
+ console.error('There is no location to retrieve query params from...');
+ return;
+ }
+ const params = QueryString.parse(this.props.history.location.search);
+ if (!('token' in params)) {
+ console.error('Token parameter is expected and not provided');
+ return;
+ }
+ this.props.onInit(params['token'] as string);
+ }
+
+ private onPasswordResetRequested() {
+ if (this.state.password1 && this.state.password1 === this.state.password2) {
+ this.props.onPasswordResetRequested(this.state.password1);
+ } else {
+ this.setState({error: 'The passwords are different.'});
+ }
+ }
+
+ private onKeyPressed = (e: KeyboardEvent) => {
+ if (e.key == 'Enter') {
+ this.onPasswordResetRequested();
+ }
+ }
+
+ private onResetClicked = () => {
+ this.onPasswordResetRequested();
+ }
+
+ private onPassword1Changed = (e: FormEvent) => {
+ this.setState({password1: (e.target as HTMLInputElement).value});
+ }
+
+ private onPassword2Changed = (e: FormEvent) => {
+ this.setState({password2: (e.target as HTMLInputElement).value});
+ }
+
+ render() {
+ return (
+
+
+ {this.state.error}
+
+
Enter your new password
+
+
+
+
+
+
+
+
+
+
+ Reset
+
+
+
+
+ Cancel
+
+
+
+
+
+ )
+ }
+}
+
+export default ResetPasswordView;
\ No newline at end of file
diff --git a/client/src/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.tsx b/client/src/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.tsx
new file mode 100644
index 000000000..acf2cbab3
--- /dev/null
+++ b/client/src/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.tsx
@@ -0,0 +1,78 @@
+import React, { Component } from "react";
+
+import Button from "@material/react-button";
+
+import styles from '../../assets/scss/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.module.scss';
+import { RouteProps, RouterProps } from "react-router";
+import QueryString from 'query-string';
+import Notification from "../../components/Notification/Notification";
+import CircleLoader, { Status } from "../../components/CircleLoader/CircleLoader";
+
+export interface Props extends RouteProps, RouterProps {
+ deviceRegistered: boolean | null;
+ error: string | null;
+ onInit: (token: string) => void;
+ onBackClicked: () => void;
+}
+
+class SecurityKeyRegistrationView extends Component {
+ componentDidMount() {
+ if (this.props.deviceRegistered) return;
+
+ if (!this.props.location) {
+ console.error('There is no location to retrieve query params from...');
+ return;
+ }
+ const params = QueryString.parse(this.props.location.search);
+ if (!('token' in params)) {
+ console.error('Token parameter is expected and not provided');
+ return;
+ }
+ this.props.onInit(params['token'] as string);
+ }
+
+ private renderError() {
+ return (
+
+
+ {this.props.error}
+
+
+
+ Back
+
+
+
+ )
+ }
+
+ private renderRegistering() {
+ let status = Status.LOADING;
+ if (this.props.deviceRegistered === true) {
+ status = Status.SUCCESSFUL;
+ } else if (this.props.error) {
+ status = Status.FAILURE;
+ }
+ return (
+
+
Press the gold disk to register your security key
+
+
+
+
+ )
+ }
+
+ render() {
+ if (this.props.error) {
+ return this.renderError();
+ }
+
+ return this.renderRegistering();
+ }
+}
+
+export default SecurityKeyRegistrationView;
\ No newline at end of file
diff --git a/client/test/Notifier.test.ts b/client/test/Notifier.test.ts
deleted file mode 100644
index 70bfea146..000000000
--- a/client/test/Notifier.test.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-
-import Assert = require("assert");
-import Sinon = require("sinon");
-import JQueryMock = require("./mocks/jquery");
-
-import { Notifier } from "../src/lib/Notifier";
-
-describe("test notifier", function() {
- const SELECTOR = "dummy-selector";
- const MESSAGE = "This is a message";
- let jqueryMock: { jquery: JQueryMock.JQueryMock, element: JQueryMock.JQueryElementsMock };
- let clock: any;
-
- beforeEach(function() {
- jqueryMock = JQueryMock.JQueryMock();
- clock = Sinon.useFakeTimers();
- });
-
- afterEach(function() {
- clock.restore();
- });
-
- function should_fade_in_and_out_on_notification(notificationType: string): void {
- const delayReturn = {
- fadeOut: Sinon.stub()
- };
-
- jqueryMock.element.fadeIn.yields();
-
- function onFadedInCallback() {
- Assert(jqueryMock.element.fadeIn.calledOnce);
- Assert(jqueryMock.element.addClass.calledWith(notificationType));
- Assert(!jqueryMock.element.removeClass.calledWith(notificationType));
- clock.tick(10 * 1000);
- }
-
- function onFadedOutCallback() {
- Assert(jqueryMock.element.removeClass.calledWith(notificationType));
- Assert(jqueryMock.element.fadeOut.calledOnce);
- }
-
- const notifier = new Notifier(SELECTOR, jqueryMock.jquery as any);
-
- // Call the method by its name... Bad but allows code reuse.
- (notifier as any)[notificationType](MESSAGE, {
- onFadedIn: onFadedInCallback,
- onFadedOut: onFadedOutCallback
- });
-
- clock.tick(510);
-
- Assert(jqueryMock.element.fadeIn.calledOnce);
- }
-
-
- it("should fade in and fade out an error message", function() {
- should_fade_in_and_out_on_notification("error");
- });
-
- it("should fade in and fade out an info message", function() {
- should_fade_in_and_out_on_notification("info");
- });
-
- it("should fade in and fade out an warning message", function() {
- should_fade_in_and_out_on_notification("warning");
- });
-
- it("should fade in and fade out an success message", function() {
- should_fade_in_and_out_on_notification("success");
- });
-});
\ No newline at end of file
diff --git a/client/test/firstfactor/FirstFactorValidator.test.ts b/client/test/firstfactor/FirstFactorValidator.test.ts
deleted file mode 100644
index 027bc71d8..000000000
--- a/client/test/firstfactor/FirstFactorValidator.test.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-
-import FirstFactorValidator = require("../../src/lib/firstfactor/FirstFactorValidator");
-import JQueryMock = require("../mocks/jquery");
-import BluebirdPromise = require("bluebird");
-import Assert = require("assert");
-
-describe("test FirstFactorValidator", function () {
- it("should validate first factor successfully", () => {
- const postPromise = JQueryMock.JQueryDeferredMock();
- postPromise.done.yields({ redirect: "http://redirect" });
- postPromise.done.returns(postPromise);
-
- const jqueryMock = JQueryMock.JQueryMock();
- jqueryMock.jquery.ajax.returns(postPromise);
-
- return FirstFactorValidator.validate("username", "password", false,
- "http://redirect", jqueryMock.jquery as any);
- });
-
- function should_fail_first_factor_validation(errorMessage: string) {
- const xhr = {
- status: 401
- };
- const postPromise = JQueryMock.JQueryDeferredMock();
- postPromise.fail.yields(xhr, errorMessage);
- postPromise.done.returns(postPromise);
-
- const jqueryMock = JQueryMock.JQueryMock();
- jqueryMock.jquery.ajax.returns(postPromise);
-
- return FirstFactorValidator.validate("username", "password", false,
- "http://redirect", jqueryMock.jquery as any)
- .then(function () {
- return BluebirdPromise.reject(new Error("First factor validation successfully finished while it should have not."));
- }, function (err: Error) {
- Assert.equal(errorMessage, err.message);
- return BluebirdPromise.resolve();
- });
- }
-
- describe("should fail first factor validation", () => {
- it("should fail with error", () => {
- return should_fail_first_factor_validation("Authentication failed. Please check your credentials.");
- });
- });
-});
\ No newline at end of file
diff --git a/client/test/mocks/NotifierStub.ts b/client/test/mocks/NotifierStub.ts
deleted file mode 100644
index 9c268d66d..000000000
--- a/client/test/mocks/NotifierStub.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-
-import Sinon = require("sinon");
-import { INotifier } from "../../src/lib/INotifier";
-
-export class NotifierStub implements INotifier {
- successStub: Sinon.SinonStub;
- errorStub: Sinon.SinonStub;
- warnStub: Sinon.SinonStub;
- infoStub: Sinon.SinonStub;
-
- constructor() {
- this.successStub = Sinon.stub();
- this.errorStub = Sinon.stub();
- this.warnStub = Sinon.stub();
- this.infoStub = Sinon.stub();
- }
-
- success(msg: string) {
- this.successStub();
- }
-
- error(msg: string) {
- this.errorStub();
- }
-
- warning(msg: string) {
- this.warnStub();
- }
-
- info(msg: string) {
- this.infoStub();
- }
-}
\ No newline at end of file
diff --git a/client/test/mocks/jquery.ts b/client/test/mocks/jquery.ts
deleted file mode 100644
index 273f90861..000000000
--- a/client/test/mocks/jquery.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-
-import sinon = require("sinon");
-import jquery = require("jquery");
-
-
-export interface JQueryMock extends sinon.SinonStub {
- get: sinon.SinonStub;
- post: sinon.SinonStub;
- ajax: sinon.SinonStub;
- notify: sinon.SinonStub;
-}
-
-export interface JQueryElementsMock {
- ready: sinon.SinonStub;
- show: sinon.SinonStub;
- hide: sinon.SinonStub;
- html: sinon.SinonStub;
- addClass: sinon.SinonStub;
- removeClass: sinon.SinonStub;
- fadeIn: sinon.SinonStub;
- fadeOut: sinon.SinonStub;
- on: sinon.SinonStub;
-}
-
-export interface JQueryDeferredMock {
- done: sinon.SinonStub;
- fail: sinon.SinonStub;
-}
-
-export function JQueryMock(): { jquery: JQueryMock, element: JQueryElementsMock } {
- const jquery = sinon.stub() as any;
- const jqueryInstance: JQueryElementsMock = {
- ready: sinon.stub(),
- show: sinon.stub(),
- hide: sinon.stub(),
- html: sinon.stub(),
- addClass: sinon.stub(),
- removeClass: sinon.stub(),
- fadeIn: sinon.stub(),
- fadeOut: sinon.stub(),
- on: sinon.stub()
- };
- jquery.ajax = sinon.stub();
- jquery.get = sinon.stub();
- jquery.post = sinon.stub();
- jquery.notify = sinon.stub();
- jquery.returns(jqueryInstance);
- return {
- jquery: jquery,
- element: jqueryInstance
- };
-}
-
-export function JQueryDeferredMock(): JQueryDeferredMock {
- return {
- done: sinon.stub(),
- fail: sinon.stub()
- };
-}
diff --git a/client/test/mocks/u2f-api.ts b/client/test/mocks/u2f-api.ts
deleted file mode 100644
index d123f6a95..000000000
--- a/client/test/mocks/u2f-api.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import sinon = require("sinon");
-
-export interface U2FApiMock {
- sign: sinon.SinonStub;
- register: sinon.SinonStub;
-}
-
-export function U2FApiMock(): U2FApiMock {
- return {
- sign: sinon.stub(),
- register: sinon.stub()
- };
-}
\ No newline at end of file
diff --git a/client/test/secondfactor/TOTPValidator.test.ts b/client/test/secondfactor/TOTPValidator.test.ts
deleted file mode 100644
index 5dd6f15c3..000000000
--- a/client/test/secondfactor/TOTPValidator.test.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-
-import TOTPValidator = require("../../src/lib/secondfactor/TOTPValidator");
-import JQueryMock = require("../mocks/jquery");
-import BluebirdPromise = require("bluebird");
-import Assert = require("assert");
-
-describe("test TOTPValidator", function () {
- it("should initiate an identity check successfully", () => {
- const postPromise = JQueryMock.JQueryDeferredMock();
- postPromise.done.yields({ redirect: "https://home.test.url" });
- postPromise.done.returns(postPromise);
-
- const jqueryMock = JQueryMock.JQueryMock();
- jqueryMock.jquery.ajax.returns(postPromise);
-
- return TOTPValidator.validate("totp_token", jqueryMock.jquery as any);
- });
-
- it("should fail validating TOTP token", () => {
- const errorMessage = "Error while validating TOTP token";
-
- const postPromise = JQueryMock.JQueryDeferredMock();
- postPromise.fail.yields(undefined, errorMessage);
- postPromise.done.returns(postPromise);
-
- const jqueryMock = JQueryMock.JQueryMock();
- jqueryMock.jquery.ajax.returns(postPromise);
-
- return TOTPValidator.validate("totp_token", jqueryMock.jquery as any)
- .then(function () {
- return BluebirdPromise.reject(new Error("Registration successfully finished while it should have not."));
- }, function (err: Error) {
- Assert.equal(errorMessage, err.message);
- return BluebirdPromise.resolve();
- });
- });
-});
\ No newline at end of file
diff --git a/client/test/totp-register/totp-register.test.ts b/client/test/totp-register/totp-register.test.ts
deleted file mode 100644
index 86fc455a1..000000000
--- a/client/test/totp-register/totp-register.test.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-
-import sinon = require("sinon");
-import assert = require("assert");
-
-import UISelector = require("../../src/lib/totp-register/ui-selector");
-import TOTPRegister = require("../../src/lib/totp-register/totp-register");
-
-describe("test totp-register", function() {
- let jqueryMock: any;
- let windowMock: any;
- before(function() {
- jqueryMock = sinon.stub();
- windowMock = {
- QRCode: sinon.spy()
- };
- });
-
- it("should create qrcode in page", function() {
- const mock = {
- text: sinon.stub(),
- empty: sinon.stub(),
- get: sinon.stub()
- };
- jqueryMock.withArgs(UISelector.QRCODE_ID_SELECTOR).returns(mock);
-
- TOTPRegister.default(windowMock, jqueryMock);
-
- assert(mock.text.calledOnce);
- assert(mock.empty.calledOnce);
- });
-});
\ No newline at end of file
diff --git a/client/tsconfig.json b/client/tsconfig.json
index 0bb4d62ff..c5d6f230f 100644
--- a/client/tsconfig.json
+++ b/client/tsconfig.json
@@ -1,24 +1,25 @@
{
- "compilerOptions": {
- "module": "commonjs",
- "target": "es6",
- "moduleResolution": "node",
- "noImplicitAny": true,
- "sourceMap": true,
- "removeComments": true,
- "outDir": "../dist",
- "baseUrl": ".",
- "paths": {
- "*": [
- "./types/*",
- "../shared/types/*"
- ]
- }
- },
- "include": [
- "src/**/*"
- ],
- "exclude": [
- "test/**/*"
+ "compilerOptions": {
+ "target": "es6",
+ "allowJs": true,
+ "skipLibCheck": false,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "preserve",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
]
+ },
+ "include": [
+ "src"
+ ]
}
diff --git a/client/tslint.json b/client/tslint.json
deleted file mode 100644
index c2c1b7501..000000000
--- a/client/tslint.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "rules": {
- "class-name": true,
- "comment-format": [
- true,
- "check-space"
- ],
- "indent": [
- true,
- "spaces"
- ],
- "one-line": [
- true,
- "check-open-brace",
- "check-whitespace"
- ],
- "no-var-keyword": true,
- "quotemark": [
- true,
- "double",
- "avoid-escape"
- ],
- "semicolon": [
- true,
- "always",
- "ignore-bound-class-methods"
- ],
- "whitespace": [
- true,
- "check-branch",
- "check-decl",
- "check-operator",
- "check-module",
- "check-separator",
- "check-type"
- ],
- "typedef-whitespace": [
- true,
- {
- "call-signature": "nospace",
- "index-signature": "nospace",
- "parameter": "nospace",
- "property-declaration": "nospace",
- "variable-declaration": "nospace"
- },
- {
- "call-signature": "onespace",
- "index-signature": "onespace",
- "parameter": "onespace",
- "property-declaration": "onespace",
- "variable-declaration": "onespace"
- }
- ],
- "no-internal-module": true,
- "no-trailing-whitespace": true,
- "no-null-keyword": true,
- "prefer-const": true,
- "jsdoc-format": true
- }
-}
diff --git a/config.template.yml b/config.template.yml
index 30eb7be60..6ffca5165 100644
--- a/config.template.yml
+++ b/config.template.yml
@@ -3,14 +3,14 @@
###############################################################
# The port to listen on
-port: 8080
+port: 9091
# Log level
#
# Level of verbosity for logs
logs_level: debug
-# Default redirection URL
+# Default redirection URL
#
# If user tries to authenticate without any referer, Authelia
# does not know where to redirect the user to at the end of the
@@ -42,7 +42,7 @@ authentication_backend:
# production.
ldap:
# The url of the ldap server
- url: ldap://openldap
+ url: ldap://127.0.0.1
# The base dn for every entries
base_dn: dc=example,dc=com
@@ -75,15 +75,15 @@ authentication_backend:
user: cn=admin,dc=example,dc=com
password: password
- # File backend configuration.
+ # File backend configuration.
#
# With this backend, the users database is stored in a file
# which is updated when users reset their passwords.
- # Therefore, this backend is meant to be used in a dev environment
+ # Therefore, this backend is meant to be used in a dev environment
# and not in production since it prevents Authelia to be scaled to
- # more than one instance.
+ # more than one instance.
#
- ## file:
+ ## file:
## path: ./users_database.yml
@@ -93,13 +93,13 @@ authentication_backend:
# resource to users or group of users.
#
# If 'access_control' is not defined, ACL rules are disabled and the `bypass`
-# rule is applied, i.e., access is allowed to anyone. Otherwise restrictions follow
+# rule is applied, i.e., access is allowed to anyone. Otherwise restrictions follow
# the rules defined.
#
# Note: One can use the wildcard * to match any subdomain.
-# It must stand at the beginning of the pattern. (example: *.mydomain.com)
+# It must stand at the beginning of the pattern. (example: *.mydomain.com)
#
-# Note: You must put patterns containing wildcards between simple quotes for the YAML
+# Note: You must put patterns containing wildcards between simple quotes for the YAML
# to be syntaxically correct.
#
# Definition: A `rule` is an object with the following keys: `domain`, `subject`,
@@ -116,7 +116,7 @@ authentication_backend:
# `one_factor`, `two_factor` or `deny`.
#
# - `resources` is a list of regular expressions that matches a set of resources to
-# apply the policy to. This parameter is optional and matches any resource if not
+# apply the policy to. This parameter is optional and matches any resource if not
# provided.
#
# Note: the order of the rules is important. The first policy matching
@@ -196,9 +196,9 @@ session:
# is restricted to the subdomain of the issuer.
domain: example.com
- # The redis connection details
+ # The redis connection details
redis:
- host: redis
+ host: 127.0.0.1
port: 6379
password: authelia
@@ -212,7 +212,7 @@ regulation:
# Set it to 0 to disable regulation.
max_retries: 3
- # The time range during which the user can attempt login before being banned.
+ # The time range during which the user can attempt login before being banned.
# The user is banned if the authenticaction failed `max_retries` times in a `find_time` seconds window.
find_time: 120
@@ -224,12 +224,12 @@ regulation:
# You must use only an available configuration: local, mongo
storage:
# The directory where the DB files will be saved
- ## local:
+ ## local:
## path: /var/lib/authelia/store
# Settings to connect to mongo server
mongo:
- url: mongodb://mongo
+ url: mongodb://127.0.0.1
database: authelia
auth:
username: authelia
@@ -258,6 +258,6 @@ notifier:
username: test
password: password
secure: false
- host: 'smtp'
+ host: 127.0.0.1
port: 1025
sender: admin@example.com
diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml
deleted file mode 100644
index 44e5350c6..000000000
--- a/docker-compose.dev.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-version: '2'
-services:
- authelia-dev:
- build:
- context: .
- dockerfile: Dockerfile.dev
- restart: always
- volumes:
- - ./server:/usr/src/server
- - ./dist/server/src/public_html:/usr/src/server/src/public_html
- - ./client:/usr/src/client
- - ./shared:/usr/src/shared
- - ./config.template.yml:/etc/authelia/config.yml:ro
- environment:
- - NODE_TLS_REJECT_UNAUTHORIZED=0
- depends_on:
- - redis
- networks:
- example-network:
- aliases:
- - authelia
- command:
- - "./node_modules/.bin/ts-node"
- - "-P"
- - "server/tsconfig.json"
- - "server/src/index.ts"
- - "/etc/authelia/config.yml"
diff --git a/docker-compose.minimal.dev.yml b/docker-compose.minimal.dev.yml
deleted file mode 100644
index f36479753..000000000
--- a/docker-compose.minimal.dev.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-version: '2'
-services:
- authelia:
- build:
- context: .
- dockerfile: Dockerfile.dev
- restart: always
- volumes:
- - ./server:/usr/src/server
- - ./dist/server/src/public_html:/usr/src/server/src/public_html
- - ./client:/usr/src/client
- - ./shared:/usr/src/shared
- - ./config.minimal.yml:/etc/authelia/config.yml:ro
- - /tmp/authelia:/tmp/authelia
- - ./users_database.yml:/etc/authelia/users_database.yml
- environment:
- - NODE_TLS_REJECT_UNAUTHORIZED=0
- depends_on:
- - redis
- networks:
- - example-network
- command:
- - "./node_modules/.bin/ts-node"
- - "-P"
- - "server/tsconfig.json"
- - "server/src/index.ts"
- - "/etc/authelia/config.yml"
diff --git a/docker-compose.minimal.yml b/docker-compose.minimal.yml
deleted file mode 100644
index bed34efc2..000000000
--- a/docker-compose.minimal.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-version: '2'
-services:
- authelia:
- build: .
- restart: always
- volumes:
- - ./config.minimal.yml:/etc/authelia/config.yml:ro
- - ./users_database.test.yml:/etc/authelia/users_database.yml:rw
- - /tmp/authelia:/tmp/authelia
- environment:
- - NODE_TLS_REJECT_UNAUTHORIZED=0
- networks:
- - example-network
diff --git a/docker-compose.test.yml b/docker-compose.test.yml
deleted file mode 100644
index 07275e4c5..000000000
--- a/docker-compose.test.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-version: '2'
-services:
- authelia:
- build: .
- restart: always
- volumes:
- - ./config.test.yml:/etc/authelia/config.yml:ro
- - ./users_database.test.yml:/etc/authelia/users_database.yml:rw
- - /tmp/authelia:/tmp/authelia
- environment:
- - NODE_TLS_REJECT_UNAUTHORIZED=0
- networks:
- - example-network
diff --git a/docker-compose.yml b/docker-compose.yml
index b80d777c0..6ec0652bc 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,14 +1,9 @@
version: '2'
-services:
- authelia:
- build: .
- restart: always
- volumes:
- - ./config.template.yml:/etc/authelia/config.yml:ro
- environment:
- - NODE_TLS_REJECT_UNAUTHORIZED=0
- depends_on:
- - redis
- - mongo
- networks:
- - example-network
\ No newline at end of file
+# services: {}
+networks:
+ authelianet:
+ driver: bridge
+ ipam:
+ config:
+ - subnet: 192.168.240.0/24
+ gateway: 192.168.240.1
diff --git a/docs/authelia-scripts.md b/docs/authelia-scripts.md
new file mode 100644
index 000000000..460ccb54d
--- /dev/null
+++ b/docs/authelia-scripts.md
@@ -0,0 +1,20 @@
+# Authelia Scripts
+
+Authelia comes with a set of dedicated scripts doing a broad range of operations such as
+building the distributed version of Authelia, building the Docker image, running suites,
+testing the code, etc...
+
+You can access the scripts usage by running the following command:
+
+ npm run scripts
+
+For instance, you can build Authelia with:
+
+ npm run scripts build
+
+Or start the *basic* suite with:
+
+ npm run scripts suites start basic
+
+
+You will find more information in the scripts usage helpers.
\ No newline at end of file
diff --git a/docs/build.md b/docs/build.md
index 9437d1f63..23dbaa81c 100644
--- a/docs/build.md
+++ b/docs/build.md
@@ -1,73 +1,53 @@
# Build
-**Authelia** is written in Typescript and built with [Grunt](https://gruntjs.com/).
+**Authelia** is written in Typescript and built with [Authelia scripts](docs/authelia-scripts.md).
-In order to build **Authelia**, you need to make sure Node v8 and NPM is
+In order to build **Authelia**, you need to make sure Node with version >= 8 and < 10 and NPM is
installed on your machine.
-Then, run the following command install the node modules:
+Then, run the following command to install the node modules:
npm install
And, this command to build **Authelia** under dist/:
- ./node_modules/.bin/grunt build
+ npm run build
+
+Then you can also build the Docker image with:
+
+ npm run docker build
## Details
### Build
-**Authelia** is made of two components: the client and the server.
+**Authelia** is made of two parts: the frontend and the backend.
-The client is written in Typescript and uses jQuery. It is built as part of
-the global `build` Grunt command.
-
-The server is written in Typescript. It is also built as part of the global `build`
-Grunt command.
+The frontend is a [React](https://reactjs.org/) application written in Typescript and
+the backend is an express application also written in Typescript.
### Tests
-Grunt also handles the commands to run the tests. There are several type of
-tests for **Authelia**: unit tests for the server, the client and a shared
-library and an integration test suite testing both components together.
-
-The unit tests are written with Mocha while integration tests are using
-Cucumber and Mocha.
+There are two kind of tests: unit tests and integration tests.
### Unit tests
-To run the client unit tests, run:
+To run the unit tests, run:
- ./node_modules/.bin/grunt test-client
-
-To run the server unit tests, run:
-
- ./node_modules/.bin/grunt test-server
-
-To run the shared library unit tests, run:
-
- ./node_modules/.bin/grunt test-shared
+ npm run unittest
### Integration tests
-Integration tests are mainly based on Selenium so they
-need a complete environment to be run.
+Integration tests run with Mocha and are based on Selenium. They generally
+require a complete environment made of several components like redis, mongo and a LDAP
+to run.
-You can start by making sure **Authelia** is built with:
+In order to simplify the creation of such environments, Authelia comes with a concept of
+[Suites] that basically act as virtual environments for running either
+manual or integration tests.
- grunt build
+Please read the documentation related to [Suites] in order to discover
+how to run related tests.
-and the docker image is built with:
- ./scripts/example-commit/dc-example.sh build
-
-Then, start the environment with:
-
- ./scripts/example-commit/dc-example.sh up -d
-
-And run the tests with:
-
- ./node_modules/.bin/grunt test-int
-
-Note: the Cucumber tests are hard to maintain and will therefore
-be refactored to use Mocha instead.
+[Suites]: ./suites.md
\ No newline at end of file
diff --git a/docs/deployment-dev.md b/docs/deployment-dev.md
index 194647f49..144588726 100644
--- a/docs/deployment-dev.md
+++ b/docs/deployment-dev.md
@@ -17,9 +17,9 @@ non resilient to failures.*
[Getting Started] documentation.
In some cases, like protecting personal websites, it can be fine to use
-**Authelia** in a non highly-available manner. Fortunately, we can
-achieve to run it along with one reverse proxy meaning the setup is
-then reduced to only two components: Authelia and nginx.
+**Authelia** in a non highly-available setup. We can
+achieve that in order to reduce the number of components to only two: Authelia
+and nginx.
As for a regular deployment in production, you need to install **Authelia**
either by pulling the Docker image or installing the npm package and run
@@ -37,7 +37,8 @@ it with a configuration file passed as argument.
## Deploy Nginx
-You also need to install nginx and take [example/compose/nginx/minimal/nginx.conf](./example/compose/nginx/minimal/nginx.conf) as an example of configuration.
+You also need to install nginx and take [example/compose/nginx/minimal/nginx.conf](./example/compose/nginx/minimal/nginx.conf)
+as an example for your configuration.
## Discard components
@@ -83,7 +84,7 @@ from running multiple instances of **Authelia** in parallel and is therefore
discouraged for production environments.
To use a file backend instead of a LDAP server, you should first duplicate
-the file [users_database.yml](../users_database.yml) and edit it to add the
+the file [users_database.yml](../test/suites/basic/users_database.yml) and edit it to add the
users you want.
The content of this file is as follows:
@@ -99,10 +100,10 @@ The content of this file is as follows:
The password is hashed and salted as it is in LDAP servers with salted SHA-512. Here is a one-liner to generate such hashed password:
- python3 -c 'import crypt; print("{CRYPT}" + crypt.crypt("mypassword", crypt.mksalt(crypt.METHOD_SHA512, rounds=500000)))'
+ npm run hash-password mypassword
Once the file is created, edit the configuration file with the following
-block (as used in [config.minimal.yml](../config.minimal.yml)):
+block (as used in [config.yml](../test/suites/basic/config.yml)):
authentication_backend:
file:
@@ -141,9 +142,13 @@ crash or an hardware issue. Moreover, it will also prevent from reliably
persisting data and consequently fail access to your platform as the devices
registered by your users will be lost.
-### Why is this not automated?
+### Why aren't all those steps automated?
Well, as stated before those instructions are not meant to be applied for
a production environment. That being said, in some cases it is just fine and
-so writing an Ansible playbook to automate all this process would be great.
+writing an Ansible playbook to automate all this process is ok.
We would really be more than happy to review such a PR.
+In the meantime, you can check the *basic* [suite](./suites.md) to see all this
+in real example.
+
+[Getting Started]: ./getting-started.md
diff --git a/docs/deployment-production.md b/docs/deployment-production.md
index 835adb934..94c2cded7 100644
--- a/docs/deployment-production.md
+++ b/docs/deployment-production.md
@@ -36,17 +36,12 @@ the root of the repo.
-**Authelia** can also be used on top of [Kubernetes] using [nginx ingress
-controller](https://github.com/kubernetes/ingress-nginx).
+**Authelia** can also be used on top of [Kubernetes] using
+[nginx ingress controller](https://github.com/kubernetes/ingress-nginx).
Please refer to the following [documentation](../example/kube/README.md)
for more information.
-[config.template.yml]: ../config.template.yml
-[Getting Started]: ./getting-started.md
-[Deployment for Devs]: ./deployment-dev.md
-[Kubernetes]: https://kubernetes.io/
-
## FAQ
### Why is this not automated?
@@ -55,4 +50,11 @@ Ansible would be a very good candidate to automate the installation of such
an infrastructure on bare metal. We would be more than happy to review any PR on that matter.
Regarding Kubernetes, the right way to go would be to write a helm recipe.
-Again, we would be glad to review any PR implementing this.
\ No newline at end of file
+Again, we would be glad to review any PR implementing this.
+
+
+
+[config.template.yml]: ../config.template.yml
+[Getting Started]: ./getting-started.md
+[Deployment for Devs]: ./deployment-dev.md
+[Kubernetes]: https://kubernetes.io/
diff --git a/docs/getting-started.md b/docs/getting-started.md
index 758a3d15e..d6f6882f5 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -26,16 +26,17 @@ Here are the versions used for testing in Travis:
Make sure you don't have anything listening on port 8080 and 8085.
-The port 8080 will be our frontend load balancer serving both **Authelia**'s portal and the applications we want to protect.
+The port 8080 will be our frontend load balancer serving both **Authelia**'s portal and the
+applications we want to protect.
-The port 8085 is serving a webmail used to receive fake emails sent by **Authelia**
+The port 8085 is serving a webmail used to receive emails sent by **Authelia**
to validate your identity when registering U2F or TOTP secrets or when
resetting your password.
### Subdomain aliases
-In order to simulate the behavior of a DNS resolving some test subdomains of **example.com** to your machine, we
-need to add the following lines to your **/etc/hosts**. It will alias the
+In order to simulate the behavior of a DNS resolving some test subdomains of **example.com**
+to your machine, we need to add the following lines to your **/etc/hosts**. It will alias the
subdomains so that nginx can redirect requests to the correct virtual host.
127.0.0.1 home.example.com
@@ -52,7 +53,10 @@ subdomains so that nginx can redirect requests to the correct virtual host.
To deploy **Authelia** using the latest image from [Dockerhub], run the
following command:
- ./scripts/example-dockerhub/deploy-example.sh
+ npm run script suites start dockerhub
+
+A Suites is a virtual environment for running Authelia. If you want more details please
+read the related [documentation](./suites.md).
## Test it!
@@ -71,8 +75,8 @@ Below is what the login page looks like after you accepted all exceptions:
-You can use one of the users listed in [https://home.example.com:8080/](https://home.example.com:8080/). The rights granted to each user and
-group is also provided there.
+You can use one of the users listed in [https://home.example.com:8080/](https://home.example.com:8080/).
+The rights granted to each user and group is also provided there.
At some point, you'll be required to register your second factor, either
U2F or TOTP. Since your security is **Authelia**'s priority, it will send
@@ -86,8 +90,8 @@ The webmail is accessible from
**Note:** If you cannot deploy the fake webmail for any reason. You can
configure **Authelia** to use the filesystem notifier (option available
in [config.template.yml]) that will send the content of the email in a
-file instead of sending an email. It is advised to use this option
-for testing only.
+file instead of sending an email. It is advised to not use this option
+in production.
Enjoy!
diff --git a/docs/security.md b/docs/security.md
index e1298dce0..b2e1e2c02 100644
--- a/docs/security.md
+++ b/docs/security.md
@@ -21,6 +21,14 @@ that the attacker must also require the certificate to retrieve the cookies.
Note that using [HSTS] has consequences. That's why you should read the blog
post nginx has written on [HSTS].
+## Content-Security-Policy
+
+Authelia's portal is protected against XSS using the content
+security policy mechanism that is documented
+[here](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP). This protection
+will reject untrusted payloads threatening your users during the authentication
+workflow.
+
## More protections measures with Nginx
You can also apply the following headers to your nginx configuration for
diff --git a/docs/suites.md b/docs/suites.md
new file mode 100644
index 000000000..03a528213
--- /dev/null
+++ b/docs/suites.md
@@ -0,0 +1,55 @@
+# Suites
+
+Authelia is a single component in interaction with many others. Consequently, testing the features
+is not as easy as we might think. Consequently, a suite is kind of a virtual environment for Authelia,
+it allows to create an environment made of components such as nginx, redis or mongo in which Authelia can
+run and be tested.
+
+This abstraction allows to prepare an environment for manual testing during development and also to
+craft and run integration tests.
+
+## Start a suite.
+
+Starting a suite called *simple* is done with the following command:
+
+ npm run scripts suites start simple
+
+It will start the suite and block until you hit ctrl-c to stop the suite.
+
+## Run tests of a suite
+
+### Run tests of running suite
+
+If you are already running a suite with the previous command, you can simply type:
+
+ npm run scripts test
+
+and this will run the tests related to the running suite.
+
+### Run tests of non-running suite
+
+However, if no suite is running and you still want to test a particular suite like *complete*.
+You can do so with the next command:
+
+ npm run scripts test complete
+
+This command will run the tests for the *complete* suite using the built version of Authelia that
+should be located in *dist*.
+
+WARNING: Authelia must be built before running this command.
+
+### Run all tests of all suites
+
+Running all tests is as easy as making sure that there is no running suite and typing:
+
+ npm run scripts test
+
+
+## Create a suite
+
+Creating a suite is as easy as creating a new directory with at least two files:
+
+* **environment.ts** - It defines the setup and teardown phases when creating the environment. The *setup*
+phase is the phase when the required components will be spawned and Authelia will start while the *teardown*
+is executed when the suite is destroyed (ctrl-c hit by the user).
+* **test.ts** - It defines a set of tests to run in the virtual environment of the suite.
\ No newline at end of file
diff --git a/docker-compose.dockerhub.yml b/example/compose/authelia/docker-compose.dockerhub.yml
similarity index 69%
rename from docker-compose.dockerhub.yml
rename to example/compose/authelia/docker-compose.dockerhub.yml
index a6086c318..a78db4968 100644
--- a/docker-compose.dockerhub.yml
+++ b/example/compose/authelia/docker-compose.dockerhub.yml
@@ -4,10 +4,10 @@ services:
image: clems4ever/authelia:latest
restart: always
volumes:
- - ./config.template.yml:/etc/authelia/config.yml:ro
+ - ./test/suites/dockerhub/config.yml:/etc/authelia/config.yml:ro
environment:
- NODE_TLS_REJECT_UNAUTHORIZED=0
depends_on:
- redis
networks:
- - example-network
\ No newline at end of file
+ - authelianet
\ No newline at end of file
diff --git a/example/compose/authelia/docker-compose.test.yml b/example/compose/authelia/docker-compose.test.yml
deleted file mode 100644
index 2d2899a86..000000000
--- a/example/compose/authelia/docker-compose.test.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '2'
-services:
- authelia:
- volumes:
- - ./config.test.yml:/etc/authelia/config.yml:ro
- - ./dist/server:/usr/src/server
- - ./dist/shared:/usr/src/shared
- networks:
- - example-network
diff --git a/example/compose/docker-compose.base.yml b/example/compose/docker-compose.base.yml
index 7c610d62a..fcc3cbb43 100644
--- a/example/compose/docker-compose.base.yml
+++ b/example/compose/docker-compose.base.yml
@@ -1,4 +1,4 @@
version: '2'
networks:
- example-network:
- driver: bridge
+ authelianet:
+ external: true
diff --git a/example/compose/httpbin/docker-compose.yml b/example/compose/httpbin/docker-compose.yml
index b21cdc54e..b9859f1bb 100644
--- a/example/compose/httpbin/docker-compose.yml
+++ b/example/compose/httpbin/docker-compose.yml
@@ -3,4 +3,4 @@ services:
httpbin:
image: citizenstig/httpbin
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/ldap/docker-compose.admin.yml b/example/compose/ldap/docker-compose.admin.yml
index c73075782..5a0dbe815 100644
--- a/example/compose/ldap/docker-compose.admin.yml
+++ b/example/compose/ldap/docker-compose.admin.yml
@@ -8,4 +8,4 @@ services:
- PHPLDAPADMIN_LDAP_HOSTS=openldap
- PHPLDAPADMIN_HTTPS=false
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/ldap/docker-compose.yml b/example/compose/ldap/docker-compose.yml
index 41de32b2d..73da240f5 100644
--- a/example/compose/ldap/docker-compose.yml
+++ b/example/compose/ldap/docker-compose.yml
@@ -13,6 +13,8 @@ services:
volumes:
- ./example/compose/ldap/base.ldif:/etc/ldap.dist/prepopulate/base.ldif
- ./example/compose/ldap/access.rules:/etc/ldap.dist/prepopulate/access.rules
+ ports:
+ - "389:389"
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/mongo/docker-compose.yml b/example/compose/mongo/docker-compose.yml
index 5b95e931b..fd152e99e 100644
--- a/example/compose/mongo/docker-compose.yml
+++ b/example/compose/mongo/docker-compose.yml
@@ -9,4 +9,4 @@ services:
ports:
- "27017:27017"
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/nginx/backend/docker-compose.yml b/example/compose/nginx/backend/docker-compose.yml
index 6b5856dcb..cd78b72b0 100644
--- a/example/compose/nginx/backend/docker-compose.yml
+++ b/example/compose/nginx/backend/docker-compose.yml
@@ -6,4 +6,4 @@ services:
- ./example/compose/nginx/backend/html:/usr/share/nginx/html
- ./example/compose/nginx/backend/nginx.conf:/etc/nginx/nginx.conf
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/nginx/minimal/docker-compose.yml b/example/compose/nginx/minimal/docker-compose.yml
index b4d2061a9..a79ab6900 100644
--- a/example/compose/nginx/minimal/docker-compose.yml
+++ b/example/compose/nginx/minimal/docker-compose.yml
@@ -9,4 +9,4 @@ services:
ports:
- "8080:443"
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/nginx/minimal/nginx.conf b/example/compose/nginx/minimal/nginx.conf
index 4d26938ca..712305768 100644
--- a/example/compose/nginx/minimal/nginx.conf
+++ b/example/compose/nginx/minimal/nginx.conf
@@ -12,7 +12,6 @@ http {
resolver 127.0.0.11 ipv6=off;
set $upstream_endpoint http://authelia:8080;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -45,7 +44,6 @@ http {
root /usr/share/nginx/html/home;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -62,7 +60,6 @@ http {
resolver 127.0.0.11 ipv6=off;
set $upstream_verify http://authelia:8080/api/verify;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
diff --git a/example/compose/nginx/portal/.gitignore b/example/compose/nginx/portal/.gitignore
new file mode 100644
index 000000000..49dfdc987
--- /dev/null
+++ b/example/compose/nginx/portal/.gitignore
@@ -0,0 +1,2 @@
+
+nginx.conf
diff --git a/example/compose/nginx/portal/docker-compose.yml b/example/compose/nginx/portal/docker-compose.yml
index d6d4bb64a..d5fa8b3e4 100644
--- a/example/compose/nginx/portal/docker-compose.yml
+++ b/example/compose/nginx/portal/docker-compose.yml
@@ -8,4 +8,4 @@ services:
ports:
- "8080:443"
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/nginx/portal/nginx.conf b/example/compose/nginx/portal/nginx.conf.ejs
similarity index 84%
rename from example/compose/nginx/portal/nginx.conf
rename to example/compose/nginx/portal/nginx.conf.ejs
index 06d29d9cb..8ecb9c7f9 100644
--- a/example/compose/nginx/portal/nginx.conf
+++ b/example/compose/nginx/portal/nginx.conf.ejs
@@ -5,36 +5,87 @@ events {
}
http {
+ server {
+ listen 443 ssl;
+ server_name _;
+
+ ssl_certificate /etc/ssl/server.crt;
+ ssl_certificate_key /etc/ssl/server.key;
+
+ return 301 https://home.example.com:8080/;
+ }
+
+ <% if (production) { %>
server {
listen 443 ssl;
server_name login.example.com;
resolver 127.0.0.11 ipv6=off;
- set $upstream_endpoint http://authelia:8080;
+ set $backend_endpoint <%= authelia_backend %>;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN";
+ # Serves the portal application.
location / {
+ proxy_pass $backend_endpoint/index.html;
+ }
+
+ location /static {
+ proxy_pass $backend_endpoint;
+ }
+
+ # Serve the backend API for the portal.
+ location /api {
proxy_set_header Host $http_host;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_intercept_errors on;
- proxy_pass $upstream_endpoint;
-
- if ($request_method !~ ^(POST)$){
- error_page 401 = /error/401;
- error_page 403 = /error/403;
- error_page 404 = /error/404;
- }
+ proxy_pass $backend_endpoint;
}
}
+ <% } else { %>
+ server {
+ listen 443 ssl;
+ server_name login.example.com;
+
+ resolver 127.0.0.11 ipv6=off;
+ set $frontend_endpoint http://192.168.240.1:3000;
+ set $backend_endpoint <%= authelia_backend %>;
+
+ ssl_certificate /etc/ssl/server.crt;
+ ssl_certificate_key /etc/ssl/server.key;
+
+ add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
+ add_header X-Frame-Options "SAMEORIGIN";
+
+ # Serves the portal application.
+ location / {
+ # Allow websockets for webpack to auto-reload.
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+
+ proxy_pass $frontend_endpoint;
+ }
+
+ # Serve the backend API for the portal.
+ location /api {
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Original-URI $request_uri;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_intercept_errors on;
+
+ proxy_pass $backend_endpoint;
+ }
+ }
+ <% } %>
server {
listen 443 ssl;
@@ -43,7 +94,6 @@ http {
resolver 127.0.0.11 ipv6=off;
set $upstream_endpoint http://nginx-backend;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -61,11 +111,10 @@ http {
server_name public.example.com;
resolver 127.0.0.11 ipv6=off;
- set $upstream_verify http://authelia:8080/api/verify;
+ set $upstream_verify <%= authelia_backend %>/api/verify;
set $upstream_endpoint http://nginx-backend;
set $upstream_headers http://httpbin:8000/headers;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -130,10 +179,9 @@ http {
server_name admin.example.com;
resolver 127.0.0.11 ipv6=off;
- set $upstream_verify http://authelia:8080/api/verify;
+ set $upstream_verify <%= authelia_backend %>/api/verify;
set $upstream_endpoint http://nginx-backend;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -181,10 +229,9 @@ http {
server_name dev.example.com;
resolver 127.0.0.11 ipv6=off;
- set $upstream_verify http://authelia:8080/api/verify;
+ set $upstream_verify <%= authelia_backend %>/api/verify;
set $upstream_endpoint http://nginx-backend;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -232,10 +279,9 @@ http {
server_name mx1.mail.example.com mx2.mail.example.com;
resolver 127.0.0.11 ipv6=off;
- set $upstream_verify http://authelia:8080/api/verify;
+ set $upstream_verify <%= authelia_backend %>/api/verify;
set $upstream_endpoint http://nginx-backend;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -283,11 +329,10 @@ http {
server_name single_factor.example.com;
resolver 127.0.0.11 ipv6=off;
- set $upstream_verify http://authelia:8080/api/verify;
+ set $upstream_verify <%= authelia_backend %>/api/verify;
set $upstream_endpoint http://nginx-backend;
set $upstream_headers http://httpbin:8000/headers;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
@@ -355,9 +400,8 @@ http {
server_name authelia.example.com;
resolver 127.0.0.11 ipv6=off;
- set $upstream_endpoint http://authelia:8080;
+ set $upstream_endpoint <%= authelia_backend %>;
- ssl on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
diff --git a/example/compose/nginx/portal/render.js b/example/compose/nginx/portal/render.js
new file mode 100755
index 000000000..607ff70d3
--- /dev/null
+++ b/example/compose/nginx/portal/render.js
@@ -0,0 +1,40 @@
+#!/usr/bin/env node
+
+const ejs = require('ejs');
+const fs = require('fs');
+const program = require('commander');
+
+let backend;
+
+program
+ .version('0.1.0')
+ .option('-p, --production', 'Render template for production.')
+ .arguments('[backend]')
+ .action((backendArg) => backend = backendArg)
+ .parse(process.argv)
+
+const options = {
+ production: false,
+}
+
+if (!backend) {
+ backend = 'http://192.168.240.1:9091'
+}
+
+if (program.production) {
+ options['production'] = true;
+}
+
+options['authelia_backend'] = backend;
+
+const templatePath = __dirname + '/nginx.conf.ejs';
+const outputPath = __dirname + '/nginx.conf';
+
+html = ejs.renderFile(templatePath, options, (err, conf) => {
+ try {
+ var fd = fs.openSync(outputPath, 'w');
+ fs.writeFileSync(fd, conf);
+ } catch (e) {
+ fs.writeFileSync(outputPath, conf);
+ }
+});
\ No newline at end of file
diff --git a/example/compose/redis/docker-compose.yml b/example/compose/redis/docker-compose.yml
index d4aee009f..04bdb3e8f 100644
--- a/example/compose/redis/docker-compose.yml
+++ b/example/compose/redis/docker-compose.yml
@@ -3,5 +3,7 @@ services:
redis:
image: redis:4.0-alpine
command: redis-server --requirepass authelia
+ ports:
+ - "6379:6379"
networks:
- - example-network
+ - authelianet
diff --git a/example/compose/smtp/docker-compose.yml b/example/compose/smtp/docker-compose.yml
index 6fe76e9f3..4fd5e5e56 100644
--- a/example/compose/smtp/docker-compose.yml
+++ b/example/compose/smtp/docker-compose.yml
@@ -3,6 +3,7 @@ services:
smtp:
image: schickling/mailcatcher
ports:
+ - "1025:1025"
- "8085:1080"
networks:
- - example-network
+ - authelianet
diff --git a/docker-compose.swarm.minimal.yml b/example/swarm/docker-compose.yml
similarity index 100%
rename from docker-compose.swarm.minimal.yml
rename to example/swarm/docker-compose.yml
diff --git a/images/email_confirmation.png b/images/email_confirmation.png
index d94426c1b..2e07c2135 100644
Binary files a/images/email_confirmation.png and b/images/email_confirmation.png differ
diff --git a/images/first_factor.png b/images/first_factor.png
index 3f5036026..1219e70b6 100644
Binary files a/images/first_factor.png and b/images/first_factor.png differ
diff --git a/images/reset_password.png b/images/reset_password.png
index fc472e7d7..6a3e55d82 100644
Binary files a/images/reset_password.png and b/images/reset_password.png differ
diff --git a/images/second_factor.png b/images/second_factor.png
index fff40f205..3f717cac8 100644
Binary files a/images/second_factor.png and b/images/second_factor.png differ
diff --git a/images/totp.png b/images/totp.png
index 37be1e104..2716b2d1b 100644
Binary files a/images/totp.png and b/images/totp.png differ
diff --git a/images/u2f.png b/images/u2f.png
index 0a5551d3b..20186f2b4 100644
Binary files a/images/u2f.png and b/images/u2f.png differ
diff --git a/package-lock.json b/package-lock.json
index 7c9d2d1aa..ad8042343 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,20 +10,20 @@
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.0.0"
+ "@babel/highlight": "7.0.0"
}
},
"@babel/generator": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz",
- "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.3.tgz",
+ "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==",
"dev": true,
"requires": {
- "@babel/types": "^7.1.6",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.10",
- "source-map": "^0.5.0",
- "trim-right": "^1.0.1"
+ "@babel/types": "7.3.3",
+ "jsesc": "2.5.2",
+ "lodash": "4.17.11",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
}
},
"@babel/helper-function-name": {
@@ -32,9 +32,9 @@
"integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.0.0",
- "@babel/template": "^7.1.0",
- "@babel/types": "^7.0.0"
+ "@babel/helper-get-function-arity": "7.0.0",
+ "@babel/template": "7.2.2",
+ "@babel/types": "7.3.3"
}
},
"@babel/helper-get-function-arity": {
@@ -43,7 +43,7 @@
"integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.3.3"
}
},
"@babel/helper-split-export-declaration": {
@@ -52,7 +52,7 @@
"integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "7.3.3"
}
},
"@babel/highlight": {
@@ -61,9 +61,9 @@
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
"dev": true,
"requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^4.0.0"
+ "chalk": "2.4.2",
+ "esutils": "2.0.2",
+ "js-tokens": "4.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -72,18 +72,18 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "color-convert": "1.9.1"
}
},
"chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
}
},
"has-flag": {
@@ -104,52 +104,52 @@
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "3.0.0"
}
}
}
},
"@babel/parser": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz",
- "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.3.tgz",
+ "integrity": "sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==",
"dev": true
},
"@babel/template": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz",
- "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==",
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
+ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.1.2",
- "@babel/types": "^7.1.2"
+ "@babel/code-frame": "7.0.0",
+ "@babel/parser": "7.3.3",
+ "@babel/types": "7.3.3"
}
},
"@babel/traverse": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz",
- "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==",
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz",
+ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.1.6",
- "@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/parser": "^7.1.6",
- "@babel/types": "^7.1.6",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.10"
+ "@babel/code-frame": "7.0.0",
+ "@babel/generator": "7.3.3",
+ "@babel/helper-function-name": "7.1.0",
+ "@babel/helper-split-export-declaration": "7.0.0",
+ "@babel/parser": "7.3.3",
+ "@babel/types": "7.3.3",
+ "debug": "4.1.1",
+ "globals": "11.11.0",
+ "lodash": "4.17.11"
},
"dependencies": {
"debug": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
- "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.1"
}
},
"ms": {
@@ -161,22 +161,23 @@
}
},
"@babel/types": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz",
- "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz",
+ "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==",
"dev": true,
"requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.10",
- "to-fast-properties": "^2.0.0"
- },
- "dependencies": {
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- }
+ "esutils": "2.0.2",
+ "lodash": "4.17.11",
+ "to-fast-properties": "2.0.0"
+ }
+ },
+ "@sinonjs/commons": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.0.tgz",
+ "integrity": "sha512-j4ZwhaHmwsCb4DlDOIWnI5YyKDNMoNThsmwEpfHx6a1EpsGZ9qYLxP++LMlmBRjtGptGHFsGItJ768snllFWpA==",
+ "dev": true,
+ "requires": {
+ "type-detect": "4.0.8"
}
},
"@sinonjs/formatio": {
@@ -188,17 +189,15 @@
"samsam": "1.3.0"
}
},
- "@types/babel-types": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.1.tgz",
- "integrity": "sha512-EkcOk09rjhivbovP8WreGRbXW20YRfe/qdgXOGq3it3u3aAOWDRNsQhL/XPAWFF7zhZZ+uR+nT+3b+TCkIap1w=="
- },
- "@types/babylon": {
- "version": "6.16.2",
- "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz",
- "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==",
+ "@sinonjs/samsam": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.1.1.tgz",
+ "integrity": "sha512-ILlwvQUwAiaVBzr3qz8oT1moM7AIUHqUc2UmEjQcH9lLe+E+BZPwUMuc9FFojMswRK4r96x5zDTTrowMLw/vuA==",
+ "dev": true,
"requires": {
- "@types/babel-types": "*"
+ "@sinonjs/commons": "1.3.0",
+ "array-from": "2.1.1",
+ "lodash": "4.17.11"
}
},
"@types/bluebird": {
@@ -213,18 +212,8 @@
"integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==",
"dev": true,
"requires": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "@types/bootstrap": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-4.1.0.tgz",
- "integrity": "sha512-ruk0jxeN8rPUOJ2ja7QptXHUDgVMXpIdxHKoGgRUuNWiItuSqqFELmCwFO5t1IPaF1x3D4/qP0+eqa11+KR7GQ==",
- "dev": true,
- "requires": {
- "@types/jquery": "*",
- "popper.js": "^1.14.1"
+ "@types/connect": "3.4.32",
+ "@types/node": "10.0.3"
}
},
"@types/bson": {
@@ -233,7 +222,7 @@
"integrity": "sha512-PMa4nkRhLaqwsXQDDTzGbTyCIpej0ERznyAP9fyuGnlsmUbcC4Y25mdqjibYjkOPNyK/BWWUKneruaKHcS3Q8g==",
"dev": true,
"requires": {
- "@types/node": "*"
+ "@types/node": "10.0.3"
}
},
"@types/caseless": {
@@ -242,13 +231,32 @@
"integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==",
"dev": true
},
+ "@types/chokidar": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/@types/chokidar/-/chokidar-1.7.5.tgz",
+ "integrity": "sha512-PDkSRY7KltW3M60hSBlerxI8SFPXsO3AL/aRVsO4Kh9IHRW74Ih75gUuTd/aE4LSSFqypb10UIX3QzOJwBQMGQ==",
+ "dev": true,
+ "requires": {
+ "@types/events": "1.2.0",
+ "@types/node": "10.0.3"
+ }
+ },
+ "@types/commander": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/@types/commander/-/commander-2.12.2.tgz",
+ "integrity": "sha512-0QEFiR8ljcHp9bAbWxecjVRuAMr16ivPiGOw6KFQBVrVd0RQIcM3xKdRisH2EDWgVWujiYtHwhSkSUoAAGzH7Q==",
+ "dev": true,
+ "requires": {
+ "commander": "2.19.0"
+ }
+ },
"@types/connect": {
"version": "3.4.32",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
"integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
"dev": true,
"requires": {
- "@types/node": "*"
+ "@types/node": "10.0.3"
}
},
"@types/connect-redis": {
@@ -257,26 +265,11 @@
"integrity": "sha512-ui1DPnJxqgBhqPj0XTVyPkzffEX9DIGkb2nT2mzZ0OlsKn/u9BvRvKmjpi4Vydf2uw3z/D4UmMH4KMkilySqvw==",
"dev": true,
"requires": {
- "@types/express": "*",
- "@types/express-session": "*",
- "@types/redis": "*"
+ "@types/express": "4.11.1",
+ "@types/express-session": "1.15.8",
+ "@types/redis": "2.8.6"
}
},
- "@types/cors": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.4.tgz",
- "integrity": "sha512-ipZjBVsm2tF/n8qFGOuGBkUij9X9ZswVi9G3bx/6dz7POpVa6gVHcj1wsX/LVEn9MMF41fxK/PnZPPoTD1UFPw==",
- "dev": true,
- "requires": {
- "@types/express": "*"
- }
- },
- "@types/cucumber": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/cucumber/-/cucumber-4.0.4.tgz",
- "integrity": "sha512-oryqKjsoVkcQDFXLkUy+/xBWtnv87XD8ec3m47zgBIikSZKPOzqbVNGkDeIKosUxngR0IfwMjDtlAB5xlKlIIA==",
- "dev": true
- },
"@types/ejs": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-2.5.1.tgz",
@@ -285,7 +278,7 @@
},
"@types/events": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
"dev": true
},
@@ -295,9 +288,9 @@
"integrity": "sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g==",
"dev": true,
"requires": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "*",
- "@types/serve-static": "*"
+ "@types/body-parser": "1.17.0",
+ "@types/express-serve-static-core": "4.11.1",
+ "@types/serve-static": "1.13.2"
}
},
"@types/express-serve-static-core": {
@@ -306,19 +299,19 @@
"integrity": "sha512-EehCl3tpuqiM8RUb+0255M8PhhSwTtLfmO7zBBdv0ay/VTd/zmrqDfQdZFsa5z/PVMbH2yCMZPXsnrImpATyIw==",
"dev": true,
"requires": {
- "@types/events": "*",
- "@types/node": "*"
+ "@types/events": "1.2.0",
+ "@types/node": "10.0.3"
}
},
"@types/express-session": {
"version": "1.15.8",
- "resolved": "http://registry.npmjs.org/@types/express-session/-/express-session-1.15.8.tgz",
+ "resolved": "https://registry.npmjs.org/@types/express-session/-/express-session-1.15.8.tgz",
"integrity": "sha512-Be5N9zul4C/IH1UjRDaVJ46wkG1jsBgJlihBdWlqJWfCaiqvaVmxcyqcLey7omSFGCTIUDgdHqf0vwNjEZOSVA==",
"dev": true,
"requires": {
- "@types/events": "*",
- "@types/express": "*",
- "@types/node": "*"
+ "@types/events": "1.2.0",
+ "@types/express": "4.11.1",
+ "@types/node": "10.0.3"
}
},
"@types/form-data": {
@@ -327,7 +320,7 @@
"integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==",
"dev": true,
"requires": {
- "@types/node": "*"
+ "@types/node": "10.0.3"
}
},
"@types/helmet": {
@@ -336,34 +329,17 @@
"integrity": "sha512-E45vdnx+7+HIN5jsywhzfd+hUI/2yBFr6RT7tsMVrwp+uTvyVANBf4dyVUNW/+ZqAvcx23t2YtGTndQJR3tXIA==",
"dev": true,
"requires": {
- "@types/express": "*"
- }
- },
- "@types/jquery": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.1.tgz",
- "integrity": "sha512-N3h+rzN518yl2xKrW0o6KKdNmWZ+OwG6SoM5TBEQFF0tTv5wXPEsoOuYQ2Kt3/89XbcSZUJLdjiT/2c3BR/ApQ==",
- "dev": true
- },
- "@types/jsdom": {
- "version": "11.0.4",
- "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-11.0.4.tgz",
- "integrity": "sha512-lthMj4kw7Fzs3LjBhQ0+1faAfDrN9GFJZO5Nf/xO7fppFfxqnnQdNR28n0xMGXsx8fTHOPliE1NTkAW1bVLpYw==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "@types/tough-cookie": "*",
- "parse5": "^3.0.2"
+ "@types/express": "4.11.1"
}
},
"@types/ldapjs": {
"version": "1.0.3",
- "resolved": "http://registry.npmjs.org/@types/ldapjs/-/ldapjs-1.0.3.tgz",
+ "resolved": "https://registry.npmjs.org/@types/ldapjs/-/ldapjs-1.0.3.tgz",
"integrity": "sha512-FSj24s1WsFEfOy8taIKp2DokSZfFkjWYZb88AS5eDj3WTocZ+4DnHjhzrXEs048WQ5mfOLJXMOAnc0kSnHh5Lw==",
"dev": true,
"requires": {
- "@types/events": "*",
- "@types/node": "*"
+ "@types/events": "1.2.0",
+ "@types/node": "10.0.3"
}
},
"@types/mime": {
@@ -373,14 +349,14 @@
"dev": true
},
"@types/mocha": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.0.tgz",
- "integrity": "sha512-YeDiSEzznwZwwp766SJ6QlrTyBYUGPSIwmREHVTmktUYiT/WADdWtpt9iH0KuUSf8lZLdI4lP0X6PBzPo5//JQ==",
+ "version": "5.2.6",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.6.tgz",
+ "integrity": "sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==",
"dev": true
},
"@types/mockdate": {
"version": "2.0.0",
- "resolved": "http://registry.npmjs.org/@types/mockdate/-/mockdate-2.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/@types/mockdate/-/mockdate-2.0.0.tgz",
"integrity": "sha1-qvOIoerTsPXtbcFhGVbqe0ClfTw=",
"dev": true
},
@@ -390,9 +366,9 @@
"integrity": "sha512-G2cE4c+6+zvbWos+VbEiOdlr6sqbyrvuRmUHGAQGSkLvs+P/omIBV8FvfFTnAQW8/Op1kqXJUnK8mXSm3Dnnjg==",
"dev": true,
"requires": {
- "@types/bson": "*",
- "@types/events": "*",
- "@types/node": "*"
+ "@types/bson": "1.0.8",
+ "@types/events": "1.2.0",
+ "@types/node": "10.0.3"
}
},
"@types/nedb": {
@@ -407,14 +383,23 @@
"integrity": "sha512-J7nx6JzxmtT4zyvfLipYL7jNaxvlCWpyG7JhhCQ4fQyG+AGfovAHoYR55TFx+X8akfkUJYpt5JG6GPeFMjZaCQ==",
"dev": true
},
+ "@types/node-fetch": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.1.4.tgz",
+ "integrity": "sha512-tR1ekaXUGpmzOcDXWU9BW73YfA2/VW1DF1FH+wlJ82BbCSnWTbdX+JkqWQXWKIGsFPnPsYadbXfNgz28g+ccWg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "10.0.3"
+ }
+ },
"@types/nodemailer": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-4.6.0.tgz",
"integrity": "sha512-DWG172izmWXfShUm2Lm6nVght5TxDI1cx2cKiGPeu2f66yTnn0QY7WhC9OSybdPoxGu7UbRXNuIkIzB+NE648A==",
"dev": true,
"requires": {
- "@types/events": "*",
- "@types/node": "*"
+ "@types/events": "1.2.0",
+ "@types/node": "10.0.3"
}
},
"@types/nodemailer-direct-transport": {
@@ -423,7 +408,7 @@
"integrity": "sha512-LDFL7X58v4som2QnodajLgltFpCbF4JAqlg/Iy4SNbrnfBraJVU/ySh7gvd22Wc6V6CSpuG3SjZolJfNf7Z3bA==",
"dev": true,
"requires": {
- "@types/nodemailer": "^3"
+ "@types/nodemailer": "3.1.5"
},
"dependencies": {
"@types/nodemailer": {
@@ -432,11 +417,11 @@
"integrity": "sha512-d8GSTD/5kEf7fsghVEyU9vqRVGu+Hpmf/z+x+7+vXGvbK7kQoorulvuOX4ozPmGsJCq7oBIdHw5gFIRDvSvdag==",
"dev": true,
"requires": {
- "@types/node": "*",
- "@types/nodemailer-direct-transport": "*",
- "@types/nodemailer-ses-transport": "*",
- "@types/nodemailer-smtp-transport": "*",
- "aws-sdk": "^2.37.0"
+ "@types/node": "10.0.3",
+ "@types/nodemailer-direct-transport": "1.0.31",
+ "@types/nodemailer-ses-transport": "3.1.4",
+ "@types/nodemailer-smtp-transport": "2.7.4",
+ "aws-sdk": "2.230.1"
}
}
}
@@ -447,8 +432,8 @@
"integrity": "sha512-gWoykP57qYQ60YDD0vFPGDYN/Waq+aKI4k2UBrf5nc87+wlg71eAbb4HwDdZeANLR/wdWkAWdUjz1XgGcpUZNA==",
"dev": true,
"requires": {
- "@types/nodemailer": "^3",
- "aws-sdk": "^2.37.0"
+ "@types/nodemailer": "3.1.5",
+ "aws-sdk": "2.230.1"
},
"dependencies": {
"@types/nodemailer": {
@@ -457,11 +442,11 @@
"integrity": "sha512-d8GSTD/5kEf7fsghVEyU9vqRVGu+Hpmf/z+x+7+vXGvbK7kQoorulvuOX4ozPmGsJCq7oBIdHw5gFIRDvSvdag==",
"dev": true,
"requires": {
- "@types/node": "*",
- "@types/nodemailer-direct-transport": "*",
- "@types/nodemailer-ses-transport": "*",
- "@types/nodemailer-smtp-transport": "*",
- "aws-sdk": "^2.37.0"
+ "@types/node": "10.0.3",
+ "@types/nodemailer-direct-transport": "1.0.31",
+ "@types/nodemailer-ses-transport": "3.1.4",
+ "@types/nodemailer-smtp-transport": "2.7.4",
+ "aws-sdk": "2.230.1"
}
}
}
@@ -472,8 +457,8 @@
"integrity": "sha512-AXsNWM1gKm3ieD+Ff7FK4mmpkPnpOGVzLSM67T0l8cQGz0G7mFbcq48FhxfbrOtm92gG00k9Cv81+flXhDBuxg==",
"dev": true,
"requires": {
- "@types/node": "*",
- "@types/nodemailer": "^3"
+ "@types/node": "10.0.3",
+ "@types/nodemailer": "3.1.5"
},
"dependencies": {
"@types/nodemailer": {
@@ -482,11 +467,11 @@
"integrity": "sha512-d8GSTD/5kEf7fsghVEyU9vqRVGu+Hpmf/z+x+7+vXGvbK7kQoorulvuOX4ozPmGsJCq7oBIdHw5gFIRDvSvdag==",
"dev": true,
"requires": {
- "@types/node": "*",
- "@types/nodemailer-direct-transport": "*",
- "@types/nodemailer-ses-transport": "*",
- "@types/nodemailer-smtp-transport": "*",
- "aws-sdk": "^2.37.0"
+ "@types/node": "10.0.3",
+ "@types/nodemailer-direct-transport": "1.0.31",
+ "@types/nodemailer-ses-transport": "3.1.4",
+ "@types/nodemailer-smtp-transport": "2.7.4",
+ "aws-sdk": "2.230.1"
}
}
}
@@ -497,12 +482,6 @@
"integrity": "sha512-txsii9cwD2OUOPukfPu3Jpoi3CnznBAwRX3JF26EC4p5T6IA8AaL6PBilACyY2fJkk+ydDNo4BJrJOo/OmNaZw==",
"dev": true
},
- "@types/proxyquire": {
- "version": "1.3.28",
- "resolved": "https://registry.npmjs.org/@types/proxyquire/-/proxyquire-1.3.28.tgz",
- "integrity": "sha512-SQaNzWQ2YZSr7FqAyPPiA3FYpux2Lqh3HWMZQk47x3xbMCqgC/w0dY3dw9rGqlweDDkrySQBcaScXWeR+Yb11Q==",
- "dev": true
- },
"@types/query-string": {
"version": "5.1.0",
"resolved": "http://registry.npmjs.org/@types/query-string/-/query-string-5.1.0.tgz",
@@ -521,8 +500,8 @@
"integrity": "sha512-kaSI4XQwCfJtPiuyCXvLxCaw2N0fMZesdob3Jh01W20vNFct+3lfvJ/4yCJxbSopXOBOzpg+pGxkW6uWZrPZHA==",
"dev": true,
"requires": {
- "@types/events": "*",
- "@types/node": "*"
+ "@types/events": "1.2.0",
+ "@types/node": "10.0.3"
}
},
"@types/request": {
@@ -531,10 +510,10 @@
"integrity": "sha512-/KXM5oev+nNCLIgBjkwbk8VqxmzI56woD4VUxn95O+YeQ8hJzcSmIZ1IN3WexiqBb6srzDo2bdMbsXxgXNkz5Q==",
"dev": true,
"requires": {
- "@types/caseless": "*",
- "@types/form-data": "*",
- "@types/node": "*",
- "@types/tough-cookie": "*"
+ "@types/caseless": "0.12.1",
+ "@types/form-data": "2.2.1",
+ "@types/node": "10.0.3",
+ "@types/tough-cookie": "2.3.2"
}
},
"@types/request-promise": {
@@ -543,8 +522,8 @@
"integrity": "sha512-qlx6COxSTdSFHY9oX9v2zL1I05hgz5lwqYiXa2SFL2nDxAiG5KK8rnllLBH7k6OqzS3Ck0bWbxlGVdrZhS6oNw==",
"dev": true,
"requires": {
- "@types/bluebird": "*",
- "@types/request": "*"
+ "@types/bluebird": "3.5.20",
+ "@types/request": "2.47.0"
}
},
"@types/selenium-webdriver": {
@@ -559,8 +538,8 @@
"integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==",
"dev": true,
"requires": {
- "@types/express-serve-static-core": "*",
- "@types/mime": "*"
+ "@types/express-serve-static-core": "4.11.1",
+ "@types/mime": "2.0.0"
}
},
"@types/sinon": {
@@ -587,37 +566,26 @@
"integrity": "sha512-vOVmaruQG5EatOU/jM6yU2uCp3Lz6mK1P5Ztu4iJjfM4SVHU9XYktPUQtKlIXuahqXHdEyUarMrBEwg5Cwu+bA==",
"dev": true
},
+ "@types/url-parse": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.2.tgz",
+ "integrity": "sha512-Z25Ef2iI0lkiBAoe8qATRHQWy+BWFWuWasD6HB5prsWx2QjLmB/ngXv8v9dePw2jDwdSvET4/6J5HxmeqhslmQ=="
+ },
"@types/winston": {
"version": "2.3.9",
"resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.3.9.tgz",
"integrity": "sha512-zzruYOEtNgfS3SBjcij1F6HlH6My5n8WrBNhP3fzaRM22ba70QBC2ATs18jGr88Fy43c0z8vFJv5wJankfxv2A==",
"dev": true,
"requires": {
- "@types/node": "*"
+ "@types/node": "10.0.3"
}
},
"@types/yamljs": {
"version": "0.2.30",
- "resolved": "http://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.30.tgz",
+ "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.30.tgz",
"integrity": "sha1-0DTh0ynkbo0Pc3yajbl/aPgbU4I=",
"dev": true
},
- "JSONStream": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz",
- "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=",
- "dev": true,
- "requires": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- }
- },
- "abab": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
- "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
- "dev": true
- },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -629,79 +597,41 @@
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"requires": {
- "mime-types": "~2.1.18",
+ "mime-types": "2.1.18",
"negotiator": "0.6.1"
}
},
- "acorn": {
- "version": "3.3.0",
- "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
- "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
- },
- "acorn-es7-plugin": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz",
- "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=",
- "dev": true
- },
- "acorn-globals": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
- "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=",
- "requires": {
- "acorn": "^4.0.4"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
- }
- }
- },
- "acorn-node": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz",
- "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==",
- "dev": true,
- "requires": {
- "acorn": "^5.4.1",
- "xtend": "^4.0.1"
- },
- "dependencies": {
- "acorn": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
- "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
- "dev": true
- }
- }
- },
"ajv": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz",
"integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
"requires": {
- "fast-deep-equal": "^1.0.0",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0",
- "uri-js": "^3.0.2"
- }
- },
- "align-text": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
- "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
- "requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
+ "fast-deep-equal": "1.1.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1",
+ "uri-js": "3.0.2"
}
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true,
+ "optional": true
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
+ "ansi-colors": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
+ "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
"dev": true
},
"ansi-regex": {
@@ -716,20 +646,14 @@
"integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
"dev": true
},
- "any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
- "dev": true
- },
"anymatch": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
- "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
- "micromatch": "^2.1.5",
- "normalize-path": "^2.0.0"
+ "micromatch": "3.1.10",
+ "normalize-path": "2.1.1"
}
},
"apidoc": {
@@ -738,12 +662,12 @@
"integrity": "sha1-TuisYQ3t3csQBsPij6fdY0tKXOY=",
"dev": true,
"requires": {
- "apidoc-core": "~0.8.2",
- "fs-extra": "~3.0.1",
- "lodash": "~4.17.4",
- "markdown-it": "^8.3.1",
- "nomnom": "~1.8.1",
- "winston": "~2.3.1"
+ "apidoc-core": "0.8.3",
+ "fs-extra": "3.0.1",
+ "lodash": "4.17.11",
+ "markdown-it": "8.4.1",
+ "nomnom": "1.8.1",
+ "winston": "2.3.1"
},
"dependencies": {
"async": {
@@ -758,12 +682,12 @@
"integrity": "sha1-C0hCDZeMAYBM8CMLZIhhWYIloRk=",
"dev": true,
"requires": {
- "async": "~1.0.0",
- "colors": "1.0.x",
- "cycle": "1.0.x",
- "eyes": "0.1.x",
- "isstream": "0.1.x",
- "stack-trace": "0.0.x"
+ "async": "1.0.0",
+ "colors": "1.0.3",
+ "cycle": "1.0.3",
+ "eyes": "0.1.8",
+ "isstream": "0.1.2",
+ "stack-trace": "0.0.10"
}
}
}
@@ -774,12 +698,12 @@
"integrity": "sha1-2dY1RYKd8lDSzKBJaDqH53U2S5Y=",
"dev": true,
"requires": {
- "fs-extra": "^3.0.1",
- "glob": "^7.1.1",
- "iconv-lite": "^0.4.17",
- "klaw-sync": "^2.1.0",
- "lodash": "~4.17.4",
- "semver": "~5.3.0"
+ "fs-extra": "3.0.1",
+ "glob": "7.1.2",
+ "iconv-lite": "0.4.19",
+ "klaw-sync": "2.1.0",
+ "lodash": "4.17.11",
+ "semver": "5.3.0"
},
"dependencies": {
"glob": {
@@ -788,12 +712,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"semver": {
@@ -809,17 +733,14 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"requires": {
- "sprintf-js": "~1.0.2"
+ "sprintf-js": "1.0.3"
}
},
"arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1"
- }
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
},
"arr-flatten": {
"version": "1.1.0",
@@ -827,16 +748,10 @@
"integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
"dev": true
},
- "array-equal": {
- "version": "1.0.0",
- "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
- "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
- "dev": true
- },
- "array-filter": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
- "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true
},
"array-find-index": {
@@ -850,16 +765,10 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
- "array-map": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
- "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
- "dev": true
- },
- "array-reduce": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
- "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "array-from": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz",
+ "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=",
"dev": true
},
"array-union": {
@@ -868,7 +777,7 @@
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
"requires": {
- "array-uniq": "^1.0.1"
+ "array-uniq": "1.0.2"
}
},
"array-uniq": {
@@ -877,9 +786,9 @@
"integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0="
},
"array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
"arrify": {
@@ -888,68 +797,21 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
- },
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
},
- "asn1.js": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
- "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
- "assert": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
- "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
- "dev": true,
- "requires": {
- "util": "0.10.3"
- }
- },
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
- "assertion-error-formatter": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz",
- "integrity": "sha512-cjC3jUCh9spkroKue5PDSKH5RFQ/KNuZJhk3GwHYmB/8qqETxLOmMdLH+ohi/VukNzxDlMvIe7zScvLoOdhb6Q==",
- "dev": true,
- "requires": {
- "diff": "^3.0.0",
- "pad-right": "^0.2.2",
- "repeat-string": "^1.6.1"
- }
- },
- "astw": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz",
- "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=",
- "dev": true,
- "requires": {
- "acorn": "^4.0.3"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- }
- }
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
},
"async": {
"version": "0.2.10",
@@ -962,18 +824,18 @@
"integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
"dev": true
},
- "async-limiter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
- "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
- "dev": true
- },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
"aws-sdk": {
"version": "2.230.1",
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.230.1.tgz",
@@ -1018,9 +880,9 @@
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
- "chalk": "^1.1.3",
- "esutils": "^2.0.2",
- "js-tokens": "^3.0.2"
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
},
"dependencies": {
"ansi-styles": {
@@ -1031,15 +893,15 @@
},
"chalk": {
"version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"strip-ansi": {
@@ -1048,42 +910,17 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
}
}
},
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "requires": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
- }
- },
- "babel-types": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
- "requires": {
- "babel-runtime": "^6.26.0",
- "esutils": "^2.0.2",
- "lodash": "^4.17.4",
- "to-fast-properties": "^1.0.3"
- }
- },
- "babylon": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
- },
"backoff": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz",
"integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=",
"requires": {
- "precond": "0.2"
+ "precond": "0.2.3"
}
},
"balanced-match": {
@@ -1091,6 +928,73 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "1.0.1",
+ "class-utils": "0.3.6",
+ "component-emitter": "1.2.1",
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "mixin-deep": "1.3.1",
+ "pascalcase": "0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
"base32.js": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.0.1.tgz",
@@ -1108,15 +1012,9 @@
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"requires": {
- "tweetnacl": "^0.14.3"
+ "tweetnacl": "0.14.5"
}
},
- "becke-ch--regex--s0-0-v1--base--pl--lib": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz",
- "integrity": "sha1-Qpzuu/pffpNueNc/vcfacWKyDiA=",
- "dev": true
- },
"binary-extensions": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
@@ -1128,7 +1026,7 @@
"resolved": "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz",
"integrity": "sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q=",
"requires": {
- "underscore": "~1.4.4"
+ "underscore": "1.4.4"
}
},
"bluebird": {
@@ -1136,131 +1034,116 @@
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
"integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw="
},
- "bn.js": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
- "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
- "dev": true
- },
- "body": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
- "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=",
- "dev": true,
- "requires": {
- "continuable-cache": "^0.3.1",
- "error": "^7.0.0",
- "raw-body": "~1.1.0",
- "safe-json-parse": "~1.0.1"
- },
- "dependencies": {
- "bytes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
- "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
- "dev": true
- },
- "raw-body": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
- "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=",
- "dev": true,
- "requires": {
- "bytes": "1",
- "string_decoder": "0.10"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
- }
- },
"body-parser": {
"version": "1.18.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
"requires": {
"bytes": "3.0.0",
- "content-type": "~1.0.4",
+ "content-type": "1.0.4",
"debug": "2.6.9",
- "depd": "~1.1.1",
- "http-errors": "~1.6.2",
+ "depd": "1.1.2",
+ "http-errors": "1.6.3",
"iconv-lite": "0.4.19",
- "on-finished": "~2.3.0",
+ "on-finished": "2.3.0",
"qs": "6.5.1",
"raw-body": "2.3.2",
- "type-is": "~1.6.15"
+ "type-is": "1.6.16"
}
},
- "bootstrap": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz",
- "integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w==",
- "dev": true
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "2.0.0",
+ "camelcase": "4.1.0",
+ "chalk": "2.4.2",
+ "cli-boxes": "1.0.0",
+ "string-width": "2.1.1",
+ "term-size": "1.2.0",
+ "widest-line": "2.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
- "balanced-match": "^1.0.0",
+ "balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"dev": true,
"requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
- }
- },
- "brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
- "dev": true
- },
- "browser-pack": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
- "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "combine-source-map": "~0.8.0",
- "defined": "^1.0.0",
- "safe-buffer": "^5.1.1",
- "through2": "^2.0.0",
- "umd": "^3.0.0"
- }
- },
- "browser-process-hrtime": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz",
- "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=",
- "dev": true
- },
- "browser-resolve": {
- "version": "1.11.2",
- "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
- "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
- "dev": true,
- "requires": {
- "resolve": "1.1.7"
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.2",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
},
"dependencies": {
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
}
}
},
@@ -1270,237 +1153,6 @@
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
- "browserify": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.0.tgz",
- "integrity": "sha512-yotdAkp/ZbgDesHQBYU37zjc29JDH4iXT8hjzM1fdUVWogjARX0S1cKeX24Ci6zZ+jG+ADmCTRt6xvtmJnI+BQ==",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "assert": "^1.4.0",
- "browser-pack": "^6.0.1",
- "browser-resolve": "^1.11.0",
- "browserify-zlib": "~0.2.0",
- "buffer": "^5.0.2",
- "cached-path-relative": "^1.0.0",
- "concat-stream": "^1.6.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "~1.0.0",
- "crypto-browserify": "^3.0.0",
- "defined": "^1.0.0",
- "deps-sort": "^2.0.0",
- "domain-browser": "^1.2.0",
- "duplexer2": "~0.1.2",
- "events": "^2.0.0",
- "glob": "^7.1.0",
- "has": "^1.0.0",
- "htmlescape": "^1.1.0",
- "https-browserify": "^1.0.0",
- "inherits": "~2.0.1",
- "insert-module-globals": "^7.0.0",
- "labeled-stream-splicer": "^2.0.0",
- "mkdirp": "^0.5.0",
- "module-deps": "^6.0.0",
- "os-browserify": "~0.3.0",
- "parents": "^1.0.1",
- "path-browserify": "~0.0.0",
- "process": "~0.11.0",
- "punycode": "^1.3.2",
- "querystring-es3": "~0.2.0",
- "read-only-stream": "^2.0.0",
- "readable-stream": "^2.0.2",
- "resolve": "^1.1.4",
- "shasum": "^1.0.0",
- "shell-quote": "^1.6.1",
- "stream-browserify": "^2.0.0",
- "stream-http": "^2.0.0",
- "string_decoder": "^1.1.1",
- "subarg": "^1.0.0",
- "syntax-error": "^1.1.1",
- "through2": "^2.0.0",
- "timers-browserify": "^1.0.1",
- "tty-browserify": "0.0.1",
- "url": "~0.11.0",
- "util": "~0.10.1",
- "vm-browserify": "^1.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "buffer": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz",
- "integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==",
- "dev": true,
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
- }
- },
- "events": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/events/-/events-2.0.0.tgz",
- "integrity": "sha512-r/M5YkNg9zwI8QbSf7tsDWWJvO3PGwZXyG7GpFAxtMASnHL2eblFd7iHiGPtyGKKFPZ59S63NeX10Ws6WqGDcg==",
- "dev": true
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- },
- "url": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
- "dev": true,
- "requires": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
- },
- "dependencies": {
- "punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
- "dev": true
- }
- }
- }
- }
- },
- "browserify-aes": {
- "version": "1.2.0",
- "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dev": true,
- "requires": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "browserify-cache-api": {
- "version": "3.0.1",
- "resolved": "http://registry.npmjs.org/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz",
- "integrity": "sha1-liR+hT8Gj9bg1FzHPwuyzZd47wI=",
- "dev": true,
- "requires": {
- "async": "^1.5.2",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "async": {
- "version": "1.5.2",
- "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- }
- }
- },
- "browserify-cipher": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dev": true,
- "requires": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
- }
- },
- "browserify-des": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
- "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1"
- }
- },
- "browserify-incremental": {
- "version": "3.1.1",
- "resolved": "http://registry.npmjs.org/browserify-incremental/-/browserify-incremental-3.1.1.tgz",
- "integrity": "sha1-BxPLdYckemMqnwjPG9FpuHi2Koo=",
- "dev": true,
- "requires": {
- "JSONStream": "^0.10.0",
- "browserify-cache-api": "^3.0.0",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "JSONStream": {
- "version": "0.10.0",
- "resolved": "http://registry.npmjs.org/JSONStream/-/JSONStream-0.10.0.tgz",
- "integrity": "sha1-dDSdDYlSK3HzDwoD/5vSDKbxKsA=",
- "dev": true,
- "requires": {
- "jsonparse": "0.0.5",
- "through": ">=2.2.7 <3"
- }
- },
- "jsonparse": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
- "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=",
- "dev": true
- }
- }
- },
- "browserify-rsa": {
- "version": "4.0.1",
- "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "randombytes": "^2.0.1"
- }
- },
- "browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
- }
- },
- "browserify-zlib": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
- "dev": true,
- "requires": {
- "pako": "~1.0.5"
- }
- },
"bson": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz",
@@ -1508,13 +1160,13 @@
},
"buffer": {
"version": "4.9.1",
- "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"dev": true,
"requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
+ "base64-js": "1.3.0",
+ "ieee754": "1.1.8",
+ "isarray": "1.0.0"
}
},
"buffer-from": {
@@ -1523,33 +1175,21 @@
"integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==",
"dev": true
},
- "buffer-xor": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
- "dev": true
- },
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
},
- "builtin-status-codes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
- "dev": true
- },
"bunyan": {
"version": "1.8.12",
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz",
"integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=",
"requires": {
- "dtrace-provider": "~0.8",
- "moment": "^2.10.6",
- "mv": "~2",
- "safe-json-stringify": "~1"
+ "dtrace-provider": "0.8.6",
+ "moment": "2.22.1",
+ "mv": "2.1.1",
+ "safe-json-stringify": "1.1.0"
}
},
"bytes": {
@@ -1557,31 +1197,45 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
},
- "cached-path-relative": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz",
- "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==",
- "dev": true
- },
- "call-signature": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz",
- "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=",
- "dev": true
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "1.0.0",
+ "component-emitter": "1.2.1",
+ "get-value": "2.0.6",
+ "has-value": "1.0.0",
+ "isobject": "3.0.1",
+ "set-value": "2.0.0",
+ "to-object-path": "0.3.0",
+ "union-value": "1.0.0",
+ "unset-value": "1.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
},
"camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "dev": true
},
"camelcase-keys": {
"version": "2.1.0",
- "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
},
"dependencies": {
"camelcase": {
@@ -1597,55 +1251,48 @@
"resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
"integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
},
+ "capture-stack-trace": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
+ "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
+ "dev": true
+ },
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
- "center-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
- "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
- "requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
- }
- },
"chalk": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
"integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
"dev": true,
"requires": {
- "ansi-styles": "~1.0.0",
- "has-color": "~0.1.0",
- "strip-ansi": "~0.1.0"
- }
- },
- "character-parser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
- "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=",
- "requires": {
- "is-regex": "^1.0.3"
+ "ansi-styles": "1.0.0",
+ "has-color": "0.1.7",
+ "strip-ansi": "0.1.1"
}
},
"chokidar": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
- "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
"dev": true,
"requires": {
- "anymatch": "^1.3.0",
- "async-each": "^1.0.0",
- "fsevents": "^1.0.0",
- "glob-parent": "^2.0.0",
- "inherits": "^2.0.1",
- "is-binary-path": "^1.0.0",
- "is-glob": "^2.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.0.0"
+ "anymatch": "2.0.0",
+ "async-each": "1.0.1",
+ "braces": "2.3.2",
+ "fsevents": "1.2.4",
+ "glob-parent": "3.1.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "4.0.0",
+ "lodash.debounce": "4.0.8",
+ "normalize-path": "2.1.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0",
+ "upath": "1.1.0"
}
},
"chromedriver": {
@@ -1654,48 +1301,80 @@
"integrity": "sha512-gh77kozqCPTtr74RZpnSgBCoClpNznsg2NEKwi8t54UyzrcpMRkG9nH1qhwI+ojLQpsdpsSjGiASSdMsFZT/mw==",
"dev": true,
"requires": {
- "del": "^3.0.0",
- "extract-zip": "^1.6.6",
- "kew": "^0.7.0",
- "mkdirp": "^0.5.1",
- "request": "^2.85.0"
+ "del": "3.0.0",
+ "extract-zip": "1.6.6",
+ "kew": "0.7.0",
+ "mkdirp": "0.5.1",
+ "request": "2.88.0"
}
},
- "cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "dev": true
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "arr-union": "3.1.0",
+ "define-property": "0.2.5",
+ "isobject": "3.0.1",
+ "static-extend": "0.1.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
- "clean-css": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz",
- "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=",
- "requires": {
- "source-map": "0.5.x"
- }
- },
- "cli-table": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
- "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
- "dev": true,
- "requires": {
- "colors": "1.0.3"
- }
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
},
"cliui": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
"requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
- "wordwrap": "0.0.2"
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
}
},
"co": {
@@ -1716,13 +1395,23 @@
"integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=",
"dev": true
},
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "1.0.0",
+ "object-visit": "1.0.1"
+ }
+ },
"color-convert": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"dev": true,
"requires": {
- "color-name": "^1.1.1"
+ "color-name": "1.1.3"
}
},
"color-name": {
@@ -1736,31 +1425,25 @@
"resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
},
- "combine-source-map": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
- "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
- "dev": true,
- "requires": {
- "convert-source-map": "~1.1.0",
- "inline-source-map": "~0.6.0",
- "lodash.memoize": "~3.0.3",
- "source-map": "~0.5.3"
- }
- },
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
- "delayed-stream": "~1.0.0"
+ "delayed-stream": "1.0.0"
}
},
"commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"concat-map": {
@@ -1768,16 +1451,297 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "concurrently": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.0.tgz",
+ "integrity": "sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg==",
"dev": true,
"requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
+ "chalk": "2.4.2",
+ "date-fns": "1.30.1",
+ "lodash": "4.17.11",
+ "read-pkg": "4.0.1",
+ "rxjs": "6.3.3",
+ "spawn-command": "0.0.2-1",
+ "supports-color": "4.5.0",
+ "tree-kill": "1.2.1",
+ "yargs": "12.0.5"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "camelcase": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "1.0.5",
+ "path-key": "2.0.1",
+ "semver": "5.5.0",
+ "shebang-command": "1.2.0",
+ "which": "1.2.14"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "6.0.5",
+ "get-stream": "4.1.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "3.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
+ "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "0.1.3",
+ "mimic-fn": "1.2.0",
+ "p-is-promise": "1.1.0"
+ }
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "1.0.0",
+ "lcid": "2.0.0",
+ "mem": "4.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "2.1.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.2",
+ "json-parse-better-errors": "1.0.2"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
+ "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
+ "dev": true,
+ "requires": {
+ "normalize-package-data": "2.4.0",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ }
+ }
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "dev": true,
+ "requires": {
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "3.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "11.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "5.0.0",
+ "decamelize": "1.2.0"
+ }
+ }
+ }
+ },
+ "configstore": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
+ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "4.2.0",
+ "graceful-fs": "4.1.11",
+ "make-dir": "1.3.0",
+ "unique-string": "1.0.0",
+ "write-file-atomic": "2.3.0",
+ "xdg-basedir": "3.0.0"
}
},
"connect-redis": {
@@ -1785,8 +1749,8 @@
"resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.3.3.tgz",
"integrity": "sha512-rpWsW2uk1uOe/ccY/JvW+RiLrhZm7auIx8z4yR+KXemFTIhJyD58jXiJbI0E/fZCnybawpdSqOZ+6/ah6aBeyg==",
"requires": {
- "debug": "^3.1.0",
- "redis": "^2.1.0"
+ "debug": "3.1.0",
+ "redis": "2.8.0"
},
"dependencies": {
"debug": {
@@ -1799,32 +1763,6 @@
}
}
},
- "console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
- "dev": true,
- "requires": {
- "date-now": "^0.1.4"
- }
- },
- "constantinople": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz",
- "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==",
- "requires": {
- "@types/babel-types": "^7.0.0",
- "@types/babylon": "^6.16.2",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0"
- }
- },
- "constants-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
- "dev": true
- },
"content-disposition": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
@@ -1840,18 +1778,6 @@
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
- "continuable-cache": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
- "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.1.3",
- "resolved": "http://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
- "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
- "dev": true
- },
"cookie": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
@@ -1862,10 +1788,11 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
- "core-js": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz",
- "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs="
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -1877,41 +1804,13 @@
"resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
"integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms="
},
- "create-ecdh": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz",
- "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==",
+ "create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.0.0"
- }
- },
- "create-hash": {
- "version": "1.2.0",
- "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
- },
- "create-hmac": {
- "version": "1.1.7",
- "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
+ "capture-stack-trace": "1.0.1"
}
},
"cross-spawn": {
@@ -1920,9 +1819,9 @@
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "lru-cache": "4.1.2",
+ "shebang-command": "1.2.0",
+ "which": "1.2.14"
}
},
"crypt3": {
@@ -1930,115 +1829,14 @@
"resolved": "https://registry.npmjs.org/crypt3/-/crypt3-1.0.0.tgz",
"integrity": "sha1-imWPHRaZm1UFrclszNe8aDIUvv4=",
"requires": {
- "nan": "^2.1.0",
- "q": "^1.0.1"
+ "nan": "2.10.0",
+ "q": "1.5.1"
}
},
- "crypto-browserify": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
- "requires": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
- }
- },
- "cssom": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
- "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
- "dev": true
- },
- "cssstyle": {
- "version": "0.2.37",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
- "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
- "dev": true,
- "requires": {
- "cssom": "0.3.x"
- }
- },
- "cucumber": {
- "version": "4.2.1",
- "resolved": "http://registry.npmjs.org/cucumber/-/cucumber-4.2.1.tgz",
- "integrity": "sha512-3gQ0Vv4kSHsvXEFC6b1c+TfLRDzWD1/kU7e5vm8Kh8j35b95k6favan9/4ixcBNqd7UsU1T6FYcawC87+DlNKw==",
- "dev": true,
- "requires": {
- "assertion-error-formatter": "^2.0.1",
- "babel-runtime": "^6.11.6",
- "bluebird": "^3.4.1",
- "cli-table": "^0.3.1",
- "colors": "^1.1.2",
- "commander": "^2.9.0",
- "cucumber-expressions": "^5.0.13",
- "cucumber-tag-expressions": "^1.1.1",
- "duration": "^0.2.0",
- "escape-string-regexp": "^1.0.5",
- "figures": "2.0.0",
- "gherkin": "^5.0.0",
- "glob": "^7.0.0",
- "indent-string": "^3.1.0",
- "is-generator": "^1.0.2",
- "is-stream": "^1.1.0",
- "knuth-shuffle-seeded": "^1.0.6",
- "lodash": "^4.17.4",
- "mz": "^2.4.0",
- "progress": "^2.0.0",
- "resolve": "^1.3.3",
- "serialize-error": "^2.1.0",
- "stack-chain": "^2.0.0",
- "stacktrace-js": "^2.0.0",
- "string-argv": "0.0.2",
- "title-case": "^2.1.1",
- "util-arity": "^1.0.2",
- "verror": "^1.9.0"
- },
- "dependencies": {
- "colors": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.3.tgz",
- "integrity": "sha512-qTfM2pNFeMZcLvf/RbrVAzDEVttZjFhaApfx9dplNjvHSX88Ui66zBRb/4YGob/xUWxDceirgoC1lT676asfCQ==",
- "dev": true
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "cucumber-expressions": {
- "version": "5.0.17",
- "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-5.0.17.tgz",
- "integrity": "sha1-GS9p/JlKYFEnql33JFGbXLfftwg=",
- "dev": true,
- "requires": {
- "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.2.0"
- }
- },
- "cucumber-tag-expressions": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-1.1.1.tgz",
- "integrity": "sha1-f1x7cACbwrZmWRv+ZIVFeL7e6Fo=",
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
"dev": true
},
"currently-unhandled": {
@@ -2047,7 +1845,7 @@
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
"requires": {
- "array-find-index": "^1.0.1"
+ "array-find-index": "1.0.2"
}
},
"cycle": {
@@ -2055,21 +1853,12 @@
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
"integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI="
},
- "d": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz",
- "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=",
- "dev": true,
- "requires": {
- "es5-ext": "~0.10.2"
- }
- },
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
}
},
"dasherize": {
@@ -2077,21 +1866,10 @@
"resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz",
"integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg="
},
- "data-urls": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz",
- "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==",
- "dev": true,
- "requires": {
- "abab": "^1.0.4",
- "whatwg-mimetype": "^2.0.0",
- "whatwg-url": "^6.4.0"
- }
- },
- "date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
- "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "date-fns": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
+ "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
"dev": true
},
"dateformat": {
@@ -2100,8 +1878,8 @@
"integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1",
- "meow": "^3.3.0"
+ "get-stdin": "4.0.1",
+ "meow": "3.7.0"
}
},
"debug": {
@@ -2115,7 +1893,8 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
},
"decode-uri-component": {
"version": "0.2.0",
@@ -2123,6 +1902,12 @@
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
"dev": true
},
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
@@ -2130,20 +1915,66 @@
"dev": true
},
"define-properties": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
- "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"requires": {
- "foreach": "^2.0.5",
- "object-keys": "^1.0.8"
+ "object-keys": "1.1.0"
}
},
- "defined": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
- "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
- "dev": true
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
},
"del": {
"version": "3.0.0",
@@ -2151,12 +1982,12 @@
"integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
"dev": true,
"requires": {
- "globby": "^6.1.0",
- "is-path-cwd": "^1.0.0",
- "is-path-in-cwd": "^1.0.0",
- "p-map": "^1.1.1",
- "pify": "^3.0.0",
- "rimraf": "^2.2.8"
+ "globby": "6.1.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.1",
+ "p-map": "1.2.0",
+ "pify": "3.0.0",
+ "rimraf": "2.4.5"
}
},
"delayed-stream": {
@@ -2170,51 +2001,16 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
- "deps-sort": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
- "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "shasum": "^1.0.0",
- "subarg": "^1.0.0",
- "through2": "^2.0.0"
- }
- },
- "des.js": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
- "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
- "detective": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/detective/-/detective-5.1.0.tgz",
- "integrity": "sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ==",
- "dev": true,
- "requires": {
- "acorn-node": "^1.3.0",
- "defined": "^1.0.0",
- "minimist": "^1.1.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true
},
"diff": {
"version": "3.5.0",
@@ -2222,53 +2018,25 @@
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
"dev": true
},
- "diff-match-patch": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz",
- "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg=",
- "dev": true
- },
- "diffie-hellman": {
- "version": "5.0.3",
- "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- }
- },
"dns-prefetch-control": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz",
"integrity": "sha1-YN20V3dOF48flBXwyrsOhbCzALI="
},
- "doctypes": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
- "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk="
- },
- "domain-browser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "dev": true
- },
- "domexception": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
- "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
- "dev": true,
- "requires": {
- "webidl-conversions": "^4.0.2"
- }
- },
"dont-sniff-mimetype": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz",
"integrity": "sha1-WTKJDcn04vGeXrAqIAJuXl78j1g="
},
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "dev": true,
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
"double-ended-queue": {
"version": "2.1.0-0",
"resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
@@ -2280,38 +2048,13 @@
"integrity": "sha1-QooiOv4DQl0s1tY0f99AxmkDVj0=",
"optional": true,
"requires": {
- "nan": "^2.3.3"
+ "nan": "2.10.0"
}
},
- "duplexer": {
- "version": "0.1.1",
- "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
- "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
- "dev": true
- },
- "duplexer2": {
+ "duplexer3": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.2"
- }
- },
- "duration": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.0.tgz",
- "integrity": "sha1-X5xN+q//ZV3phhEu/iXFl43YUUY=",
- "dev": true,
- "requires": {
- "d": "~0.1.1",
- "es5-ext": "~0.10.2"
- }
- },
- "eastasianwidth": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.1.1.tgz",
- "integrity": "sha1-RNZW3p2kFWlEZzNTZfsxR7hXK3w=",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
"dev": true
},
"ecc-jsbn": {
@@ -2320,8 +2063,8 @@
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2"
}
},
"ee-first": {
@@ -2334,111 +2077,58 @@
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz",
"integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ=="
},
- "elliptic": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
- "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
- "dev": true,
- "requires": {
- "bn.js": "^4.4.0",
- "brorand": "^1.0.1",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.0"
- }
- },
- "empower": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/empower/-/empower-1.2.3.tgz",
- "integrity": "sha1-bw2nNEf07dg4/sXGAxOoi6XLhSs=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0",
- "empower-core": "^0.6.2"
- }
- },
- "empower-core": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz",
- "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=",
- "dev": true,
- "requires": {
- "call-signature": "0.0.2",
- "core-js": "^2.0.0"
- }
- },
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
"dev": true
},
- "error": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz",
- "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=",
- "dev": true,
- "requires": {
- "string-template": "~0.2.1",
- "xtend": "~4.0.0"
- }
- },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
- "is-arrayish": "^0.2.1"
+ "is-arrayish": "0.2.1"
}
},
- "error-stack-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz",
- "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=",
+ "es-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
"dev": true,
"requires": {
- "stackframe": "^1.0.3"
+ "es-to-primitive": "1.2.0",
+ "function-bind": "1.1.1",
+ "has": "1.0.3",
+ "is-callable": "1.1.4",
+ "is-regex": "1.0.4",
+ "object-keys": "1.1.0"
}
},
- "es5-ext": {
- "version": "0.10.42",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz",
- "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==",
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
"dev": true,
"requires": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.1",
- "next-tick": "1"
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- },
- "dependencies": {
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "^0.10.9"
- }
- }
+ "is-callable": "1.1.4",
+ "is-date-object": "1.0.1",
+ "is-symbol": "1.0.2"
}
},
"es6-promise": {
@@ -2447,27 +2137,6 @@
"integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
"dev": true
},
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
- },
- "dependencies": {
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "^0.10.9"
- }
- }
- }
- },
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -2485,11 +2154,11 @@
"integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
"dev": true,
"requires": {
- "esprima": "^2.7.1",
- "estraverse": "^1.9.1",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.2.0"
+ "esprima": "2.7.3",
+ "estraverse": "1.9.3",
+ "esutils": "2.0.2",
+ "optionator": "0.8.2",
+ "source-map": "0.2.0"
},
"dependencies": {
"source-map": {
@@ -2499,7 +2168,7 @@
"dev": true,
"optional": true,
"requires": {
- "amdefine": ">=0.0.4"
+ "amdefine": "1.0.1"
}
}
}
@@ -2510,15 +2179,6 @@
"integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
"dev": true
},
- "espurify": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz",
- "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0"
- }
- },
"estraverse": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
@@ -2528,7 +2188,8 @@
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
},
"etag": {
"version": "1.8.1",
@@ -2543,33 +2204,23 @@
},
"events": {
"version": "1.1.1",
- "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
"dev": true
},
- "evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dev": true,
- "requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
- }
- },
"execa": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
"integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
}
},
"exit": {
@@ -2579,21 +2230,47 @@
"dev": true
},
"expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
"dev": true,
"requires": {
- "is-posix-bracket": "^0.1.0"
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
}
},
- "expand-range": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
"dev": true,
"requires": {
- "fill-range": "^2.1.0"
+ "homedir-polyfill": "1.0.3"
}
},
"expect-ct": {
@@ -2606,36 +2283,36 @@
"resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
"requires": {
- "accepts": "~1.3.5",
+ "accepts": "1.3.5",
"array-flatten": "1.1.1",
"body-parser": "1.18.2",
"content-disposition": "0.5.2",
- "content-type": "~1.0.4",
+ "content-type": "1.0.4",
"cookie": "0.3.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
+ "depd": "1.1.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
"finalhandler": "1.1.1",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
+ "methods": "1.1.2",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
"path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.3",
+ "proxy-addr": "2.0.3",
"qs": "6.5.1",
- "range-parser": "~1.2.0",
+ "range-parser": "1.2.0",
"safe-buffer": "5.1.1",
"send": "0.16.2",
"serve-static": "1.13.2",
"setprototypeof": "1.1.0",
- "statuses": "~1.4.0",
- "type-is": "~1.6.16",
+ "statuses": "1.4.0",
+ "type-is": "1.6.16",
"utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "vary": "1.1.2"
},
"dependencies": {
"statuses": {
@@ -2650,7 +2327,7 @@
"resolved": "https://registry.npmjs.org/express-request-id/-/express-request-id-1.4.0.tgz",
"integrity": "sha1-J3ssCUmAPmgQTJ1Fw+aJNPlr9aI=",
"requires": {
- "uuid": "^3.0.1"
+ "uuid": "3.2.1"
}
},
"express-session": {
@@ -2662,10 +2339,10 @@
"cookie-signature": "1.0.6",
"crc": "3.4.4",
"debug": "2.6.9",
- "depd": "~1.1.1",
- "on-headers": "~1.0.1",
- "parseurl": "~1.3.2",
- "uid-safe": "~2.1.5",
+ "depd": "1.1.2",
+ "on-headers": "1.0.1",
+ "parseurl": "1.3.2",
+ "uid-safe": "2.1.5",
"utils-merge": "1.0.1"
}
},
@@ -2675,13 +2352,96 @@
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
"requires": {
- "is-extglob": "^1.0.0"
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
}
},
"extract-zip": {
@@ -2702,9 +2462,9 @@
"integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "typedarray": "0.0.6"
}
},
"mkdirp": {
@@ -2744,31 +2504,13 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
- "faye-websocket": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
- "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
- "dev": true,
- "requires": {
- "websocket-driver": ">=0.5.1"
- }
- },
"fd-slicer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
"dev": true,
"requires": {
- "pend": "~1.2.0"
- }
- },
- "figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
+ "pend": "1.2.0"
}
},
"file-sync-cmp": {
@@ -2777,47 +2519,41 @@
"integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=",
"dev": true
},
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
- "dev": true
- },
- "fill-keys": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/fill-keys/-/fill-keys-1.0.2.tgz",
- "integrity": "sha1-mo+jb06K1jTjv2tPPIiCVRRS6yA=",
- "dev": true,
- "requires": {
- "is-object": "~1.0.1",
- "merge-descriptors": "~1.0.0"
- }
- },
"fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^3.0.0",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
}
},
"finalhandler": {
"version": "1.1.1",
- "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"requires": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
- "statuses": "~1.4.0",
- "unpipe": "~1.0.0"
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.4.0",
+ "unpipe": "1.0.0"
},
"dependencies": {
"statuses": {
@@ -2833,8 +2569,8 @@
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
}
},
"findup-sync": {
@@ -2843,7 +2579,7 @@
"integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
"dev": true,
"requires": {
- "glob": "~5.0.0"
+ "glob": "5.0.15"
},
"dependencies": {
"glob": {
@@ -2852,36 +2588,38 @@
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
}
}
},
+ "flat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
+ "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "2.0.3"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
+ "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
+ "dev": true
+ }
+ }
+ },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- },
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
- "dev": true
- },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -2894,9 +2632,9 @@
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.7",
+ "mime-types": "2.1.18"
}
},
"forwarded": {
@@ -2904,6 +2642,15 @@
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
},
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "0.2.2"
+ }
+ },
"frameguard": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.0.0.tgz",
@@ -2920,9 +2667,9 @@
"integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^3.0.0",
- "universalify": "^0.1.0"
+ "graceful-fs": "4.1.11",
+ "jsonfile": "3.0.1",
+ "universalify": "0.1.1"
}
},
"fs.realpath": {
@@ -2937,8 +2684,8 @@
"dev": true,
"optional": true,
"requires": {
- "nan": "^2.9.2",
- "node-pre-gyp": "^0.10.0"
+ "nan": "2.10.0",
+ "node-pre-gyp": "0.10.0"
},
"dependencies": {
"abbrev": {
@@ -2950,8 +2697,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"aproba": {
"version": "1.2.0",
@@ -2965,23 +2711,21 @@
"dev": true,
"optional": true,
"requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
+ "delegates": "1.0.0",
+ "readable-stream": "2.3.6"
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "balanced-match": "^1.0.0",
+ "balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
@@ -2994,20 +2738,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -3048,7 +2789,7 @@
"dev": true,
"optional": true,
"requires": {
- "minipass": "^2.2.1"
+ "minipass": "2.2.4"
}
},
"fs.realpath": {
@@ -3063,14 +2804,14 @@
"dev": true,
"optional": true,
"requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
+ "aproba": "1.2.0",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.2"
}
},
"glob": {
@@ -3079,12 +2820,12 @@
"dev": true,
"optional": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"has-unicode": {
@@ -3099,7 +2840,7 @@
"dev": true,
"optional": true,
"requires": {
- "safer-buffer": "^2.1.0"
+ "safer-buffer": "2.1.2"
}
},
"ignore-walk": {
@@ -3108,7 +2849,7 @@
"dev": true,
"optional": true,
"requires": {
- "minimatch": "^3.0.4"
+ "minimatch": "3.0.4"
}
},
"inflight": {
@@ -3117,15 +2858,14 @@
"dev": true,
"optional": true,
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"ini": {
"version": "1.3.5",
@@ -3137,9 +2877,8 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"isarray": {
@@ -3152,25 +2891,22 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "safe-buffer": "^5.1.1",
- "yallist": "^3.0.0"
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
}
},
"minizlib": {
@@ -3179,14 +2915,13 @@
"dev": true,
"optional": true,
"requires": {
- "minipass": "^2.2.1"
+ "minipass": "2.2.4"
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -3203,9 +2938,9 @@
"dev": true,
"optional": true,
"requires": {
- "debug": "^2.1.2",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
+ "debug": "2.6.9",
+ "iconv-lite": "0.4.21",
+ "sax": "1.2.4"
}
},
"node-pre-gyp": {
@@ -3214,16 +2949,16 @@
"dev": true,
"optional": true,
"requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.0",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.1.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
+ "detect-libc": "1.0.3",
+ "mkdirp": "0.5.1",
+ "needle": "2.2.0",
+ "nopt": "4.0.1",
+ "npm-packlist": "1.1.10",
+ "npmlog": "4.1.2",
+ "rc": "1.2.7",
+ "rimraf": "2.6.2",
+ "semver": "5.5.0",
+ "tar": "4.4.1"
}
},
"nopt": {
@@ -3232,8 +2967,8 @@
"dev": true,
"optional": true,
"requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
+ "abbrev": "1.1.1",
+ "osenv": "0.1.5"
}
},
"npm-bundled": {
@@ -3248,8 +2983,8 @@
"dev": true,
"optional": true,
"requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1"
+ "ignore-walk": "3.0.1",
+ "npm-bundled": "1.0.3"
}
},
"npmlog": {
@@ -3258,17 +2993,16 @@
"dev": true,
"optional": true,
"requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
+ "are-we-there-yet": "1.1.4",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -3280,9 +3014,8 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"os-homedir": {
@@ -3303,8 +3036,8 @@
"dev": true,
"optional": true,
"requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
}
},
"path-is-absolute": {
@@ -3325,10 +3058,10 @@
"dev": true,
"optional": true,
"requires": {
- "deep-extend": "^0.5.1",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
+ "deep-extend": "0.5.1",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
},
"dependencies": {
"minimist": {
@@ -3345,13 +3078,13 @@
"dev": true,
"optional": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"rimraf": {
@@ -3360,14 +3093,13 @@
"dev": true,
"optional": true,
"requires": {
- "glob": "^7.0.5"
+ "glob": "7.1.2"
}
},
"safe-buffer": {
"version": "5.1.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -3403,11 +3135,10 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
}
},
"string_decoder": {
@@ -3416,16 +3147,15 @@
"dev": true,
"optional": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.1"
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"strip-json-comments": {
@@ -3440,13 +3170,13 @@
"dev": true,
"optional": true,
"requires": {
- "chownr": "^1.0.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.2.4",
- "minizlib": "^1.1.0",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.1",
- "yallist": "^3.0.2"
+ "chownr": "1.0.1",
+ "fs-minipass": "1.2.5",
+ "minipass": "2.2.4",
+ "minizlib": "1.1.0",
+ "mkdirp": "0.5.1",
+ "safe-buffer": "5.1.1",
+ "yallist": "3.0.2"
}
},
"util-deprecate": {
@@ -3461,36 +3191,26 @@
"dev": true,
"optional": true,
"requires": {
- "string-width": "^1.0.2"
+ "string-width": "1.0.2"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"yallist": {
"version": "3.0.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "gaze": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
- "dev": true,
- "requires": {
- "globule": "^1.0.0"
- }
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
},
"get-caller-file": {
"version": "1.0.2",
@@ -3506,10 +3226,16 @@
},
"get-stream": {
"version": "3.0.0",
- "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
"getobject": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
@@ -3522,50 +3248,79 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
}
},
- "gherkin": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-5.0.0.tgz",
- "integrity": "sha1-lt70EZjsOQgli1Ea909lWidk0qE=",
- "dev": true
- },
"glob": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-base": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
- "dev": true,
- "requires": {
- "glob-parent": "^2.0.0",
- "is-glob": "^2.0.0"
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
- "is-glob": "^2.0.0"
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
+ }
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "1.3.5"
+ }
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "1.0.2",
+ "is-windows": "1.0.2",
+ "resolve-dir": "1.0.1"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "homedir-polyfill": "1.0.3",
+ "ini": "1.3.5",
+ "is-windows": "1.0.2",
+ "which": "1.2.14"
}
},
"globals": {
- "version": "11.9.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
- "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==",
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
+ "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==",
"dev": true
},
"globby": {
@@ -3574,11 +3329,11 @@
"integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
"dev": true,
"requires": {
- "array-union": "^1.0.1",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "array-union": "1.0.2",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
},
"dependencies": {
"glob": {
@@ -3587,12 +3342,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"pify": {
@@ -3603,31 +3358,23 @@
}
}
},
- "globule": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
- "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
- "glob": "~7.1.1",
- "lodash": "~4.17.10",
- "minimatch": "~3.0.2"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
+ "create-error-class": "3.0.2",
+ "duplexer3": "0.1.4",
+ "get-stream": "3.0.0",
+ "is-redirect": "1.0.0",
+ "is-retry-allowed": "1.1.0",
+ "is-stream": "1.1.0",
+ "lowercase-keys": "1.0.1",
+ "safe-buffer": "5.1.1",
+ "timed-out": "4.0.1",
+ "unzip-response": "2.0.1",
+ "url-parse-lax": "1.0.0"
}
},
"graceful-fs": {
@@ -3637,9 +3384,9 @@
"dev": true
},
"growl": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
- "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
+ "version": "1.10.5",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
"dev": true
},
"grunt": {
@@ -3648,23 +3395,23 @@
"integrity": "sha512-/JzmZNPfKorlCrrmxWqQO4JVodO+DVd5XX4DkocL/1WlLlKVLE9+SdEIempOAxDhWPysLle6afvn/hg7Ck2k9g==",
"dev": true,
"requires": {
- "coffeescript": "~1.10.0",
- "dateformat": "~1.0.12",
- "eventemitter2": "~0.4.13",
- "exit": "~0.1.1",
- "findup-sync": "~0.3.0",
- "glob": "~7.0.0",
- "grunt-cli": "~1.2.0",
- "grunt-known-options": "~1.1.0",
- "grunt-legacy-log": "~2.0.0",
- "grunt-legacy-util": "~1.1.1",
- "iconv-lite": "~0.4.13",
- "js-yaml": "~3.5.2",
- "minimatch": "~3.0.2",
- "mkdirp": "~0.5.1",
- "nopt": "~3.0.6",
- "path-is-absolute": "~1.0.0",
- "rimraf": "~2.6.2"
+ "coffeescript": "1.10.0",
+ "dateformat": "1.0.12",
+ "eventemitter2": "0.4.14",
+ "exit": "0.1.2",
+ "findup-sync": "0.3.0",
+ "glob": "7.0.6",
+ "grunt-cli": "1.2.0",
+ "grunt-known-options": "1.1.1",
+ "grunt-legacy-log": "2.0.0",
+ "grunt-legacy-util": "1.1.1",
+ "iconv-lite": "0.4.19",
+ "js-yaml": "3.5.5",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "path-is-absolute": "1.0.1",
+ "rimraf": "2.6.2"
},
"dependencies": {
"glob": {
@@ -3673,12 +3420,12 @@
"integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"grunt-cli": {
@@ -3687,10 +3434,10 @@
"integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
"dev": true,
"requires": {
- "findup-sync": "~0.3.0",
- "grunt-known-options": "~1.1.0",
- "nopt": "~3.0.6",
- "resolve": "~1.1.0"
+ "findup-sync": "0.3.0",
+ "grunt-known-options": "1.1.1",
+ "nopt": "3.0.6",
+ "resolve": "1.1.7"
}
},
"resolve": {
@@ -3705,47 +3452,7 @@
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
- "glob": "^7.0.5"
- }
- }
- }
- },
- "grunt-browserify": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/grunt-browserify/-/grunt-browserify-5.3.0.tgz",
- "integrity": "sha1-R/2M+LrFj+LeaDr9xX9/OoDKeS0=",
- "dev": true,
- "requires": {
- "async": "^2.5.0",
- "browserify": "^16.0.0",
- "browserify-incremental": "^3.1.1",
- "glob": "^7.1.2",
- "lodash": "^4.17.4",
- "resolve": "^1.1.6",
- "watchify": "^3.6.1"
- },
- "dependencies": {
- "async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
- "dev": true,
- "requires": {
- "lodash": "^4.14.0"
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "glob": "7.0.6"
}
}
}
@@ -3756,8 +3463,8 @@
"integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==",
"dev": true,
"requires": {
- "async": "^2.6.1",
- "rimraf": "^2.6.2"
+ "async": "2.6.1",
+ "rimraf": "2.6.2"
},
"dependencies": {
"async": {
@@ -3766,7 +3473,7 @@
"integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"dev": true,
"requires": {
- "lodash": "^4.17.10"
+ "lodash": "4.17.11"
}
},
"glob": {
@@ -3775,12 +3482,12 @@
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"rimraf": {
@@ -3789,47 +3496,7 @@
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
- "glob": "^7.0.5"
- }
- }
- }
- },
- "grunt-contrib-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz",
- "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=",
- "dev": true,
- "requires": {
- "chalk": "^1.0.0",
- "source-map": "^0.5.3"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
+ "glob": "7.1.3"
}
}
}
@@ -3840,8 +3507,8 @@
"integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=",
"dev": true,
"requires": {
- "chalk": "^1.1.1",
- "file-sync-cmp": "^0.1.0"
+ "chalk": "1.1.3",
+ "file-sync-cmp": "0.1.1"
},
"dependencies": {
"ansi-styles": {
@@ -3856,11 +3523,11 @@
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"strip-ansi": {
@@ -3869,93 +3536,11 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
}
}
},
- "grunt-contrib-cssmin": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-2.2.1.tgz",
- "integrity": "sha512-IXNomhQ5ekVZbDbj/ik5YccoD9khU6LT2fDXqO1+/Txjq8cp0tQKjVS8i8EAbHOrSDkL7/UD6A7b+xj98gqh9w==",
- "dev": true,
- "requires": {
- "chalk": "^1.0.0",
- "clean-css": "~4.1.1",
- "maxmin": "^2.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "grunt-contrib-watch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz",
- "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==",
- "dev": true,
- "requires": {
- "async": "^2.6.0",
- "gaze": "^1.1.0",
- "lodash": "^4.17.10",
- "tiny-lr": "^1.1.1"
- },
- "dependencies": {
- "async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
- "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.10"
- }
- }
- }
- },
- "grunt-env": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/grunt-env/-/grunt-env-0.4.4.tgz",
- "integrity": "sha1-OziEOo1zcXfdyfiTh5+2nOGgvC8=",
- "dev": true,
- "requires": {
- "ini": "~1.3.0",
- "lodash": "~2.4.1"
- },
- "dependencies": {
- "lodash": {
- "version": "2.4.2",
- "resolved": "http://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
- "dev": true
- }
- }
- },
"grunt-known-options": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz",
@@ -3968,10 +3553,10 @@
"integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==",
"dev": true,
"requires": {
- "colors": "~1.1.2",
- "grunt-legacy-log-utils": "~2.0.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.5"
+ "colors": "1.1.2",
+ "grunt-legacy-log-utils": "2.0.1",
+ "hooker": "0.2.3",
+ "lodash": "4.17.11"
},
"dependencies": {
"colors": {
@@ -3988,8 +3573,8 @@
"integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==",
"dev": true,
"requires": {
- "chalk": "~2.4.1",
- "lodash": "~4.17.10"
+ "chalk": "2.4.1",
+ "lodash": "4.17.11"
},
"dependencies": {
"ansi-styles": {
@@ -3998,7 +3583,7 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "color-convert": "1.9.1"
}
},
"chalk": {
@@ -4007,9 +3592,9 @@
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
}
},
"has-flag": {
@@ -4024,7 +3609,7 @@
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "3.0.0"
}
}
}
@@ -4035,13 +3620,13 @@
"integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==",
"dev": true,
"requires": {
- "async": "~1.5.2",
- "exit": "~0.1.1",
- "getobject": "~0.1.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.10",
- "underscore.string": "~3.3.4",
- "which": "~1.3.0"
+ "async": "1.5.2",
+ "exit": "0.1.2",
+ "getobject": "0.1.0",
+ "hooker": "0.2.3",
+ "lodash": "4.17.11",
+ "underscore.string": "3.3.5",
+ "which": "1.3.1"
},
"dependencies": {
"async": {
@@ -4056,7 +3641,7 @@
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "isexe": "2.0.0"
}
}
}
@@ -4067,7 +3652,7 @@
"integrity": "sha512-yW2uTYBGvkDUK6+lWfXObE5gm8Kbjs7RrUh4NFqR0pOZ+YU/fR7rZPgTIn1f6hYpKXc/pCJSgGCtZIipLXVedw==",
"dev": true,
"requires": {
- "strip-ansi": "^3.0.0"
+ "strip-ansi": "3.0.1"
},
"dependencies": {
"strip-ansi": {
@@ -4076,45 +3661,54 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
}
}
},
- "gzip-size": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz",
- "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=",
- "dev": true,
- "requires": {
- "duplexer": "^0.1.1"
- }
- },
"handlebars": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
- "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz",
+ "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==",
"dev": true,
"requires": {
- "async": "^1.4.0",
- "optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
+ "async": "2.6.2",
+ "optimist": "0.6.1",
+ "source-map": "0.6.1",
+ "uglify-js": "3.4.9"
},
"dependencies": {
"async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
+ "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
"dev": true,
"requires": {
- "amdefine": ">=0.0.4"
+ "lodash": "4.17.11"
+ }
+ },
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true,
+ "optional": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.4.9",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "commander": "2.17.1",
+ "source-map": "0.6.1"
}
}
}
@@ -4131,8 +3725,8 @@
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"dev": true,
"requires": {
- "ajv": "^5.3.0",
- "har-schema": "^2.0.0"
+ "ajv": "5.5.2",
+ "har-schema": "2.0.0"
},
"dependencies": {
"ajv": {
@@ -4141,20 +3735,21 @@
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"dev": true,
"requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
+ "co": "4.6.0",
+ "fast-deep-equal": "1.1.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
}
}
}
},
"has": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
- "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
"requires": {
- "function-bind": "^1.0.2"
+ "function-bind": "1.1.1"
}
},
"has-ansi": {
@@ -4163,7 +3758,7 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"has-color": {
@@ -4178,30 +3773,76 @@
"integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
"dev": true
},
- "hash-base": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "get-value": "2.0.6",
+ "has-values": "1.0.0",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
- "hash.js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
- "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
"requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.0"
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
}
},
"he": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
- "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
"helmet": {
@@ -4240,15 +3881,13 @@
"resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.0.0.tgz",
"integrity": "sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys="
},
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
"dev": true,
"requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
+ "parse-passwd": "1.0.0"
}
},
"hooker": {
@@ -4273,47 +3912,26 @@
"resolved": "https://registry.npmjs.org/hsts/-/hsts-2.1.0.tgz",
"integrity": "sha512-zXhh/DqgrTXJ7erTN6Fh5k/xjMhDGXCqdYN3wvxUvGUQvnxcFfUd8E+6vLg/nk3ss1TYMb+DhRl25fYABioTvA=="
},
- "html-encoding-sniffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
- "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
- "dev": true,
- "requires": {
- "whatwg-encoding": "^1.0.1"
- }
- },
- "htmlescape": {
- "version": "1.1.1",
- "resolved": "http://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
- "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
- "dev": true
- },
"http-errors": {
"version": "1.6.3",
- "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"requires": {
- "depd": "~1.1.2",
+ "depd": "1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
+ "statuses": "1.5.0"
}
},
- "http-parser-js": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
- "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==",
- "dev": true
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.15.1"
}
},
"httpntlm": {
@@ -4321,8 +3939,8 @@
"resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz",
"integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=",
"requires": {
- "httpreq": ">=0.4.22",
- "underscore": "~1.7.0"
+ "httpreq": "0.4.24",
+ "underscore": "1.7.0"
},
"dependencies": {
"underscore": {
@@ -4337,12 +3955,6 @@
"resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz",
"integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8="
},
- "https-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
- "dev": true
- },
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
@@ -4359,21 +3971,27 @@
"resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz",
"integrity": "sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms="
},
+ "ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
+ "dev": true
+ },
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
"dev": true
},
- "indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
"inflight": {
@@ -4381,8 +3999,8 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
"inherits": {
@@ -4396,32 +4014,6 @@
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true
},
- "inline-source-map": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
- "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
- "dev": true,
- "requires": {
- "source-map": "~0.5.3"
- }
- },
- "insert-module-globals": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.6.tgz",
- "integrity": "sha512-R3sidKJr3SsggqQQ5cEwQb3pWG8RNx0UnpyeiOSR6jorRIeAOzH2gkTWnNdMnyRiVbjrG047K7UCtlMkQ1Mo9w==",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "combine-source-map": "^0.8.0",
- "concat-stream": "^1.6.1",
- "is-buffer": "^1.1.0",
- "lexical-scope": "^1.2.0",
- "path-is-absolute": "^1.0.1",
- "process": "~0.11.0",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
"invert-kv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
@@ -4433,6 +4025,15 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
"integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs="
},
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -4445,51 +4046,70 @@
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
"requires": {
- "binary-extensions": "^1.0.0"
+ "binary-extensions": "1.11.0"
}
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
},
"is-builtin-module": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
- "builtin-modules": "^1.0.0"
+ "builtin-modules": "1.1.1"
}
},
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
"dev": true
},
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
"dev": true,
"requires": {
- "is-primitive": "^2.0.0"
+ "ci-info": "1.6.0"
}
},
- "is-expression": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz",
- "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=",
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
"requires": {
- "acorn": "~4.0.2",
- "object-assign": "^4.0.1"
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
},
"dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
}
}
},
@@ -4500,9 +4120,9 @@
"dev": true
},
"is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
"is-finite": {
@@ -4511,7 +4131,7 @@
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
"dev": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"is-fullwidth-code-point": {
@@ -4520,34 +4140,44 @@
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
- "is-generator": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz",
- "integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=",
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "0.1.1",
+ "is-path-inside": "1.0.1"
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
"dev": true
},
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
"is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
}
},
- "is-object": {
+ "is-obj": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
- "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
"is-path-cwd": {
@@ -4562,7 +4192,7 @@
"integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
"dev": true,
"requires": {
- "is-path-inside": "^1.0.0"
+ "is-path-inside": "1.0.1"
}
},
"is-path-inside": {
@@ -4571,40 +4201,62 @@
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"dev": true,
"requires": {
- "path-is-inside": "^1.0.1"
+ "path-is-inside": "1.0.2"
}
},
- "is-posix-bracket": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
- "dev": true
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
},
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
"dev": true
},
- "is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
- "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
- },
"is-regex": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
"requires": {
- "has": "^1.0.1"
+ "has": "1.0.3"
}
},
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "1.0.0"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -4617,6 +4269,12 @@
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -4630,13 +4288,10 @@
"dev": true
},
"isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
},
"isstream": {
"version": "0.1.2",
@@ -4649,20 +4304,20 @@
"integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
"dev": true,
"requires": {
- "abbrev": "1.0.x",
- "async": "1.x",
- "escodegen": "1.8.x",
- "esprima": "2.7.x",
- "glob": "^5.0.15",
- "handlebars": "^4.0.1",
- "js-yaml": "3.x",
- "mkdirp": "0.5.x",
- "nopt": "3.x",
- "once": "1.x",
- "resolve": "1.1.x",
- "supports-color": "^3.1.0",
- "which": "^1.1.1",
- "wordwrap": "^1.0.0"
+ "abbrev": "1.0.9",
+ "async": "1.5.2",
+ "escodegen": "1.8.1",
+ "esprima": "2.7.3",
+ "glob": "5.0.15",
+ "handlebars": "4.1.0",
+ "js-yaml": "3.5.5",
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "once": "1.4.0",
+ "resolve": "1.1.7",
+ "supports-color": "3.2.3",
+ "which": "1.2.14",
+ "wordwrap": "1.0.0"
},
"dependencies": {
"abbrev": {
@@ -4683,11 +4338,11 @@
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"resolve": {
@@ -4702,7 +4357,7 @@
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"dev": true,
"requires": {
- "has-flag": "^1.0.0"
+ "has-flag": "1.0.0"
}
},
"wordwrap": {
@@ -4714,24 +4369,24 @@
}
},
"istanbul-lib-coverage": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
- "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
+ "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==",
"dev": true
},
"istanbul-lib-instrument": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz",
- "integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz",
+ "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==",
"dev": true,
"requires": {
- "@babel/generator": "^7.0.0",
- "@babel/parser": "^7.0.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.0.0",
- "@babel/types": "^7.0.0",
- "istanbul-lib-coverage": "^2.0.1",
- "semver": "^5.5.0"
+ "@babel/generator": "7.3.3",
+ "@babel/parser": "7.3.3",
+ "@babel/template": "7.2.2",
+ "@babel/traverse": "7.2.3",
+ "@babel/types": "7.3.3",
+ "istanbul-lib-coverage": "2.0.3",
+ "semver": "5.5.0"
}
},
"jmespath": {
@@ -4746,17 +4401,6 @@
"integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==",
"dev": true
},
- "js-logger": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/js-logger/-/js-logger-1.4.1.tgz",
- "integrity": "sha1-8CMNxehOEg8hPW5aa3Z6kT0pAzU=",
- "dev": true
- },
- "js-stringify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
- "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds="
- },
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@@ -4769,8 +4413,8 @@
"integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=",
"dev": true,
"requires": {
- "argparse": "^1.0.2",
- "esprima": "^2.6.0"
+ "argparse": "1.0.10",
+ "esprima": "2.7.3"
}
},
"jsbn": {
@@ -4779,107 +4423,18 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
- "jsdom": {
- "version": "11.10.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.10.0.tgz",
- "integrity": "sha512-x5No5FpJgBg3j5aBwA8ka6eGuS5IxbC8FOkmyccKvObtFT0bDMict/LOxINZsZGZSfGdNomLZ/qRV9Bpq/GIBA==",
- "dev": true,
- "requires": {
- "abab": "^1.0.4",
- "acorn": "^5.3.0",
- "acorn-globals": "^4.1.0",
- "array-equal": "^1.0.0",
- "cssom": ">= 0.3.2 < 0.4.0",
- "cssstyle": ">= 0.2.37 < 0.3.0",
- "data-urls": "^1.0.0",
- "domexception": "^1.0.0",
- "escodegen": "^1.9.0",
- "html-encoding-sniffer": "^1.0.2",
- "left-pad": "^1.2.0",
- "nwmatcher": "^1.4.3",
- "parse5": "4.0.0",
- "pn": "^1.1.0",
- "request": "^2.83.0",
- "request-promise-native": "^1.0.5",
- "sax": "^1.2.4",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^2.3.3",
- "w3c-hr-time": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.3",
- "whatwg-mimetype": "^2.1.0",
- "whatwg-url": "^6.4.0",
- "ws": "^4.0.0",
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "acorn": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
- "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
- "dev": true
- },
- "acorn-globals": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz",
- "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==",
- "dev": true,
- "requires": {
- "acorn": "^5.0.0"
- }
- },
- "escodegen": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz",
- "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==",
- "dev": true,
- "requires": {
- "esprima": "^3.1.3",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- }
- },
- "esprima": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
- "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
- "dev": true
- },
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
- "dev": true
- },
- "parse5": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
- "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
- "dev": true
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true
- }
- }
- },
"jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true
},
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@@ -4891,15 +4446,6 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
},
- "json-stable-stringify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
- "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
- "dev": true,
- "requires": {
- "jsonify": "~0.0.0"
- }
- },
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
@@ -4912,7 +4458,7 @@
"integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.6"
+ "graceful-fs": "4.1.11"
}
},
"jsonify": {
@@ -4921,12 +4467,6 @@
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true
},
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
- "dev": true
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -4947,26 +4487,17 @@
}
}
},
- "jstransformer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
- "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
- "requires": {
- "is-promise": "^2.0.0",
- "promise": "^7.0.1"
- }
- },
"jszip": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
"integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
"dev": true,
"requires": {
- "core-js": "~2.3.0",
- "es6-promise": "~3.0.2",
- "lie": "~3.1.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.0.6"
+ "core-js": "2.3.0",
+ "es6-promise": "3.0.2",
+ "lie": "3.1.1",
+ "pako": "1.0.6",
+ "readable-stream": "2.0.6"
},
"dependencies": {
"core-js": {
@@ -4987,12 +4518,12 @@
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -5003,12 +4534,6 @@
}
}
},
- "just-extend": {
- "version": "1.1.27",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz",
- "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==",
- "dev": true
- },
"kew": {
"version": "0.7.0",
"resolved": "http://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
@@ -5019,8 +4544,9 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
},
"klaw-sync": {
@@ -5029,49 +4555,25 @@
"integrity": "sha1-PTvNhgDnv971MjHHOf8FOu1WDkQ=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11"
+ "graceful-fs": "4.1.11"
}
},
- "knuth-shuffle-seeded": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz",
- "integrity": "sha1-AfG2VzOqdUDuCNiwF0Fk0iCB5OE=",
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
"requires": {
- "seed-random": "~2.2.0"
+ "package-json": "4.0.1"
}
},
- "labeled-stream-splicer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz",
- "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "isarray": "^2.0.4",
- "stream-splicer": "^2.0.0"
- },
- "dependencies": {
- "isarray": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz",
- "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==",
- "dev": true
- }
- }
- },
- "lazy-cache": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
- "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
- },
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": {
- "invert-kv": "^1.0.0"
+ "invert-kv": "1.0.0"
}
},
"ldap-filter": {
@@ -5095,40 +4597,25 @@
"integrity": "sha1-VE/3Ayt7g8aPBwEyjZKXqmlDQPk=",
"requires": {
"asn1": "0.2.3",
- "assert-plus": "^1.0.0",
- "backoff": "^2.5.0",
- "bunyan": "^1.8.3",
- "dashdash": "^1.14.0",
- "dtrace-provider": "~0.8",
+ "assert-plus": "1.0.0",
+ "backoff": "2.5.0",
+ "bunyan": "1.8.12",
+ "dashdash": "1.14.1",
+ "dtrace-provider": "0.8.6",
"ldap-filter": "0.2.2",
- "once": "^1.4.0",
- "vasync": "^1.6.4",
- "verror": "^1.8.1"
+ "once": "1.4.0",
+ "vasync": "1.6.4",
+ "verror": "1.10.0"
}
},
- "left-pad": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
- "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
- "dev": true
- },
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "lexical-scope": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
- "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=",
- "dev": true,
- "requires": {
- "astw": "^2.0.0"
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
}
},
"lie": {
@@ -5136,7 +4623,7 @@
"resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
"integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
"requires": {
- "immediate": "~3.0.5"
+ "immediate": "3.0.6"
}
},
"linkify-it": {
@@ -5145,26 +4632,20 @@
"integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=",
"dev": true,
"requires": {
- "uc.micro": "^1.0.1"
+ "uc.micro": "1.0.5"
}
},
- "livereload-js": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
- "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==",
- "dev": true
- },
"load-json-file": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
},
"dependencies": {
"pify": {
@@ -5189,8 +4670,8 @@
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"dev": true,
"requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "2.0.0",
+ "path-exists": "3.0.0"
},
"dependencies": {
"path-exists": {
@@ -5204,7 +4685,14 @@
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
- "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "dev": true
},
"lodash.get": {
"version": "4.4.2",
@@ -5212,22 +4700,56 @@
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
- "lodash.memoize": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
- "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
- "dev": true
- },
"lodash.reduce": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
"integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs="
},
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.4.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
},
"lolex": {
"version": "2.3.2",
@@ -5235,25 +4757,20 @@
"integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==",
"dev": true
},
- "longest": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
- },
"loud-rejection": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
"requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
}
},
- "lower-case": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
- "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"dev": true
},
"lru-cache": {
@@ -5262,8 +4779,17 @@
"integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
"dev": true,
"requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "3.0.0"
}
},
"make-error": {
@@ -5272,23 +4798,47 @@
"integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==",
"dev": true
},
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "requires": {
+ "p-defer": "1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
"map-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
"dev": true
},
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "1.0.1"
+ }
+ },
"markdown-it": {
"version": "8.4.1",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.1.tgz",
"integrity": "sha512-CzzqSSNkFRUf9vlWvhK1awpJreMRqdCrBvZ8DIoDWTOkESMIF741UPAhuAmbyWmdiFPA6WARNhnu2M6Nrhwa+A==",
"dev": true,
"requires": {
- "argparse": "^1.0.7",
- "entities": "~1.1.1",
- "linkify-it": "^2.0.0",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
+ "argparse": "1.0.10",
+ "entities": "1.1.1",
+ "linkify-it": "2.0.3",
+ "mdurl": "1.0.1",
+ "uc.micro": "1.0.5"
}
},
"math-random": {
@@ -5296,68 +4846,6 @@
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
"integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w="
},
- "maxmin": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz",
- "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=",
- "dev": true,
- "requires": {
- "chalk": "^1.0.0",
- "figures": "^1.0.1",
- "gzip-size": "^3.0.0",
- "pretty-bytes": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "md5.js": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
- "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
- "dev": true,
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
- },
"mdurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
@@ -5366,7 +4854,7 @@
},
"media-typer": {
"version": "0.3.0",
- "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"mem": {
@@ -5375,25 +4863,25 @@
"integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
"dev": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "mimic-fn": "1.2.0"
}
},
"meow": {
"version": "3.7.0",
- "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
},
"dependencies": {
"minimist": {
@@ -5415,34 +4903,32 @@
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
"dev": true,
"requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
- }
- },
- "miller-rabin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
}
},
"mime": {
@@ -5460,7 +4946,7 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
"requires": {
- "mime-db": "~1.33.0"
+ "mime-db": "1.33.0"
}
},
"mimic-fn": {
@@ -5469,24 +4955,12 @@
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
},
- "minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
- "dev": true
- },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
},
"minimist": {
@@ -5494,75 +4968,164 @@
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
"mkdirp": {
"version": "0.5.1",
- "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
}
},
"mocha": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.1.tgz",
- "integrity": "sha512-kKKs/H1KrMMQIEsWNxGmb4/BGsmj0dkeyotEvbrAuQ01FcWRLssUNXCEUZk6SZtyJBi6EE7SL0zDDtItw1rGhw==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.0.2.tgz",
+ "integrity": "sha512-RtTJsmmToGyeTznSOMoM6TPEk1A84FQaHIciKrRqARZx+B5ccJ5tXlmJzEKGBxZdqk9UjpRsesZTUkZmR5YnuQ==",
"dev": true,
"requires": {
+ "ansi-colors": "3.2.3",
"browser-stdout": "1.3.1",
- "commander": "2.11.0",
- "debug": "3.1.0",
+ "debug": "3.2.6",
"diff": "3.5.0",
"escape-string-regexp": "1.0.5",
- "glob": "7.1.2",
- "growl": "1.10.3",
- "he": "1.1.1",
+ "findup-sync": "2.0.0",
+ "glob": "7.1.3",
+ "growl": "1.10.5",
+ "he": "1.2.0",
+ "js-yaml": "3.12.0",
+ "log-symbols": "2.2.0",
"minimatch": "3.0.4",
"mkdirp": "0.5.1",
- "supports-color": "4.4.0"
+ "ms": "2.1.1",
+ "node-environment-flags": "1.0.4",
+ "object.assign": "4.1.0",
+ "strip-json-comments": "2.0.1",
+ "supports-color": "6.0.0",
+ "which": "1.3.1",
+ "wide-align": "1.1.3",
+ "yargs": "12.0.5",
+ "yargs-parser": "11.1.1",
+ "yargs-unparser": "1.5.0"
},
"dependencies": {
- "commander": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
- "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
- "dev": true
- },
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "2.1.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+ "dev": true,
+ "requires": {
+ "detect-file": "1.0.0",
+ "is-glob": "3.1.0",
+ "micromatch": "3.1.10",
+ "resolve-dir": "1.0.1"
}
},
"glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "js-yaml": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.10",
+ "esprima": "4.0.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"supports-color": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
- "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
"dev": true,
"requires": {
- "has-flag": "^2.0.0"
+ "has-flag": "3.0.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "5.0.0",
+ "decamelize": "1.2.0"
}
}
}
@@ -5573,35 +5136,6 @@
"integrity": "sha1-WuDA6vj+I+AJzQH5iJtCxPY0rxI=",
"dev": true
},
- "module-deps": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.0.2.tgz",
- "integrity": "sha512-KWBI3009iRnHjRlxRhe8nJ6kdeBTg4sMi5N6AZgg5f1/v5S7EBCRBOY854I4P5Anl4kx6AJH+4bBBC2Gi3nkvg==",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "browser-resolve": "^1.7.0",
- "cached-path-relative": "^1.0.0",
- "concat-stream": "~1.6.0",
- "defined": "^1.0.0",
- "detective": "^5.0.2",
- "duplexer2": "^0.1.2",
- "inherits": "^2.0.1",
- "parents": "^1.0.0",
- "readable-stream": "^2.0.2",
- "resolve": "^1.4.0",
- "stream-combiner2": "^1.1.1",
- "subarg": "^1.0.0",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
- "module-not-found-error": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz",
- "integrity": "sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA=",
- "dev": true
- },
"moment": {
"version": "2.22.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz",
@@ -5621,8 +5155,8 @@
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.7.tgz",
"integrity": "sha512-z6YufO7s40wLiv2ssFshqoLS4+Kf+huhHq6KZ7gDArsKNzXYjAwTMnhEIJ9GQ8fIfBGs5tBLNPfbIDoCKGPmOw==",
"requires": {
- "bson": "~1.0.4",
- "require_optional": "^1.0.1"
+ "bson": "1.0.6",
+ "require_optional": "1.0.1"
}
},
"ms": {
@@ -5636,20 +5170,9 @@
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
"optional": true,
"requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- }
- },
- "mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dev": true,
- "requires": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
+ "mkdirp": "0.5.1",
+ "ncp": "2.0.0",
+ "rimraf": "2.4.5"
}
},
"nan": {
@@ -5657,9 +5180,48 @@
"resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
"integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
},
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "fragment-cache": "0.2.1",
+ "is-windows": "1.0.2",
+ "kind-of": "6.0.2",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
"ncp": {
"version": "2.0.0",
- "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
"optional": true
},
@@ -5670,9 +5232,9 @@
"requires": {
"async": "0.2.10",
"binary-search-tree": "0.2.5",
- "localforage": "^1.3.0",
- "mkdirp": "~0.5.1",
- "underscore": "~1.4.4"
+ "localforage": "1.7.1",
+ "mkdirp": "0.5.1",
+ "underscore": "1.4.4"
}
},
"negotiator": {
@@ -5680,31 +5242,46 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
},
- "next-tick": {
- "version": "1.0.0",
- "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
"nise": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz",
- "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==",
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.8.tgz",
+ "integrity": "sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw==",
"dev": true,
"requires": {
- "@sinonjs/formatio": "^2.0.0",
- "just-extend": "^1.1.27",
- "lolex": "^2.3.2",
- "path-to-regexp": "^1.7.0",
- "text-encoding": "^0.6.4"
+ "@sinonjs/formatio": "3.1.0",
+ "just-extend": "4.0.2",
+ "lolex": "2.3.2",
+ "path-to-regexp": "1.7.0",
+ "text-encoding": "0.6.4"
},
"dependencies": {
+ "@sinonjs/formatio": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.1.0.tgz",
+ "integrity": "sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg==",
+ "dev": true,
+ "requires": {
+ "@sinonjs/samsam": "3.1.1"
+ }
+ },
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
+ "just-extend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz",
+ "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==",
+ "dev": true
+ },
"path-to-regexp": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
@@ -5716,20 +5293,26 @@
}
}
},
- "no-case": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
- "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
- "dev": true,
- "requires": {
- "lower-case": "^1.1.1"
- }
- },
"nocache": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz",
"integrity": "sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA="
},
+ "node-environment-flags": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.4.tgz",
+ "integrity": "sha512-M9rwCnWVLW7PX+NUWe3ejEdiLYinRpsEre9hMkU/6NS4h+EEulYaDH1gCEZ2gyXsmw+RXYDaV2JkkTNcsPDJ0Q==",
+ "dev": true,
+ "requires": {
+ "object.getownpropertydescriptors": "2.0.3"
+ }
+ },
+ "node-fetch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
+ "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==",
+ "dev": true
+ },
"nodemailer": {
"version": "4.6.4",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.6.4.tgz",
@@ -5772,14 +5355,416 @@
"resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz",
"integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U="
},
+ "nodemon": {
+ "version": "1.18.9",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.9.tgz",
+ "integrity": "sha512-oj/eEVTEI47pzYAjGkpcNw0xYwTl4XSTUQv2NPQI6PpN3b75PhpuYk3Vb3U80xHCyM2Jm+1j68ULHXl4OR3Afw==",
+ "dev": true,
+ "requires": {
+ "chokidar": "2.0.4",
+ "debug": "3.2.6",
+ "ignore-by-default": "1.0.1",
+ "minimatch": "3.0.4",
+ "pstree.remy": "1.1.6",
+ "semver": "5.5.0",
+ "supports-color": "5.5.0",
+ "touch": "3.1.0",
+ "undefsafe": "2.0.2",
+ "update-notifier": "2.5.0"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "3.1.10",
+ "normalize-path": "2.1.1"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.2",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+ "dev": true,
+ "requires": {
+ "anymatch": "2.0.0",
+ "async-each": "1.0.1",
+ "braces": "2.3.2",
+ "fsevents": "1.2.4",
+ "glob-parent": "3.1.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "4.0.0",
+ "lodash.debounce": "4.0.8",
+ "normalize-path": "2.1.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0",
+ "upath": "1.1.0"
+ }
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.2",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
"nomnom": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
"integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
"dev": true,
"requires": {
- "chalk": "~0.4.0",
- "underscore": "~1.6.0"
+ "chalk": "0.4.0",
+ "underscore": "1.6.0"
},
"dependencies": {
"underscore": {
@@ -5796,7 +5781,7 @@
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"requires": {
- "abbrev": "1"
+ "abbrev": "1.1.1"
}
},
"normalize-package-data": {
@@ -5805,10 +5790,10 @@
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "is-builtin-module": "^1.0.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "hosted-git-info": "2.7.1",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.5.0",
+ "validate-npm-package-license": "3.0.4"
}
},
"normalize-path": {
@@ -5817,7 +5802,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "remove-trailing-separator": "^1.0.1"
+ "remove-trailing-separator": "1.1.0"
}
},
"npm-run-path": {
@@ -5826,7 +5811,7 @@
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
"requires": {
- "path-key": "^2.0.0"
+ "path-key": "2.0.1"
}
},
"number-is-nan": {
@@ -5835,60 +5820,38 @@
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
- "nwmatcher": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
- "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==",
- "dev": true
- },
"nyc": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.1.0.tgz",
- "integrity": "sha512-3GyY6TpQ58z9Frpv4GMExE1SV2tAgYqC7HSy2omEhNiCT3mhT9NyiOvIE8zkbuJVFzmvvNTnE4h/7/wQae7xLg==",
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz",
+ "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==",
"dev": true,
"requires": {
- "archy": "^1.0.0",
- "arrify": "^1.0.1",
- "caching-transform": "^2.0.0",
- "convert-source-map": "^1.6.0",
- "debug-log": "^1.0.1",
- "find-cache-dir": "^2.0.0",
- "find-up": "^3.0.0",
- "foreground-child": "^1.5.6",
- "glob": "^7.1.3",
- "istanbul-lib-coverage": "^2.0.1",
- "istanbul-lib-hook": "^2.0.1",
- "istanbul-lib-instrument": "^3.0.0",
- "istanbul-lib-report": "^2.0.2",
- "istanbul-lib-source-maps": "^2.0.1",
- "istanbul-reports": "^2.0.1",
- "make-dir": "^1.3.0",
- "merge-source-map": "^1.1.0",
- "resolve-from": "^4.0.0",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.2",
- "spawn-wrap": "^1.4.2",
- "test-exclude": "^5.0.0",
- "uuid": "^3.3.2",
- "yargs": "11.1.0",
- "yargs-parser": "^9.0.2"
+ "archy": "1.0.0",
+ "arrify": "1.0.1",
+ "caching-transform": "3.0.1",
+ "convert-source-map": "1.6.0",
+ "find-cache-dir": "2.0.0",
+ "find-up": "3.0.0",
+ "foreground-child": "1.5.6",
+ "glob": "7.1.3",
+ "istanbul-lib-coverage": "2.0.3",
+ "istanbul-lib-hook": "2.0.3",
+ "istanbul-lib-instrument": "3.1.0",
+ "istanbul-lib-report": "2.0.4",
+ "istanbul-lib-source-maps": "3.0.2",
+ "istanbul-reports": "2.1.1",
+ "make-dir": "1.3.0",
+ "merge-source-map": "1.1.0",
+ "resolve-from": "4.0.0",
+ "rimraf": "2.6.3",
+ "signal-exit": "3.0.2",
+ "spawn-wrap": "1.4.2",
+ "test-exclude": "5.1.0",
+ "uuid": "3.3.2",
+ "yargs": "12.0.5",
+ "yargs-parser": "11.1.1"
},
"dependencies": {
- "align-text": {
- "version": "0.1.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
"ansi-regex": {
"version": "3.0.0",
"bundled": true,
@@ -5899,7 +5862,7 @@
"bundled": true,
"dev": true,
"requires": {
- "default-require-extensions": "^2.0.0"
+ "default-require-extensions": "2.0.0"
}
},
"archy": {
@@ -5913,9 +5876,12 @@
"dev": true
},
"async": {
- "version": "1.5.2",
+ "version": "2.6.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.11"
+ }
},
"balanced-match": {
"version": "1.0.0",
@@ -5927,59 +5893,34 @@
"bundled": true,
"dev": true,
"requires": {
- "balanced-match": "^1.0.0",
+ "balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
- "builtin-modules": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true
- },
"caching-transform": {
- "version": "2.0.0",
+ "version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
- "make-dir": "^1.0.0",
- "md5-hex": "^2.0.0",
- "package-hash": "^2.0.0",
- "write-file-atomic": "^2.0.0"
+ "hasha": "3.0.0",
+ "make-dir": "1.3.0",
+ "package-hash": "3.0.0",
+ "write-file-atomic": "2.4.2"
}
},
"camelcase": {
- "version": "1.2.1",
+ "version": "5.0.0",
"bundled": true,
- "dev": true,
- "optional": true
- },
- "center-align": {
- "version": "0.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
- }
+ "dev": true
},
"cliui": {
- "version": "2.1.0",
+ "version": "4.1.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
- "wordwrap": "0.0.2"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- }
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
}
},
"code-point-at": {
@@ -5987,6 +5928,12 @@
"bundled": true,
"dev": true
},
+ "commander": {
+ "version": "2.17.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
"commondir": {
"version": "1.0.1",
"bundled": true,
@@ -6002,7 +5949,7 @@
"bundled": true,
"dev": true,
"requires": {
- "safe-buffer": "~5.1.1"
+ "safe-buffer": "5.1.2"
}
},
"cross-spawn": {
@@ -6010,23 +5957,18 @@
"bundled": true,
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
+ "lru-cache": "4.1.5",
+ "which": "1.3.1"
}
},
"debug": {
- "version": "3.1.0",
+ "version": "4.1.1",
"bundled": true,
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "2.1.1"
}
},
- "debug-log": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
"decamelize": {
"version": "1.2.0",
"bundled": true,
@@ -6037,7 +5979,15 @@
"bundled": true,
"dev": true,
"requires": {
- "strip-bom": "^3.0.0"
+ "strip-bom": "3.0.0"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
}
},
"error-ex": {
@@ -6045,7 +5995,7 @@
"bundled": true,
"dev": true,
"requires": {
- "is-arrayish": "^0.2.1"
+ "is-arrayish": "0.2.1"
}
},
"es6-error": {
@@ -6054,27 +6004,29 @@
"dev": true
},
"execa": {
- "version": "0.7.0",
+ "version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "cross-spawn": "6.0.5",
+ "get-stream": "4.1.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
},
"dependencies": {
"cross-spawn": {
- "version": "5.1.0",
+ "version": "6.0.5",
"bundled": true,
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "nice-try": "1.0.5",
+ "path-key": "2.0.1",
+ "semver": "5.6.0",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
}
}
}
@@ -6084,9 +6036,9 @@
"bundled": true,
"dev": true,
"requires": {
- "commondir": "^1.0.1",
- "make-dir": "^1.0.0",
- "pkg-dir": "^3.0.0"
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "3.0.0"
}
},
"find-up": {
@@ -6094,7 +6046,7 @@
"bundled": true,
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "3.0.0"
}
},
"foreground-child": {
@@ -6102,8 +6054,8 @@
"bundled": true,
"dev": true,
"requires": {
- "cross-spawn": "^4",
- "signal-exit": "^3.0.0"
+ "cross-spawn": "4.0.2",
+ "signal-exit": "3.0.2"
}
},
"fs.realpath": {
@@ -6117,46 +6069,46 @@
"dev": true
},
"get-stream": {
- "version": "3.0.0",
+ "version": "4.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "requires": {
+ "pump": "3.0.0"
+ }
},
"glob": {
"version": "7.1.3",
"bundled": true,
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"graceful-fs": {
- "version": "4.1.11",
+ "version": "4.1.15",
"bundled": true,
"dev": true
},
"handlebars": {
- "version": "4.0.11",
+ "version": "4.1.0",
"bundled": true,
"dev": true,
"requires": {
- "async": "^1.4.0",
- "optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
+ "async": "2.6.2",
+ "optimist": "0.6.1",
+ "source-map": "0.6.1",
+ "uglify-js": "3.4.9"
},
"dependencies": {
"source-map": {
- "version": "0.4.4",
+ "version": "0.6.1",
"bundled": true,
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
+ "dev": true
}
}
},
@@ -6165,6 +6117,14 @@
"bundled": true,
"dev": true
},
+ "hasha": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "is-stream": "1.1.0"
+ }
+ },
"hosted-git-info": {
"version": "2.7.1",
"bundled": true,
@@ -6180,8 +6140,8 @@
"bundled": true,
"dev": true,
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
}
},
"inherits": {
@@ -6190,7 +6150,7 @@
"dev": true
},
"invert-kv": {
- "version": "1.0.0",
+ "version": "2.0.0",
"bundled": true,
"dev": true
},
@@ -6199,19 +6159,6 @@
"bundled": true,
"dev": true
},
- "is-buffer": {
- "version": "1.1.6",
- "bundled": true,
- "dev": true
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "builtin-modules": "^1.0.0"
- }
- },
"is-fullwidth-code-point": {
"version": "2.0.0",
"bundled": true,
@@ -6228,38 +6175,48 @@
"dev": true
},
"istanbul-lib-coverage": {
- "version": "2.0.1",
+ "version": "2.0.3",
"bundled": true,
"dev": true
},
"istanbul-lib-hook": {
- "version": "2.0.1",
+ "version": "2.0.3",
"bundled": true,
"dev": true,
"requires": {
- "append-transform": "^1.0.0"
+ "append-transform": "1.0.0"
}
},
"istanbul-lib-report": {
- "version": "2.0.2",
+ "version": "2.0.4",
"bundled": true,
"dev": true,
"requires": {
- "istanbul-lib-coverage": "^2.0.1",
- "make-dir": "^1.3.0",
- "supports-color": "^5.4.0"
+ "istanbul-lib-coverage": "2.0.3",
+ "make-dir": "1.3.0",
+ "supports-color": "6.1.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "6.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
}
},
"istanbul-lib-source-maps": {
- "version": "2.0.1",
+ "version": "3.0.2",
"bundled": true,
"dev": true,
"requires": {
- "debug": "^3.1.0",
- "istanbul-lib-coverage": "^2.0.1",
- "make-dir": "^1.3.0",
- "rimraf": "^2.6.2",
- "source-map": "^0.6.1"
+ "debug": "4.1.1",
+ "istanbul-lib-coverage": "2.0.3",
+ "make-dir": "1.3.0",
+ "rimraf": "2.6.3",
+ "source-map": "0.6.1"
},
"dependencies": {
"source-map": {
@@ -6270,11 +6227,11 @@
}
},
"istanbul-reports": {
- "version": "2.0.1",
+ "version": "2.1.1",
"bundled": true,
"dev": true,
"requires": {
- "handlebars": "^4.0.11"
+ "handlebars": "4.1.0"
}
},
"json-parse-better-errors": {
@@ -6282,26 +6239,12 @@
"bundled": true,
"dev": true
},
- "kind-of": {
- "version": "3.2.2",
- "bundled": true,
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "lazy-cache": {
- "version": "1.0.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
"lcid": {
- "version": "1.0.0",
+ "version": "2.0.0",
"bundled": true,
"dev": true,
"requires": {
- "invert-kv": "^1.0.0"
+ "invert-kv": "2.0.0"
}
},
"load-json-file": {
@@ -6309,10 +6252,10 @@
"bundled": true,
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
+ "graceful-fs": "4.1.15",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0",
+ "strip-bom": "3.0.0"
}
},
"locate-path": {
@@ -6320,27 +6263,27 @@
"bundled": true,
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
}
},
+ "lodash": {
+ "version": "4.17.11",
+ "bundled": true,
+ "dev": true
+ },
"lodash.flattendeep": {
"version": "4.4.0",
"bundled": true,
"dev": true
},
- "longest": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true
- },
"lru-cache": {
- "version": "4.1.3",
+ "version": "4.1.5",
"bundled": true,
"dev": true,
"requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
}
},
"make-dir": {
@@ -6348,28 +6291,25 @@
"bundled": true,
"dev": true,
"requires": {
- "pify": "^3.0.0"
+ "pify": "3.0.0"
}
},
- "md5-hex": {
- "version": "2.0.0",
+ "map-age-cleaner": {
+ "version": "0.1.3",
"bundled": true,
"dev": true,
"requires": {
- "md5-o-matic": "^0.1.1"
+ "p-defer": "1.0.0"
}
},
- "md5-o-matic": {
- "version": "0.1.1",
- "bundled": true,
- "dev": true
- },
"mem": {
- "version": "1.1.0",
+ "version": "4.1.0",
"bundled": true,
"dev": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "map-age-cleaner": "0.1.3",
+ "mimic-fn": "1.2.0",
+ "p-is-promise": "2.0.0"
}
},
"merge-source-map": {
@@ -6377,7 +6317,7 @@
"bundled": true,
"dev": true,
"requires": {
- "source-map": "^0.6.1"
+ "source-map": "0.6.1"
},
"dependencies": {
"source-map": {
@@ -6397,7 +6337,7 @@
"bundled": true,
"dev": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
},
"minimist": {
@@ -6421,19 +6361,24 @@
}
},
"ms": {
- "version": "2.0.0",
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
"bundled": true,
"dev": true
},
"normalize-package-data": {
- "version": "2.4.0",
+ "version": "2.5.0",
"bundled": true,
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "is-builtin-module": "^1.0.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "hosted-git-info": "2.7.1",
+ "resolve": "1.10.0",
+ "semver": "5.6.0",
+ "validate-npm-package-license": "3.0.4"
}
},
"npm-run-path": {
@@ -6441,7 +6386,7 @@
"bundled": true,
"dev": true,
"requires": {
- "path-key": "^2.0.0"
+ "path-key": "2.0.1"
}
},
"number-is-nan": {
@@ -6454,7 +6399,7 @@
"bundled": true,
"dev": true,
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"optimist": {
@@ -6462,8 +6407,8 @@
"bundled": true,
"dev": true,
"requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.3"
}
},
"os-homedir": {
@@ -6472,26 +6417,36 @@
"dev": true
},
"os-locale": {
- "version": "2.1.0",
+ "version": "3.1.0",
"bundled": true,
"dev": true,
"requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
+ "execa": "1.0.0",
+ "lcid": "2.0.0",
+ "mem": "4.1.0"
}
},
+ "p-defer": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
"p-finally": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
- "p-limit": {
+ "p-is-promise": {
"version": "2.0.0",
"bundled": true,
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.1.0",
+ "bundled": true,
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "p-try": "2.0.0"
}
},
"p-locate": {
@@ -6499,7 +6454,7 @@
"bundled": true,
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "2.1.0"
}
},
"p-try": {
@@ -6508,14 +6463,14 @@
"dev": true
},
"package-hash": {
- "version": "2.0.0",
+ "version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "lodash.flattendeep": "^4.4.0",
- "md5-hex": "^2.0.0",
- "release-zalgo": "^1.0.0"
+ "graceful-fs": "4.1.15",
+ "hasha": "3.0.0",
+ "lodash.flattendeep": "4.4.0",
+ "release-zalgo": "1.0.0"
}
},
"parse-json": {
@@ -6523,8 +6478,8 @@
"bundled": true,
"dev": true,
"requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
+ "error-ex": "1.3.2",
+ "json-parse-better-errors": "1.0.2"
}
},
"path-exists": {
@@ -6542,12 +6497,17 @@
"bundled": true,
"dev": true
},
+ "path-parse": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true
+ },
"path-type": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
- "pify": "^3.0.0"
+ "pify": "3.0.0"
}
},
"pify": {
@@ -6560,7 +6520,7 @@
"bundled": true,
"dev": true,
"requires": {
- "find-up": "^3.0.0"
+ "find-up": "3.0.0"
}
},
"pseudomap": {
@@ -6568,14 +6528,23 @@
"bundled": true,
"dev": true
},
+ "pump": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
+ }
+ },
"read-pkg": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "load-json-file": "4.0.0",
+ "normalize-package-data": "2.5.0",
+ "path-type": "3.0.0"
}
},
"read-pkg-up": {
@@ -6583,8 +6552,8 @@
"bundled": true,
"dev": true,
"requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
+ "find-up": "3.0.0",
+ "read-pkg": "3.0.0"
}
},
"release-zalgo": {
@@ -6592,14 +6561,9 @@
"bundled": true,
"dev": true,
"requires": {
- "es6-error": "^4.0.1"
+ "es6-error": "4.1.1"
}
},
- "repeat-string": {
- "version": "1.6.1",
- "bundled": true,
- "dev": true
- },
"require-directory": {
"version": "2.1.1",
"bundled": true,
@@ -6610,26 +6574,25 @@
"bundled": true,
"dev": true
},
+ "resolve": {
+ "version": "1.10.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.6"
+ }
+ },
"resolve-from": {
"version": "4.0.0",
"bundled": true,
"dev": true
},
- "right-align": {
- "version": "0.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.1"
- }
- },
"rimraf": {
- "version": "2.6.2",
+ "version": "2.6.3",
"bundled": true,
"dev": true,
"requires": {
- "glob": "^7.0.5"
+ "glob": "7.1.3"
}
},
"safe-buffer": {
@@ -6638,7 +6601,7 @@
"dev": true
},
"semver": {
- "version": "5.5.0",
+ "version": "5.6.0",
"bundled": true,
"dev": true
},
@@ -6652,7 +6615,7 @@
"bundled": true,
"dev": true,
"requires": {
- "shebang-regex": "^1.0.0"
+ "shebang-regex": "1.0.0"
}
},
"shebang-regex": {
@@ -6665,36 +6628,30 @@
"bundled": true,
"dev": true
},
- "source-map": {
- "version": "0.5.7",
- "bundled": true,
- "dev": true,
- "optional": true
- },
"spawn-wrap": {
"version": "1.4.2",
"bundled": true,
"dev": true,
"requires": {
- "foreground-child": "^1.5.6",
- "mkdirp": "^0.5.0",
- "os-homedir": "^1.0.1",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.2",
- "which": "^1.3.0"
+ "foreground-child": "1.5.6",
+ "mkdirp": "0.5.1",
+ "os-homedir": "1.0.2",
+ "rimraf": "2.6.3",
+ "signal-exit": "3.0.2",
+ "which": "1.3.1"
}
},
"spdx-correct": {
- "version": "3.0.0",
+ "version": "3.1.0",
"bundled": true,
"dev": true,
"requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-expression-parse": "3.0.0",
+ "spdx-license-ids": "3.0.3"
}
},
"spdx-exceptions": {
- "version": "2.1.0",
+ "version": "2.2.0",
"bundled": true,
"dev": true
},
@@ -6703,12 +6660,12 @@
"bundled": true,
"dev": true,
"requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-exceptions": "2.2.0",
+ "spdx-license-ids": "3.0.3"
}
},
"spdx-license-ids": {
- "version": "3.0.0",
+ "version": "3.0.3",
"bundled": true,
"dev": true
},
@@ -6717,8 +6674,8 @@
"bundled": true,
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -6726,7 +6683,7 @@
"bundled": true,
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
},
"strip-bom": {
@@ -6739,68 +6696,47 @@
"bundled": true,
"dev": true
},
- "supports-color": {
- "version": "5.4.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
"test-exclude": {
- "version": "5.0.0",
+ "version": "5.1.0",
"bundled": true,
"dev": true,
"requires": {
- "arrify": "^1.0.1",
- "minimatch": "^3.0.4",
- "read-pkg-up": "^4.0.0",
- "require-main-filename": "^1.0.1"
+ "arrify": "1.0.1",
+ "minimatch": "3.0.4",
+ "read-pkg-up": "4.0.0",
+ "require-main-filename": "1.0.1"
}
},
"uglify-js": {
- "version": "2.8.29",
+ "version": "3.4.9",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
+ "commander": "2.17.1",
+ "source-map": "0.6.1"
},
"dependencies": {
- "yargs": {
- "version": "3.10.0",
+ "source-map": {
+ "version": "0.6.1",
"bundled": true,
"dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "window-size": "0.1.0"
- }
+ "optional": true
}
}
},
- "uglify-to-browserify": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
"uuid": {
"version": "3.3.2",
"bundled": true,
"dev": true
},
"validate-npm-package-license": {
- "version": "3.0.3",
+ "version": "3.0.4",
"bundled": true,
"dev": true,
"requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "spdx-correct": "3.1.0",
+ "spdx-expression-parse": "3.0.0"
}
},
"which": {
@@ -6808,7 +6744,7 @@
"bundled": true,
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "isexe": "2.0.0"
}
},
"which-module": {
@@ -6816,12 +6752,6 @@
"bundled": true,
"dev": true
},
- "window-size": {
- "version": "0.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
"wordwrap": {
"version": "0.0.3",
"bundled": true,
@@ -6832,8 +6762,8 @@
"bundled": true,
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
},
"dependencies": {
"ansi-regex": {
@@ -6846,7 +6776,7 @@
"bundled": true,
"dev": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"string-width": {
@@ -6854,9 +6784,9 @@
"bundled": true,
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
}
},
"strip-ansi": {
@@ -6864,7 +6794,7 @@
"bundled": true,
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
}
}
@@ -6875,17 +6805,17 @@
"dev": true
},
"write-file-atomic": {
- "version": "2.3.0",
+ "version": "2.4.2",
"bundled": true,
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
+ "graceful-fs": "4.1.15",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
}
},
"y18n": {
- "version": "3.2.1",
+ "version": "4.0.0",
"bundled": true,
"dev": true
},
@@ -6895,87 +6825,31 @@
"dev": true
},
"yargs": {
- "version": "11.1.0",
+ "version": "12.0.5",
"bundled": true,
"dev": true,
"requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
- },
- "dependencies": {
- "cliui": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true
- }
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.3",
+ "os-locale": "3.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "4.0.0",
+ "yargs-parser": "11.1.1"
}
},
"yargs-parser": {
- "version": "9.0.2",
+ "version": "11.1.1",
"bundled": true,
"dev": true,
"requires": {
- "camelcase": "^4.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "bundled": true,
- "dev": true
- }
+ "camelcase": "5.0.0",
+ "decamelize": "1.2.0"
}
}
}
@@ -6989,12 +6863,35 @@
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "0.1.1",
+ "define-property": "0.2.5",
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ }
+ }
},
"object-keys": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
- "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz",
+ "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==",
"dev": true
},
"object-path": {
@@ -7002,14 +6899,60 @@
"resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz",
"integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk="
},
- "object.omit": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
"dev": true,
"requires": {
- "for-own": "^0.1.4",
- "is-extendable": "^0.1.1"
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.3",
+ "function-bind": "1.1.1",
+ "has-symbols": "1.0.0",
+ "object-keys": "1.1.0"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.3",
+ "es-abstract": "1.13.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
}
},
"on-finished": {
@@ -7030,7 +6973,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"optimist": {
@@ -7039,8 +6982,8 @@
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"dev": true,
"requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
+ "minimist": "0.0.8",
+ "wordwrap": "0.0.2"
}
},
"optionator": {
@@ -7049,12 +6992,12 @@
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
"dev": true,
"requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.4",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "wordwrap": "~1.0.0"
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
},
"dependencies": {
"wordwrap": {
@@ -7065,37 +7008,28 @@
}
}
},
- "os-browserify": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
- "dev": true
- },
"os-locale": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
"integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
"dev": true,
"requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
+ "execa": "0.7.0",
+ "lcid": "1.0.0",
+ "mem": "1.1.0"
}
},
"os-tmpdir": {
"version": "1.0.2",
- "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
- "outpipe": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz",
- "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=",
- "dev": true,
- "requires": {
- "shell-quote": "^1.4.2"
- }
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
},
"p-finally": {
"version": "1.0.0",
@@ -7103,13 +7037,19 @@
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
+ "p-is-promise": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+ "dev": true
+ },
"p-limit": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
"integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
"dev": true,
"requires": {
- "p-try": "^1.0.0"
+ "p-try": "1.0.0"
}
},
"p-locate": {
@@ -7118,7 +7058,7 @@
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"dev": true,
"requires": {
- "p-limit": "^1.1.0"
+ "p-limit": "1.2.0"
}
},
"p-map": {
@@ -7133,13 +7073,16 @@
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
},
- "pad-right": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz",
- "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=",
+ "package-json": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"requires": {
- "repeat-string": "^1.5.2"
+ "got": "6.7.1",
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0",
+ "semver": "5.5.0"
}
},
"pako": {
@@ -7148,67 +7091,36 @@
"integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
"dev": true
},
- "parents": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
- "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
- "dev": true,
- "requires": {
- "path-platform": "~0.11.15"
- }
- },
- "parse-asn1": {
- "version": "5.1.1",
- "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
- "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
- "dev": true,
- "requires": {
- "asn1.js": "^4.0.0",
- "browserify-aes": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3"
- }
- },
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
- "dev": true,
- "requires": {
- "glob-base": "^0.3.0",
- "is-dotfile": "^1.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.0"
- }
- },
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "error-ex": "^1.2.0"
+ "error-ex": "1.3.2"
}
},
- "parse5": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
- "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
},
"parseurl": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
},
- "path-browserify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
- "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true
},
"path-exists": {
@@ -7217,12 +7129,12 @@
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
- "pinkie-promise": "^2.0.0"
+ "pinkie-promise": "2.0.1"
}
},
"path-is-absolute": {
"version": "1.0.1",
- "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-is-inside": {
@@ -7240,12 +7152,7 @@
"path-parse": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
- "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
- },
- "path-platform": {
- "version": "0.11.15",
- "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
- "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
"dev": true
},
"path-to-regexp": {
@@ -7259,9 +7166,9 @@
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
},
"dependencies": {
"pify": {
@@ -7272,19 +7179,6 @@
}
}
},
- "pbkdf2": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
- "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==",
- "dev": true,
- "requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
"pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
@@ -7315,7 +7209,7 @@
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
- "pinkie": "^2.0.0"
+ "pinkie": "2.0.4"
}
},
"platform": {
@@ -7323,160 +7217,12 @@
"resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz",
"integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q=="
},
- "pn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
- "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
"dev": true
},
- "popper.js": {
- "version": "1.14.3",
- "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.3.tgz",
- "integrity": "sha1-FDj5jQRqz3tNeM1QK/QYrGTU8JU=",
- "dev": true
- },
- "power-assert": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.5.0.tgz",
- "integrity": "sha512-WaWSw+Ts283o6dzxW1BxIxoaHok7aSSGx4SaR6dW62Pk31ynv9DERDieuZpPYv5XaJ+H+zdcOaJQ+PvlasAOVw==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "empower": "^1.2.3",
- "power-assert-formatter": "^1.3.1",
- "universal-deep-strict-equal": "^1.2.1",
- "xtend": "^4.0.0"
- }
- },
- "power-assert-context-formatter": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz",
- "integrity": "sha1-7bo1LT7YpgMRTWZyZazOYNaJzN8=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0",
- "power-assert-context-traversal": "^1.1.1"
- }
- },
- "power-assert-context-reducer-ast": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.1.2.tgz",
- "integrity": "sha1-SEqZ4m9Jc/+IMuXFzHVnAuYJQXQ=",
- "dev": true,
- "requires": {
- "acorn": "^4.0.0",
- "acorn-es7-plugin": "^1.0.12",
- "core-js": "^2.0.0",
- "espurify": "^1.6.0",
- "estraverse": "^4.2.0"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- },
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
- "dev": true
- }
- }
- },
- "power-assert-context-traversal": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz",
- "integrity": "sha1-iMq8oNE7Y1nwfT0+ivppkmRXftk=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0",
- "estraverse": "^4.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
- "dev": true
- }
- }
- },
- "power-assert-formatter": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz",
- "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0",
- "power-assert-context-formatter": "^1.0.7",
- "power-assert-context-reducer-ast": "^1.0.7",
- "power-assert-renderer-assertion": "^1.0.7",
- "power-assert-renderer-comparison": "^1.0.7",
- "power-assert-renderer-diagram": "^1.0.7",
- "power-assert-renderer-file": "^1.0.7"
- }
- },
- "power-assert-renderer-assertion": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz",
- "integrity": "sha1-y/wOd+AIao+Wrz8djme57n4ozpg=",
- "dev": true,
- "requires": {
- "power-assert-renderer-base": "^1.1.1",
- "power-assert-util-string-width": "^1.1.1"
- }
- },
- "power-assert-renderer-base": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz",
- "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=",
- "dev": true
- },
- "power-assert-renderer-comparison": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.1.1.tgz",
- "integrity": "sha1-10Odl9hRVr5OMKAPL7WnJRTOPAg=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0",
- "diff-match-patch": "^1.0.0",
- "power-assert-renderer-base": "^1.1.1",
- "stringifier": "^1.3.0",
- "type-name": "^2.0.1"
- }
- },
- "power-assert-renderer-diagram": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.2.tgz",
- "integrity": "sha1-ZV+PcRk1qbbVQbhjJ2VHF8Y3qYY=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0",
- "power-assert-renderer-base": "^1.1.1",
- "power-assert-util-string-width": "^1.1.1",
- "stringifier": "^1.3.0"
- }
- },
- "power-assert-renderer-file": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.1.1.tgz",
- "integrity": "sha1-o34rvReMys0E5427eckv40kzxec=",
- "dev": true,
- "requires": {
- "power-assert-renderer-base": "^1.1.1"
- }
- },
- "power-assert-util-string-width": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz",
- "integrity": "sha1-vmWet5N/3S5smncmjar2S9W3xZI=",
- "dev": true,
- "requires": {
- "eastasianwidth": "^0.1.1"
- }
- },
"precond": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz",
@@ -7488,25 +7234,10 @@
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
- "preserve": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
- "dev": true
- },
- "pretty-bytes": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz",
- "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
"dev": true
},
"process-nextick-args": {
@@ -7515,51 +7246,15 @@
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true
},
- "progress": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
- "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
- "dev": true
- },
- "promise": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
- "requires": {
- "asap": "~2.0.3"
- }
- },
"proxy-addr": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
"integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
"requires": {
- "forwarded": "~0.1.2",
+ "forwarded": "0.1.2",
"ipaddr.js": "1.6.0"
}
},
- "proxyquire": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.0.1.tgz",
- "integrity": "sha512-fQr3VQrbdzHrdaDn3XuisVoJlJNDJizHAvUXw9IuXRR8BpV2x0N7LsCxrpJkeKfPbNjiNU/V5vc008cI0TmzzQ==",
- "dev": true,
- "requires": {
- "fill-keys": "^1.0.2",
- "module-not-found-error": "^1.0.0",
- "resolve": "~1.5.0"
- },
- "dependencies": {
- "resolve": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
- "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.5"
- }
- }
- }
- },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -7572,133 +7267,22 @@
"integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
"dev": true
},
- "public-encrypt": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
- "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
+ "pstree.remy": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.6.tgz",
+ "integrity": "sha512-NdF35+QsqD7EgNEI5mkI/X+UwaxVEbQaz9f4IooEmMUv6ZPmlTQYGjBPJGgrlzNdjSvIy4MWMg6Q6vCgBO2K+w==",
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"requires": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1"
+ "end-of-stream": "1.4.1",
+ "once": "1.4.0"
}
},
- "pug": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz",
- "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=",
- "requires": {
- "pug-code-gen": "^2.0.1",
- "pug-filters": "^3.1.0",
- "pug-lexer": "^4.0.0",
- "pug-linker": "^3.0.5",
- "pug-load": "^2.0.11",
- "pug-parser": "^5.0.0",
- "pug-runtime": "^2.0.4",
- "pug-strip-comments": "^1.0.3"
- }
- },
- "pug-attrs": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz",
- "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=",
- "requires": {
- "constantinople": "^3.0.1",
- "js-stringify": "^1.0.1",
- "pug-runtime": "^2.0.4"
- }
- },
- "pug-code-gen": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz",
- "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=",
- "requires": {
- "constantinople": "^3.0.1",
- "doctypes": "^1.1.0",
- "js-stringify": "^1.0.1",
- "pug-attrs": "^2.0.3",
- "pug-error": "^1.3.2",
- "pug-runtime": "^2.0.4",
- "void-elements": "^2.0.1",
- "with": "^5.0.0"
- }
- },
- "pug-error": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz",
- "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY="
- },
- "pug-filters": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz",
- "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=",
- "requires": {
- "clean-css": "^4.1.11",
- "constantinople": "^3.0.1",
- "jstransformer": "1.0.0",
- "pug-error": "^1.3.2",
- "pug-walk": "^1.1.7",
- "resolve": "^1.1.6",
- "uglify-js": "^2.6.1"
- }
- },
- "pug-lexer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz",
- "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=",
- "requires": {
- "character-parser": "^2.1.1",
- "is-expression": "^3.0.0",
- "pug-error": "^1.3.2"
- }
- },
- "pug-linker": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz",
- "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=",
- "requires": {
- "pug-error": "^1.3.2",
- "pug-walk": "^1.1.7"
- }
- },
- "pug-load": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz",
- "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=",
- "requires": {
- "object-assign": "^4.1.0",
- "pug-walk": "^1.1.7"
- }
- },
- "pug-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz",
- "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=",
- "requires": {
- "pug-error": "^1.3.2",
- "token-stream": "0.0.1"
- }
- },
- "pug-runtime": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz",
- "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g="
- },
- "pug-strip-comments": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz",
- "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=",
- "requires": {
- "pug-error": "^1.3.2"
- }
- },
- "pug-walk": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz",
- "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM="
- },
"punycode": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
@@ -7721,8 +7305,8 @@
"integrity": "sha512-pNB/Gr8SA8ff8KpUFM36o/WFAlthgaThka5bV19AD9PNTH20Pwq5Zxodif2YyHwrctp6SkL4GqlOot0qR/wGaw==",
"dev": true,
"requires": {
- "decode-uri-component": "^0.2.0",
- "strict-uri-encode": "^2.0.0"
+ "decode-uri-component": "0.2.0",
+ "strict-uri-encode": "2.0.0"
}
},
"querystring": {
@@ -7731,11 +7315,10 @@
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
"dev": true
},
- "querystring-es3": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
- "dev": true
+ "querystringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
+ "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg=="
},
"random-bytes": {
"version": "1.0.0",
@@ -7747,9 +7330,9 @@
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
"integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
"requires": {
- "is-number": "^4.0.0",
- "kind-of": "^6.0.0",
- "math-random": "^1.0.1"
+ "is-number": "4.0.0",
+ "kind-of": "6.0.2",
+ "math-random": "1.0.1"
},
"dependencies": {
"is-number": {
@@ -7764,25 +7347,6 @@
}
}
},
- "randombytes": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
- "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "randomfill": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
- }
- },
"randomstring": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.1.5.tgz",
@@ -7820,7 +7384,7 @@
"depd": "1.1.1",
"inherits": "2.0.3",
"setprototypeof": "1.0.3",
- "statuses": ">= 1.3.1 < 2"
+ "statuses": "1.5.0"
}
},
"setprototypeof": {
@@ -7830,13 +7394,24 @@
}
}
},
- "read-only-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
- "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
"requires": {
- "readable-stream": "^2.0.2"
+ "deep-extend": "0.6.0",
+ "ini": "1.3.5",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
}
},
"read-pkg": {
@@ -7845,9 +7420,9 @@
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
}
},
"read-pkg-up": {
@@ -7856,23 +7431,23 @@
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
}
},
"readable-stream": {
"version": "2.3.6",
- "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"readdirp": {
@@ -7881,10 +7456,10 @@
"integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "minimatch": "^3.0.2",
- "readable-stream": "^2.0.2",
- "set-immediate-shim": "^1.0.1"
+ "graceful-fs": "4.1.11",
+ "minimatch": "3.0.4",
+ "readable-stream": "2.3.6",
+ "set-immediate-shim": "1.0.1"
}
},
"redent": {
@@ -7893,8 +7468,8 @@
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
},
"dependencies": {
"indent-string": {
@@ -7903,7 +7478,7 @@
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
- "repeating": "^2.0.0"
+ "repeating": "2.0.1"
}
}
}
@@ -7913,9 +7488,9 @@
"resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
"integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
"requires": {
- "double-ended-queue": "^2.1.0-0",
- "redis-commands": "^1.2.0",
- "redis-parser": "^2.6.0"
+ "double-ended-queue": "2.1.0-0",
+ "redis-commands": "1.3.5",
+ "redis-parser": "2.6.0"
}
},
"redis-commands": {
@@ -7933,18 +7508,33 @@
"resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.1.0.tgz",
"integrity": "sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk="
},
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
- },
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
"dev": true,
"requires": {
- "is-equal-shallow": "^0.1.3"
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.8",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.8"
}
},
"remove-trailing-separator": {
@@ -7962,7 +7552,8 @@
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
},
"repeating": {
"version": "2.0.1",
@@ -7970,7 +7561,7 @@
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
- "is-finite": "^1.0.0"
+ "is-finite": "1.0.2"
}
},
"request": {
@@ -7979,26 +7570,26 @@
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
+ "aws-sign2": "0.7.0",
+ "aws4": "1.8.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.7",
+ "extend": "3.0.2",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.3",
+ "har-validator": "5.1.0",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.21",
+ "oauth-sign": "0.9.0",
+ "performance-now": "2.1.0",
+ "qs": "6.5.2",
+ "safe-buffer": "5.1.2",
+ "tough-cookie": "2.4.3",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.3.2"
},
"dependencies": {
"mime-db": {
@@ -8013,7 +7604,7 @@
"integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
"dev": true,
"requires": {
- "mime-db": "~1.37.0"
+ "mime-db": "1.37.0"
}
},
"punycode": {
@@ -8040,8 +7631,8 @@
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
+ "psl": "1.1.29",
+ "punycode": "1.4.1"
}
},
"uuid": {
@@ -8058,10 +7649,10 @@
"integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=",
"dev": true,
"requires": {
- "bluebird": "^3.5.0",
+ "bluebird": "3.5.0",
"request-promise-core": "1.1.1",
- "stealthy-require": "^1.1.0",
- "tough-cookie": ">=2.3.3"
+ "stealthy-require": "1.1.1",
+ "tough-cookie": "2.3.4"
}
},
"request-promise-core": {
@@ -8070,18 +7661,7 @@
"integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
"dev": true,
"requires": {
- "lodash": "^4.13.1"
- }
- },
- "request-promise-native": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz",
- "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
- "dev": true,
- "requires": {
- "request-promise-core": "1.1.1",
- "stealthy-require": "^1.1.0",
- "tough-cookie": ">=2.3.3"
+ "lodash": "4.17.11"
}
},
"require-directory": {
@@ -8101,16 +7681,32 @@
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
"integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
"requires": {
- "resolve-from": "^2.0.0",
- "semver": "^5.1.0"
+ "resolve-from": "2.0.0",
+ "semver": "5.5.0"
}
},
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ },
"resolve": {
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
"integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "dev": true,
"requires": {
- "path-parse": "^1.0.5"
+ "path-parse": "1.0.5"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "global-modules": "1.0.0"
}
},
"resolve-from": {
@@ -8118,30 +7714,33 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
- "right-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
- "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
- "requires": {
- "align-text": "^0.1.1"
- }
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
},
"rimraf": {
"version": "2.4.5",
"resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
"integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
"requires": {
- "glob": "^6.0.1"
+ "glob": "6.0.4"
}
},
- "ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "rxjs": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+ "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
"dev": true,
"requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
+ "tslib": "1.9.0"
}
},
"safe-buffer": {
@@ -8149,18 +7748,21 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
- "safe-json-parse": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
- "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=",
- "dev": true
- },
"safe-json-stringify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz",
"integrity": "sha512-EzBtUaFH9bHYPc69wqjp0efJI/DPNHdFbGE3uIMn4sVbO0zx8vZ8cG4WKxQfOpUOKsQyGBiT2mTqnCw+6nLswA==",
"optional": true
},
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "0.1.15"
+ }
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -8179,22 +7781,16 @@
"integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=",
"dev": true
},
- "seed-random": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz",
- "integrity": "sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ=",
- "dev": true
- },
"selenium-webdriver": {
"version": "4.0.0-alpha.1",
"resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz",
"integrity": "sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q==",
"dev": true,
"requires": {
- "jszip": "^3.1.3",
- "rimraf": "^2.5.4",
+ "jszip": "3.1.5",
+ "rimraf": "2.6.2",
"tmp": "0.0.30",
- "xml2js": "^0.4.17"
+ "xml2js": "0.4.17"
},
"dependencies": {
"glob": {
@@ -8203,12 +7799,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"rimraf": {
@@ -8217,7 +7813,7 @@
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
- "glob": "^7.0.5"
+ "glob": "7.1.2"
}
},
"tmp": {
@@ -8226,7 +7822,7 @@
"integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
"dev": true,
"requires": {
- "os-tmpdir": "~1.0.1"
+ "os-tmpdir": "1.0.2"
}
}
}
@@ -8236,24 +7832,33 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
},
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "requires": {
+ "semver": "5.5.0"
+ }
+ },
"send": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
"requires": {
"debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
"fresh": "0.5.2",
- "http-errors": "~1.6.2",
+ "http-errors": "1.6.3",
"mime": "1.4.1",
"ms": "2.0.0",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.4.0"
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.4.0"
},
"dependencies": {
"statuses": {
@@ -8263,20 +7868,14 @@
}
}
},
- "serialize-error": {
- "version": "2.1.0",
- "resolved": "http://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
- "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=",
- "dev": true
- },
"serve-static": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
"requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "parseurl": "1.3.2",
"send": "0.16.2"
}
},
@@ -8292,38 +7891,41 @@
"integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
"dev": true
},
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "split-string": "3.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
"setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
},
- "sha.js": {
- "version": "2.4.11",
- "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "shasum": {
- "version": "1.0.2",
- "resolved": "http://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
- "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
- "dev": true,
- "requires": {
- "json-stable-stringify": "~0.0.0",
- "sha.js": "~2.4.4"
- }
- },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"requires": {
- "shebang-regex": "^1.0.0"
+ "shebang-regex": "1.0.0"
}
},
"shebang-regex": {
@@ -8332,29 +7934,17 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
- "shell-quote": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
- "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
- "dev": true,
- "requires": {
- "array-filter": "~0.0.0",
- "array-map": "~0.0.0",
- "array-reduce": "~0.0.0",
- "jsonify": "~0.0.0"
- }
- },
"should": {
"version": "13.2.1",
"resolved": "https://registry.npmjs.org/should/-/should-13.2.1.tgz",
"integrity": "sha512-l+/NwEMO+DcstsHEwPHRHzC9j4UOE3VQwJGcMWSsD/vqpqHbnQ+1iSHy64Ihmmjx1uiRPD9pFadTSc3MJtXAgw==",
"dev": true,
"requires": {
- "should-equal": "^2.0.0",
- "should-format": "^3.0.3",
- "should-type": "^1.4.0",
- "should-type-adaptors": "^1.0.1",
- "should-util": "^1.0.0"
+ "should-equal": "2.0.0",
+ "should-format": "3.0.3",
+ "should-type": "1.4.0",
+ "should-type-adaptors": "1.1.0",
+ "should-util": "1.0.0"
}
},
"should-equal": {
@@ -8363,7 +7953,7 @@
"integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==",
"dev": true,
"requires": {
- "should-type": "^1.4.0"
+ "should-type": "1.4.0"
}
},
"should-format": {
@@ -8372,8 +7962,8 @@
"integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=",
"dev": true,
"requires": {
- "should-type": "^1.3.0",
- "should-type-adaptors": "^1.0.1"
+ "should-type": "1.4.0",
+ "should-type-adaptors": "1.1.0"
}
},
"should-type": {
@@ -8388,8 +7978,8 @@
"integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==",
"dev": true,
"requires": {
- "should-type": "^1.3.0",
- "should-util": "^1.0.0"
+ "should-type": "1.4.0",
+ "should-util": "1.0.0"
}
},
"should-util": {
@@ -8410,13 +8000,13 @@
"integrity": "sha512-GvNLrwpvLZ8jIMZBUhHGUZDq5wlUdceJWyHvZDmqBxnjazpxY1L0FNbGBX6VpcOEoQ8Q4XMWFzm2myJMvx+VjA==",
"dev": true,
"requires": {
- "@sinonjs/formatio": "^2.0.0",
- "diff": "^3.1.0",
- "lodash.get": "^4.4.2",
- "lolex": "^2.2.0",
- "nise": "^1.2.0",
- "supports-color": "^5.1.0",
- "type-detect": "^4.0.5"
+ "@sinonjs/formatio": "2.0.0",
+ "diff": "3.5.0",
+ "lodash.get": "4.4.2",
+ "lolex": "2.3.2",
+ "nise": "1.4.8",
+ "supports-color": "5.4.0",
+ "type-detect": "4.0.8"
},
"dependencies": {
"has-flag": {
@@ -8431,7 +8021,7 @@
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "3.0.0"
}
}
}
@@ -8445,10 +8035,132 @@
"nodemailer-shared": "1.1.0"
}
},
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "0.11.2",
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "map-cache": "0.2.2",
+ "source-map": "0.5.7",
+ "source-map-resolve": "0.5.2",
+ "use": "3.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "snapdragon-util": "3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "2.1.2",
+ "decode-uri-component": "0.2.0",
+ "resolve-url": "0.2.1",
+ "source-map-url": "0.4.0",
+ "urix": "0.1.0"
+ }
},
"source-map-support": {
"version": "0.5.5",
@@ -8456,8 +8168,8 @@
"integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==",
"dev": true,
"requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "buffer-from": "1.0.0",
+ "source-map": "0.6.1"
},
"dependencies": {
"source-map": {
@@ -8468,14 +8180,26 @@
}
}
},
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spawn-command": {
+ "version": "0.0.2-1",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
+ "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
+ "dev": true
+ },
"spdx-correct": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
"integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
"dev": true,
"requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-expression-parse": "3.0.0",
+ "spdx-license-ids": "3.0.2"
}
},
"spdx-exceptions": {
@@ -8490,8 +8214,8 @@
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true,
"requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-exceptions": "2.2.0",
+ "spdx-license-ids": "3.0.2"
}
},
"spdx-license-ids": {
@@ -8508,6 +8232,15 @@
"base32.js": "0.0.1"
}
},
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "3.0.2"
+ }
+ },
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -8519,30 +8252,15 @@
"integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==",
"dev": true,
"requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "stack-chain": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz",
- "integrity": "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==",
- "dev": true
- },
- "stack-generator": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.2.tgz",
- "integrity": "sha512-Qj3X+vY7qQ0OOLQomEihHk5SSnSPCI3z4RfB8kDk9lnzwznBODlkWODitEo8sHpp0a2VdSy3yuJkabNsQN5RGA==",
- "dev": true,
- "requires": {
- "stackframe": "^1.0.4"
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.2",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.2",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2",
+ "tweetnacl": "0.14.5"
}
},
"stack-trace": {
@@ -8550,41 +8268,27 @@
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
},
- "stackframe": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz",
- "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==",
- "dev": true
- },
- "stacktrace-gps": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz",
- "integrity": "sha512-9o+nWhiz5wFnrB3hBHs2PTyYrS60M1vvpSzHxwxnIbtY2q9Nt51hZvhrG1+2AxD374ecwyS+IUwfkHRE/2zuGg==",
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
"dev": true,
"requires": {
- "source-map": "0.5.6",
- "stackframe": "^1.0.4"
+ "define-property": "0.2.5",
+ "object-copy": "0.1.0"
},
"dependencies": {
- "source-map": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
- "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
- "dev": true
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
}
}
},
- "stacktrace-js": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.0.tgz",
- "integrity": "sha1-d2ymRqlbxsayuQd2U2p/xyxt21g=",
- "dev": true,
- "requires": {
- "error-stack-parser": "^2.0.1",
- "stack-generator": "^2.0.1",
- "stacktrace-gps": "^3.0.1"
- }
- },
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -8596,75 +8300,20 @@
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
"dev": true
},
- "stream-browserify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
- "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
- }
- },
- "stream-combiner2": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
- "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
- "dev": true,
- "requires": {
- "duplexer2": "~0.1.0",
- "readable-stream": "^2.0.2"
- }
- },
- "stream-http": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz",
- "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==",
- "dev": true,
- "requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.3",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
- }
- },
- "stream-splicer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
- "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.2"
- }
- },
"strict-uri-encode": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
"integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=",
"dev": true
},
- "string-argv": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz",
- "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=",
- "dev": true
- },
- "string-template": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
- "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=",
- "dev": true
- },
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -8679,7 +8328,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -8690,18 +8339,7 @@
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "stringifier": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.3.0.tgz",
- "integrity": "sha1-3vGDQvaTPbDy2/yaoCF1tEjBeVk=",
- "dev": true,
- "requires": {
- "core-js": "^2.0.0",
- "traverse": "^0.6.6",
- "type-name": "^2.0.1"
+ "safe-buffer": "5.1.1"
}
},
"strip-ansi": {
@@ -8716,12 +8354,12 @@
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
- "is-utf8": "^0.2.0"
+ "is-utf8": "0.2.1"
}
},
"strip-eof": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
@@ -8731,25 +8369,14 @@
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1"
+ "get-stdin": "4.0.1"
}
},
- "subarg": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
- "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
- "dev": true,
- "requires": {
- "minimist": "^1.1.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
},
"supports-color": {
"version": "2.0.0",
@@ -8757,19 +8384,13 @@
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
},
- "symbol-tree": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
- "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
- "dev": true
- },
- "syntax-error": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
- "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
"requires": {
- "acorn-node": "^1.2.0"
+ "execa": "0.7.0"
}
},
"text-encoding": {
@@ -8778,114 +8399,88 @@
"integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=",
"dev": true
},
- "thenify": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz",
- "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=",
- "dev": true,
- "requires": {
- "any-promise": "^1.0.0"
- }
- },
- "thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
- "dev": true,
- "requires": {
- "thenify": ">= 3.1.0 < 4"
- }
- },
- "through": {
- "version": "2.3.8",
- "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true
},
- "through2": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
- "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.1.5",
- "xtend": "~4.0.1"
- }
- },
- "timers-browserify": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
- "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
- "dev": true,
- "requires": {
- "process": "~0.11.0"
- }
- },
- "tiny-lr": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
- "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==",
- "dev": true,
- "requires": {
- "body": "^5.1.0",
- "debug": "^3.1.0",
- "faye-websocket": "~0.10.0",
- "livereload-js": "^2.3.0",
- "object-assign": "^4.1.0",
- "qs": "^6.4.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- }
- }
- },
- "title-case": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz",
- "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=",
- "dev": true,
- "requires": {
- "no-case": "^2.2.0",
- "upper-case": "^1.0.3"
- }
- },
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
"requires": {
- "os-tmpdir": "~1.0.2"
+ "os-tmpdir": "1.0.2"
}
},
- "to-arraybuffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
},
- "to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
},
- "token-stream": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz",
- "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo="
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "regex-not": "1.0.2",
+ "safe-regex": "1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ }
+ }
+ },
+ "touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+ "dev": true,
+ "requires": {
+ "nopt": "1.0.10"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ }
+ }
},
"tough-cookie": {
"version": "2.3.4",
@@ -8893,7 +8488,7 @@
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
"dev": true,
"requires": {
- "punycode": "^1.4.1"
+ "punycode": "1.4.1"
},
"dependencies": {
"punycode": {
@@ -8904,19 +8499,10 @@
}
}
},
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "traverse": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
- "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=",
+ "tree-kill": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz",
+ "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==",
"dev": true
},
"trim-newlines": {
@@ -8937,14 +8523,14 @@
"integrity": "sha512-H/KWK27B3JJAc5WFOBBUxN638DukbV8PptdQgiHWPO2SGDVJzuVOl8Ye0XJ5+FiZIdFtgUuGOJRV4c/XBQ5dBg==",
"dev": true,
"requires": {
- "arrify": "^1.0.0",
- "chalk": "^2.3.0",
- "diff": "^3.1.0",
- "make-error": "^1.1.1",
- "minimist": "^1.2.0",
- "mkdirp": "^0.5.1",
- "source-map-support": "^0.5.3",
- "yn": "^2.0.0"
+ "arrify": "1.0.1",
+ "chalk": "2.4.1",
+ "diff": "3.5.0",
+ "make-error": "1.3.4",
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.5.5",
+ "yn": "2.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -8953,7 +8539,7 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "color-convert": "1.9.1"
}
},
"chalk": {
@@ -8962,9 +8548,9 @@
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.4.0"
}
},
"has-flag": {
@@ -8985,7 +8571,7 @@
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "3.0.0"
}
}
}
@@ -9002,18 +8588,18 @@
"integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=",
"dev": true,
"requires": {
- "babel-code-frame": "^6.22.0",
- "builtin-modules": "^1.1.1",
- "chalk": "^2.3.0",
- "commander": "^2.12.1",
- "diff": "^3.2.0",
- "glob": "^7.1.1",
- "js-yaml": "^3.7.0",
- "minimatch": "^3.0.4",
- "resolve": "^1.3.2",
- "semver": "^5.3.0",
- "tslib": "^1.8.0",
- "tsutils": "^2.12.1"
+ "babel-code-frame": "6.26.0",
+ "builtin-modules": "1.1.1",
+ "chalk": "2.4.1",
+ "commander": "2.19.0",
+ "diff": "3.5.0",
+ "glob": "7.1.2",
+ "js-yaml": "3.11.0",
+ "minimatch": "3.0.4",
+ "resolve": "1.7.1",
+ "semver": "5.5.0",
+ "tslib": "1.9.0",
+ "tsutils": "2.26.2"
},
"dependencies": {
"ansi-styles": {
@@ -9022,7 +8608,7 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "color-convert": "1.9.1"
}
},
"chalk": {
@@ -9031,9 +8617,9 @@
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.4.0"
}
},
"esprima": {
@@ -9048,12 +8634,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"has-flag": {
@@ -9068,8 +8654,8 @@
"integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
"dev": true,
"requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "argparse": "1.0.10",
+ "esprima": "4.0.0"
}
},
"supports-color": {
@@ -9078,7 +8664,7 @@
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "3.0.0"
}
}
}
@@ -9089,22 +8675,16 @@
"integrity": "sha512-uzwnhmrSbyinPCiwfzGsOY3IulBTwoky7r83HmZdz9QNCjhSCzavkh47KLWuU0zF2F2WbpmmzoJUIEiYyd+jEQ==",
"dev": true,
"requires": {
- "tslib": "^1.8.1"
+ "tslib": "1.9.0"
}
},
- "tty-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
- "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
- "dev": true
- },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
- "safe-buffer": "^5.0.1"
+ "safe-buffer": "5.1.1"
}
},
"tweetnacl": {
@@ -9119,7 +8699,7 @@
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
- "prelude-ls": "~1.1.2"
+ "prelude-ls": "1.1.2"
}
},
"type-detect": {
@@ -9134,15 +8714,9 @@
"integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
"requires": {
"media-typer": "0.3.0",
- "mime-types": "~2.1.18"
+ "mime-types": "2.1.18"
}
},
- "type-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz",
- "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=",
- "dev": true
- },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -9150,9 +8724,9 @@
"dev": true
},
"typescript": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz",
- "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
+ "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
"dev": true
},
"typescript-json-schema": {
@@ -9161,10 +8735,10 @@
"integrity": "sha512-1C7u4Dw0bYgt6+cdke7scazf/y7qOSRlPblqZxRjWByqGvIw8KYNfnLHOj8RCRarwCM7VZCj+uO6F8VngvMVMw==",
"dev": true,
"requires": {
- "glob": "~7.1.2",
- "json-stable-stringify": "^1.0.1",
- "typescript": "~2.8.3",
- "yargs": "^11.0.0"
+ "glob": "7.1.2",
+ "json-stable-stringify": "1.0.1",
+ "typescript": "2.8.4",
+ "yargs": "11.0.0"
},
"dependencies": {
"ansi-regex": {
@@ -9179,9 +8753,9 @@
"integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
"dev": true,
"requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "wrap-ansi": "2.1.0"
}
},
"find-up": {
@@ -9190,7 +8764,7 @@
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "locate-path": "^2.0.0"
+ "locate-path": "2.0.0"
}
},
"glob": {
@@ -9199,12 +8773,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
},
"json-stable-stringify": {
@@ -9213,7 +8787,7 @@
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"requires": {
- "jsonify": "~0.0.0"
+ "jsonify": "0.0.0"
}
},
"strip-ansi": {
@@ -9222,27 +8796,33 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
},
+ "typescript": {
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.4.tgz",
+ "integrity": "sha512-IIU5cN1mR5J3z9jjdESJbnxikTrEz3lzAw/D0Tf45jHpBp55nY31UkUvmVHoffCfKHTqJs3fCLPDxknQTTFegQ==",
+ "dev": true
+ },
"yargs": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz",
"integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==",
"dev": true,
"requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "2.1.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "9.0.2"
}
}
}
@@ -9263,59 +8843,22 @@
"integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==",
"dev": true
},
- "uglify-es": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
- "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
- "dev": true,
- "requires": {
- "commander": "~2.13.0",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
- "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "uglify-js": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
- "requires": {
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
- }
- },
- "uglify-to-browserify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
- "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
- "optional": true
- },
"uid-safe": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
"integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
"requires": {
- "random-bytes": "~1.0.0"
+ "random-bytes": "1.0.0"
}
},
- "umd": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
- "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
- "dev": true
+ "undefsafe": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz",
+ "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9"
+ }
},
"underscore": {
"version": "1.4.4",
@@ -9328,29 +8871,54 @@
"integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
"dev": true,
"requires": {
- "sprintf-js": "^1.0.3",
- "util-deprecate": "^1.0.2"
+ "sprintf-js": "1.0.3",
+ "util-deprecate": "1.0.2"
}
},
- "universal-deep-strict-equal": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz",
- "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=",
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
"dev": true,
"requires": {
- "array-filter": "^1.0.0",
- "indexof": "0.0.1",
- "object-keys": "^1.0.0"
+ "arr-union": "3.1.0",
+ "get-value": "2.0.6",
+ "is-extendable": "0.1.1",
+ "set-value": "0.4.3"
},
"dependencies": {
- "array-filter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
- "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=",
- "dev": true
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "to-object-path": "0.3.0"
+ }
}
}
},
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "1.0.0"
+ }
+ },
"universalify": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
@@ -9362,20 +8930,133 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
- "upper-case": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
- "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "0.3.1",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "2.0.6",
+ "has-values": "0.1.4",
+ "isobject": "2.1.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
"dev": true
},
+ "upath": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
+ "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+ "dev": true
+ },
+ "update-notifier": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+ "dev": true,
+ "requires": {
+ "boxen": "1.3.0",
+ "chalk": "2.4.2",
+ "configstore": "3.1.2",
+ "import-lazy": "2.1.0",
+ "is-ci": "1.2.1",
+ "is-installed-globally": "0.1.0",
+ "is-npm": "1.0.0",
+ "latest-version": "3.1.0",
+ "semver-diff": "2.1.0",
+ "xdg-basedir": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.5.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ }
+ }
+ },
"uri-js": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz",
"integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
"requires": {
- "punycode": "^2.1.0"
+ "punycode": "2.1.0"
}
},
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
"url": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
@@ -9394,27 +9075,28 @@
}
}
},
- "util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "dev": true,
+ "url-parse": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz",
+ "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==",
"requires": {
- "inherits": "2.0.1"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
- "dev": true
- }
+ "querystringify": "2.1.0",
+ "requires-port": "1.0.0"
}
},
- "util-arity": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz",
- "integrity": "sha1-WdAa8f2z/t4KxOYysKtfbOl8kzA=",
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "1.0.4"
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
"util-deprecate": {
@@ -9439,8 +9121,8 @@
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "spdx-correct": "3.0.2",
+ "spdx-expression-parse": "3.0.0"
}
},
"vary": {
@@ -9471,92 +9153,9 @@
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
- "assert-plus": "^1.0.0",
+ "assert-plus": "1.0.0",
"core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "vm-browserify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.0.1.tgz",
- "integrity": "sha512-EqzLchIMYLBjRPoqVsEkZOa/4Vr2RfOWbd58F+I/Gj79AYTrsseMunxbbSkbYfrqZaXSuPBBXNSOhtJgg0PpmA==",
- "dev": true
- },
- "void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
- "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
- },
- "w3c-hr-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
- "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
- "dev": true,
- "requires": {
- "browser-process-hrtime": "^0.1.2"
- }
- },
- "watchify": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.11.0.tgz",
- "integrity": "sha512-7jWG0c3cKKm2hKScnSAMUEUjRJKXUShwMPk0ASVhICycQhwND3IMAdhJYmc1mxxKzBUJTSF5HZizfrKrS6BzkA==",
- "dev": true,
- "requires": {
- "anymatch": "^1.3.0",
- "browserify": "^16.1.0",
- "chokidar": "^1.0.0",
- "defined": "^1.0.0",
- "outpipe": "^1.1.0",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "websocket-driver": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
- "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
- "dev": true,
- "requires": {
- "http-parser-js": ">=0.4.0",
- "websocket-extensions": ">=0.1.1"
- }
- },
- "websocket-extensions": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
- "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
- "dev": true
- },
- "whatwg-encoding": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz",
- "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==",
- "dev": true,
- "requires": {
- "iconv-lite": "0.4.19"
- }
- },
- "whatwg-mimetype": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz",
- "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==",
- "dev": true
- },
- "whatwg-url": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz",
- "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
+ "extsprintf": "1.2.0"
}
},
"which": {
@@ -9565,7 +9164,7 @@
"integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "isexe": "2.0.0"
}
},
"which-module": {
@@ -9574,53 +9173,58 @@
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
- "window-size": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
- "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
+ "widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "dev": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
},
"winston": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/winston/-/winston-2.4.2.tgz",
"integrity": "sha512-4S/Ad4ZfSNl8OccCLxnJmNISWcm2joa6Q0YGDxlxMzH0fgSwWsjMt+SmlNwCqdpaPg3ev1HKkMBsIiXeSUwpbA==",
"requires": {
- "async": "~1.0.0",
- "colors": "1.0.x",
- "cycle": "1.0.x",
- "eyes": "0.1.x",
- "isstream": "0.1.x",
- "stack-trace": "0.0.x"
+ "async": "1.0.0",
+ "colors": "1.0.3",
+ "cycle": "1.0.3",
+ "eyes": "0.1.8",
+ "isstream": "0.1.2",
+ "stack-trace": "0.0.10"
},
"dependencies": {
"async": {
"version": "1.0.0",
- "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
"integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k="
}
}
},
- "with": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz",
- "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=",
- "requires": {
- "acorn": "^3.1.0",
- "acorn-globals": "^3.0.0"
- }
- },
"wordwrap": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
- "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true
},
"wrap-ansi": {
"version": "2.1.0",
- "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1"
},
"dependencies": {
"is-fullwidth-code-point": {
@@ -9629,7 +9233,7 @@
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"string-width": {
@@ -9638,9 +9242,9 @@
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
}
},
"strip-ansi": {
@@ -9649,7 +9253,7 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
}
}
@@ -9659,14 +9263,15 @@
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
- "ws": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
- "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
+ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
"dev": true,
"requires": {
- "async-limiter": "~1.0.0",
- "safe-buffer": "~5.1.0"
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
}
},
"x-xss-protection": {
@@ -9674,10 +9279,10 @@
"resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.1.0.tgz",
"integrity": "sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg=="
},
- "xml-name-validator": {
+ "xdg-basedir": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
"dev": true
},
"xml2js": {
@@ -9686,8 +9291,8 @@
"integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=",
"dev": true,
"requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "^4.1.0"
+ "sax": "1.2.1",
+ "xmlbuilder": "4.2.1"
}
},
"xmlbuilder": {
@@ -9696,15 +9301,9 @@
"integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=",
"dev": true,
"requires": {
- "lodash": "^4.0.0"
+ "lodash": "4.17.11"
}
},
- "xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
- "dev": true
- },
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
@@ -9722,8 +9321,8 @@
"resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",
"integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==",
"requires": {
- "argparse": "^1.0.7",
- "glob": "^7.0.5"
+ "argparse": "1.0.10",
+ "glob": "7.1.2"
},
"dependencies": {
"glob": {
@@ -9731,25 +9330,175 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
}
}
}
},
"yargs": {
- "version": "3.10.0",
- "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "dev": true,
"requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "window-size": "0.1.0"
+ "cliui": "4.1.0",
+ "decamelize": "1.2.0",
+ "find-up": "3.0.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "3.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "11.1.1"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "1.0.5",
+ "path-key": "2.0.1",
+ "semver": "5.5.0",
+ "shebang-command": "1.2.0",
+ "which": "1.2.14"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "6.0.5",
+ "get-stream": "4.1.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "3.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "3.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "3.0.0",
+ "path-exists": "3.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
+ "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "0.1.3",
+ "mimic-fn": "1.2.0",
+ "p-is-promise": "2.0.0"
+ }
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "1.0.0",
+ "lcid": "2.0.0",
+ "mem": "4.1.0"
+ }
+ },
+ "p-is-promise": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
+ "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "5.0.0",
+ "decamelize": "1.2.0"
+ }
+ }
}
},
"yargs-parser": {
@@ -9758,7 +9507,7 @@
"integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
"dev": true,
"requires": {
- "camelcase": "^4.1.0"
+ "camelcase": "4.1.0"
},
"dependencies": {
"camelcase": {
@@ -9769,13 +9518,24 @@
}
}
},
+ "yargs-unparser": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz",
+ "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==",
+ "dev": true,
+ "requires": {
+ "flat": "4.1.0",
+ "lodash": "4.17.11",
+ "yargs": "12.0.5"
+ }
+ },
"yauzl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
"dev": true,
"requires": {
- "fd-slicer": "~1.0.1"
+ "fd-slicer": "1.0.1"
}
},
"yn": {
diff --git a/package.json b/package.json
index 3432e3545..d11dcf9f2 100644
--- a/package.json
+++ b/package.json
@@ -5,10 +5,18 @@
"bin": {
"authelia": "./dist/server/src/index.js"
},
+ "engines": {
+ "node": ">=8.0.0 <10.0.0"
+ },
"scripts": {
- "test": "./node_modules/.bin/grunt test-unit",
+ "start": "./scripts/authelia-scripts suites start",
+ "build": "./scripts/authelia-scripts build",
+ "unittest": "./scripts/authelia-scripts unittest",
+ "test": "./scripts/authelia-scripts suites test",
+ "travis": "./scripts/authelia-scripts travis",
"cover": "NODE_ENV=test nyc npm t",
- "serve": "node dist/server/index.js"
+ "scripts": "./scripts/authelia-scripts",
+ "hash-password": "./scripts/authelia-scripts hash-password"
},
"repository": {
"type": "git",
@@ -23,6 +31,7 @@
"title": "Authelia API documentation"
},
"dependencies": {
+ "@types/url-parse": "^1.4.2",
"ajv": "^6.3.0",
"bluebird": "^3.5.0",
"body-parser": "^1.15.2",
@@ -40,39 +49,36 @@
"nodemailer-direct-transport": "^3.3.2",
"nodemailer-smtp-transport": "^2.7.4",
"object-path": "^0.11.3",
- "pug": "^2.0.0-rc.2",
"randomatic": "^3.1.0",
"randomstring": "^1.1.5",
"redis": "^2.8.0",
"speakeasy": "^2.0.0",
"u2f": "^0.1.2",
"u2f-api": "^1.0.7",
+ "url-parse": "^1.4.4",
"winston": "^2.3.1",
"yamljs": "^0.3.0"
},
"devDependencies": {
"@types/bluebird": "^3.5.4",
"@types/body-parser": "^1.16.3",
- "@types/bootstrap": "^4.0.1",
+ "@types/chokidar": "^1.7.5",
+ "@types/commander": "^2.12.2",
"@types/connect-redis": "0.0.7",
- "@types/cors": "^2.8.1",
- "@types/cucumber": "^4.0.1",
"@types/ejs": "^2.3.33",
"@types/express": "^4.0.35",
"@types/express-session": "1.15.8",
"@types/helmet": "0.0.37",
- "@types/jquery": "^3.3.1",
- "@types/jsdom": "^11.0.4",
"@types/ldapjs": "^1.0.3",
- "@types/mocha": "^5.0.0",
+ "@types/mocha": "^5.2.6",
"@types/mockdate": "^2.0.0",
"@types/mongodb": "^3.0.9",
"@types/nedb": "^1.8.3",
+ "@types/node-fetch": "^2.1.4",
"@types/nodemailer": "^4.6.0",
"@types/nodemailer-direct-transport": "^1.0.31",
"@types/nodemailer-smtp-transport": "^2.7.4",
"@types/object-path": "^0.9.28",
- "@types/proxyquire": "^1.3.27",
"@types/query-string": "^5.1.0",
"@types/randomstring": "^1.1.5",
"@types/redis": "^2.6.0",
@@ -85,28 +91,21 @@
"@types/winston": "^2.3.2",
"@types/yamljs": "^0.2.30",
"apidoc": "^0.17.6",
- "bootstrap": "^4.1.3",
- "browserify": "^16.1.1",
+ "chokidar": "^2.0.4",
"chromedriver": "^2.37.0",
- "cucumber": "^4.0.0",
+ "commander": "^2.19.0",
+ "concurrently": "^4.1.0",
"grunt": "^1.0.3",
- "grunt-browserify": "^5.0.0",
"grunt-contrib-clean": "^2.0.0",
- "grunt-contrib-concat": "^1.0.1",
"grunt-contrib-copy": "^1.0.0",
- "grunt-contrib-cssmin": "^2.2.0",
- "grunt-contrib-watch": "^1.1.0",
- "grunt-env": "^0.4.4",
"grunt-run": "^0.8.0",
"istanbul": "^0.4.5",
"jquery": "^3.2.1",
- "js-logger": "^1.3.0",
- "jsdom": "^11.0.0",
- "mocha": "^5.0.5",
+ "mocha": "^6.0.2",
"mockdate": "^2.0.1",
- "nyc": "^13.1.0",
- "power-assert": "^1.4.4",
- "proxyquire": "^2.0.1",
+ "node-fetch": "^2.3.0",
+ "nodemon": "^1.18.9",
+ "nyc": "^13.3.0",
"query-string": "^6.0.0",
"readable-stream": "^2.3.3",
"request": "^2.88.0",
@@ -115,11 +114,11 @@
"should": "^13.2.1",
"sinon": "^5.0.7",
"tmp": "0.0.33",
+ "tree-kill": "^1.2.1",
"ts-node": "^6.0.1",
"tslint": "^5.2.0",
- "typescript": "^2.3.2",
- "typescript-json-schema": "^0.23.0",
- "uglify-es": "^3.0.15"
+ "typescript": "^2.9.2",
+ "typescript-json-schema": "^0.23.0"
},
"nyc": {
"include": [
diff --git a/scripts/authelia-scripts b/scripts/authelia-scripts
new file mode 100755
index 000000000..3f81c58ab
--- /dev/null
+++ b/scripts/authelia-scripts
@@ -0,0 +1,17 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+
+program
+ .version('0.0.1')
+
+ .command('suites', 'Run Authelia in specific environments.')
+ .command('serve', 'Run Authelia with a customized configuration.')
+ .command('build', 'Build production version of Authelia from source.')
+ .command('clean', 'Clean the production version of Authelia.')
+ .command('unittest', 'Run Authelia integration tests.')
+
+ .command('travis', 'Build and test Authelia on Travis.')
+ .command('hash-password ', 'Hash a password with SSHA512.')
+ .command('docker', 'Docker related commands.')
+ .parse(process.argv);
\ No newline at end of file
diff --git a/scripts/authelia-scripts-build b/scripts/authelia-scripts-build
new file mode 100755
index 000000000..336aaed50
--- /dev/null
+++ b/scripts/authelia-scripts-build
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -x
+set -e
+
+DIST_DIR=dist
+
+rm -rf $DIST_DIR
+
+# Build the server
+./node_modules/.bin/tslint -c server/tslint.json -p server/tsconfig.json
+./node_modules/.bin/tsc -p server/tsconfig.json
+
+mkdir -p $DIST_DIR/server/src/resources
+cp server/src/resources/** $DIST_DIR/server/src/resources/
+
+./node_modules/.bin/typescript-json-schema -o server/src/lib/configuration/Configuration.schema.json --strictNullChecks --required server/tsconfig.json Configuration
+
+# Copy in dist
+cp server/src/lib/configuration/Configuration.schema.json $DIST_DIR/server/src/lib/configuration
+
+
+# Build the client
+pushd client
+npm run build
+popd
+
+mv client/build $DIST_DIR/server/src/public_html
+
diff --git a/scripts/authelia-scripts-clean b/scripts/authelia-scripts-clean
new file mode 100755
index 000000000..ce010bffd
--- /dev/null
+++ b/scripts/authelia-scripts-clean
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+rm -rf dist
diff --git a/scripts/authelia-scripts-docker b/scripts/authelia-scripts-docker
new file mode 100755
index 000000000..e7d71573b
--- /dev/null
+++ b/scripts/authelia-scripts-docker
@@ -0,0 +1,8 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+
+program
+ .command('build', 'Build docker image clems4ever/authelia.')
+ .command('publish', 'Publish image clems4ever/authelia to Dockerhub.')
+ .parse(process.argv);
diff --git a/scripts/authelia-scripts-docker-build b/scripts/authelia-scripts-docker-build
new file mode 100755
index 000000000..a221c6863
--- /dev/null
+++ b/scripts/authelia-scripts-docker-build
@@ -0,0 +1,6 @@
+#!/usr/bin/env node
+
+var { exec } = require('./utils/exec');
+var { IMAGE_NAME } = require('./utils/docker');
+
+exec(`docker build -t ${IMAGE_NAME} .`);
\ No newline at end of file
diff --git a/scripts/docker-publish.sh b/scripts/authelia-scripts-docker-publish
similarity index 97%
rename from scripts/docker-publish.sh
rename to scripts/authelia-scripts-docker-publish
index 0e6bb76b6..81c144191 100755
--- a/scripts/docker-publish.sh
+++ b/scripts/authelia-scripts-docker-publish
@@ -21,7 +21,6 @@ function deploy_on_dockerhub {
echo "==========================================================="
echo "Docker image $IMAGE_WITH_TAG will be deployed on Dockerhub."
echo "==========================================================="
- docker build -t $IMAGE_NAME .
docker tag $IMAGE_NAME $IMAGE_WITH_TAG;
docker push $IMAGE_WITH_TAG;
echo "Docker image deployed successfully."
diff --git a/scripts/authelia-scripts-hash-password b/scripts/authelia-scripts-hash-password
new file mode 100755
index 000000000..e8e25d5c3
--- /dev/null
+++ b/scripts/authelia-scripts-hash-password
@@ -0,0 +1,28 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+var RandomString = require("randomstring");
+var Util = require("util");
+var crypt = require("crypt3");
+
+function ssha512(password, saltSize, rounds) {
+ // $6 means SHA512
+ const _salt = Util.format("$6$rounds=%d$%s", rounds,
+ RandomString.generate(saltSize));
+
+ const hash = crypt(password, _salt);
+ return Util.format("{CRYPT}%s", hash);
+}
+
+let password;
+
+program
+ .option('-s, --salt ', 'The size of the salt to generate.')
+ .option('-r, --rounds ', 'The number of rounds.')
+ .arguments('')
+ .action(function (_password) {
+ password = _password;
+ })
+ .parse(process.argv);
+
+console.log(ssha512(password, program.salt || 16, program.rounds || 500000));
diff --git a/scripts/authelia-scripts-serve b/scripts/authelia-scripts-serve
new file mode 100755
index 000000000..13c290ea3
--- /dev/null
+++ b/scripts/authelia-scripts-serve
@@ -0,0 +1,27 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+var spawn = require('child_process').spawn;
+var fs = require('fs');
+
+let config;
+
+program
+ .description('Run Authelia server with a custom configuration file. This is an alternative to suites in the case the environment is already set up.')
+ .arguments('[config_file]', 'Configuration file to run Authelia with.')
+ .action((configArg) => config = configArg)
+ .parse(process.argv);
+
+
+if (!config) {
+ config = 'config.yml'; // set default config file.;
+}
+
+const server = spawn('/usr/bin/env', ['node', 'dist/server/src/index.js', config]);
+
+server.stdout.pipe(process.stdout);
+server.stderr.pipe(process.stderr);
+
+server.on('exit', function(statusCode) {
+ process.exit(statusCode);
+});
\ No newline at end of file
diff --git a/scripts/authelia-scripts-suites b/scripts/authelia-scripts-suites
new file mode 100755
index 000000000..7d1c333fc
--- /dev/null
+++ b/scripts/authelia-scripts-suites
@@ -0,0 +1,10 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+
+program
+ .command('start', 'Start a suite.')
+ .command('list', 'List the available suites')
+ .command('test', 'Test a suite.')
+ .command('clean', 'Clean remaining environment artifacts (like docker-compose env).')
+ .parse(process.argv);
diff --git a/scripts/authelia-scripts-suites-clean b/scripts/authelia-scripts-suites-clean
new file mode 100755
index 000000000..d6775472b
--- /dev/null
+++ b/scripts/authelia-scripts-suites-clean
@@ -0,0 +1,18 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+var spawn = require('child_process').spawn;
+
+program
+ .description(`Clean environment artifacts from previous suites.`)
+ .parse(process.argv)
+
+runEnvProcess = spawn('./node_modules/.bin/ts-node -P test/tsconfig.json -- ./scripts/clean-environment.ts', {
+ shell: true
+});
+runEnvProcess.stdout.pipe(process.stdout);
+runEnvProcess.stderr.pipe(process.stderr);
+
+runEnvProcess.on('exit', function(statusCode) {
+ process.exit(statusCode);
+});
\ No newline at end of file
diff --git a/scripts/authelia-scripts-suites-list b/scripts/authelia-scripts-suites-list
new file mode 100755
index 000000000..4891f6382
--- /dev/null
+++ b/scripts/authelia-scripts-suites-list
@@ -0,0 +1,10 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+var ListSuites = require('./utils/ListSuites');
+
+program
+ .description(`List the available suites.`)
+ .parse(process.argv)
+
+console.log(ListSuites().join("\n"));
\ No newline at end of file
diff --git a/scripts/authelia-scripts-suites-start b/scripts/authelia-scripts-suites-start
new file mode 100755
index 000000000..1fdc85a97
--- /dev/null
+++ b/scripts/authelia-scripts-suites-start
@@ -0,0 +1,59 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+var spawn = require('child_process').spawn;
+var fs = require('fs');
+var ListSuites = require('./utils/ListSuites');
+
+let suite;
+
+program
+ .description(`Start the suite provided as argument. You can list the suites with the 'list' command.`)
+ .arguments('')
+ .action((suiteArg) => suite = suiteArg)
+ .parse(process.argv)
+
+if (!suite) {
+ program.help();
+}
+
+if (ListSuites().indexOf(suite) == -1) {
+ console.log("[WARNING] This suite does not exist. Use 'list' command to check the existing suites.");
+ process.exit(1);
+}
+
+const ENVIRONMENT_FILENAME = '.suite';
+
+let runEnvProcess;
+
+// Sometime SIGINT is received twice, we make sure with this variable that we cleanup
+// only once.
+var alreadyCleaningUp = false;
+
+// Properly cleanup server and client if ctrl-c is hit
+process.on('SIGINT', function() {
+ if (alreadyCleaningUp) return;
+ alreadyCleaningUp = true;
+ console.log('Cleanup procedure is running...');
+});
+
+async function main() {
+ fs.writeFileSync(ENVIRONMENT_FILENAME, suite);
+
+ // Start the environment from ts-node process.
+ runEnvProcess = spawn('./node_modules/.bin/ts-node -P test/tsconfig.json -- ./scripts/run-environment.ts ' + suite, {
+ shell: true
+ });
+ runEnvProcess.stdout.pipe(process.stdout);
+ runEnvProcess.stderr.pipe(process.stderr);
+
+ runEnvProcess.on('exit', function(statusCode) {
+ fs.unlinkSync(ENVIRONMENT_FILENAME);
+ process.exit(statusCode);
+ });
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1)
+});
\ No newline at end of file
diff --git a/scripts/authelia-scripts-suites-test b/scripts/authelia-scripts-suites-test
new file mode 100755
index 000000000..11946260a
--- /dev/null
+++ b/scripts/authelia-scripts-suites-test
@@ -0,0 +1,61 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+var spawn = require('child_process').spawn;
+var fs = require('fs');
+
+let suite;
+
+program
+ .description('Run the tests for the current suite or the provided one.')
+ .arguments('[suite]')
+ .option('--headless', 'Run in headless mode.')
+ .action((suiteArg) => suite = suiteArg)
+ .parse(process.argv);
+
+let args = [];
+const ENVIRONMENT_FILENAME = '.suite'; // This file is created by the start command.
+
+if (suite) {
+ if (fs.existsSync(ENVIRONMENT_FILENAME) && suite != fs.readFileSync(ENVIRONMENT_FILENAME)) {
+ console.error('You cannot test a suite while another one is running. If you want to test the current suite, ' +
+ 'do not provide the suite argument. Otherwise, stop the current suite and run the command again.');
+ process.exit(1);
+ }
+ console.log('Suite %s provided. Running test related to this suite against built version of Authelia.', suite);
+ args.push('test/suites/' + suite + '/test.ts');
+}
+else if (fs.existsSync(ENVIRONMENT_FILENAME)) {
+ suite = fs.readFileSync(ENVIRONMENT_FILENAME);
+ console.log('Suite %s detected from dev env. Running test related to this suite.', suite);
+ args.push('test/suites/' + suite + '/test.ts');
+}
+else {
+ console.log('No suite provided therefore all suites will be tested.');
+ args.push('test/suites/**/test.ts');
+}
+
+mocha = spawn('./node_modules/.bin/mocha', ['--forbid-only', '--forbid-pending', '--exit', '--colors', '--require', 'ts-node/register', ...args], {
+ env: {
+ ...process.env,
+ TS_NODE_PROJECT: 'test/tsconfig.json',
+ HEADLESS: (program.headless) ? 'y' : 'n',
+ }
+});
+
+mocha.stdout.pipe(process.stdout);
+mocha.stderr.pipe(process.stderr);
+
+mocha.on('exit', function(statusCode) {
+ if (statusCode != 0) {
+ console.error("The tests failed... Mocha exited with status code " + statusCode);
+ fs.readFile('/tmp/authelia-server.log', function(err, data) {
+ if (err) {
+ console.error(err);
+ return;
+ }
+ console.log(data.toString('utf-8'));
+ });
+ }
+ process.exit(statusCode);
+})
diff --git a/scripts/authelia-scripts-travis b/scripts/authelia-scripts-travis
new file mode 100755
index 000000000..11e6ce615
--- /dev/null
+++ b/scripts/authelia-scripts-travis
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+set -e
+
+export PATH=./scripts:$PATH
+
+docker --version
+docker-compose --version
+echo "node `node -v`"
+echo "npm `npm -v`"
+
+docker-compose -f docker-compose.yml \
+ -f example/compose/mongo/docker-compose.yml \
+ -f example/compose/redis/docker-compose.yml \
+ -f example/compose/nginx/backend/docker-compose.yml \
+ -f example/compose/nginx/portal/docker-compose.yml \
+ -f example/compose/smtp/docker-compose.yml \
+ -f example/compose/httpbin/docker-compose.yml \
+ -f example/compose/ldap/docker-compose.admin.yml \
+ -f example/compose/ldap/docker-compose.yml \
+ pull
+
+# Build
+authelia-scripts build
+
+# Run unit tests
+authelia-scripts unittest
+
+# Build the docker image
+authelia-scripts docker build
+
+# Run integration tests
+authelia-scripts suites test --headless
+
+# Test npm deployment before actual deployment
+# ./scripts/npm-deployment-test.sh
diff --git a/scripts/authelia-scripts-unittest b/scripts/authelia-scripts-unittest
new file mode 100755
index 000000000..8e7c113c9
--- /dev/null
+++ b/scripts/authelia-scripts-unittest
@@ -0,0 +1,40 @@
+#!/usr/bin/env node
+
+var program = require('commander');
+var spawn = require('child_process').spawn;
+
+program
+ .parse(process.argv);
+
+async function runTests(pattern) {
+ return new Promise((resolve, reject) => {
+ mocha = spawn('./node_modules/.bin/mocha', ['--colors', '--require', 'ts-node/register', pattern], {
+ env: {
+ ...process.env,
+ 'TS_NODE_PROJECT': './server/tsconfig.json'
+ }
+ });
+
+ mocha.stdout.pipe(process.stdout);
+ mocha.stderr.pipe(process.stderr);
+ mocha.on('exit', (status) => {
+ if (status == 0) {
+ resolve();
+ }
+ reject(new Error('Status code ' + status));
+ });
+ });
+}
+
+async function test() {
+ await runTests('server/src/**/*.spec.ts');
+ await runTests('shared/**/*.spec.ts');
+}
+
+test()
+ .then(() => {
+ process.exit(0);
+ }, (err) => {
+ process.exit(1);
+ });
+
diff --git a/scripts/clean-environment.ts b/scripts/clean-environment.ts
new file mode 100644
index 000000000..0a874ebf5
--- /dev/null
+++ b/scripts/clean-environment.ts
@@ -0,0 +1,8 @@
+var ListSuites = require('./utils/ListSuites');
+
+const suites = ListSuites();
+
+suites.forEach(async (suite: string) => {
+ var { teardown } = require(`../test/suites/${suite}/environment`);;
+ teardown().catch((err: Error) => console.error(err));
+});
\ No newline at end of file
diff --git a/scripts/dc-dev.sh b/scripts/dc-dev.sh
deleted file mode 100755
index 191b704ca..000000000
--- a/scripts/dc-dev.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-set -e
-
-docker-compose \
- -f docker-compose.dev.yml \
- -f example/compose/docker-compose.base.yml \
- -f example/compose/mongo/docker-compose.yml \
- -f example/compose/redis/docker-compose.yml \
- -f example/compose/nginx/backend/docker-compose.yml \
- -f example/compose/nginx/portal/docker-compose.yml \
- -f example/compose/smtp/docker-compose.yml \
- -f example/compose/httpbin/docker-compose.yml \
- -f example/compose/ldap/docker-compose.admin.yml \
- -f example/compose/ldap/docker-compose.yml $*
diff --git a/scripts/example-commit/dc-example.sh b/scripts/example-commit/dc-example.sh
deleted file mode 100755
index 0f9e38403..000000000
--- a/scripts/example-commit/dc-example.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-set -e
-
-docker-compose \
- -f docker-compose.yml \
- -f example/compose/docker-compose.base.yml \
- -f example/compose/mongo/docker-compose.yml \
- -f example/compose/redis/docker-compose.yml \
- -f example/compose/nginx/backend/docker-compose.yml \
- -f example/compose/nginx/portal/docker-compose.yml \
- -f example/compose/smtp/docker-compose.yml \
- -f example/compose/httpbin/docker-compose.yml \
- -f example/compose/ldap/docker-compose.yml $*
diff --git a/scripts/example-commit/deploy-example.sh b/scripts/example-commit/deploy-example.sh
deleted file mode 100755
index 4bd228ff0..000000000
--- a/scripts/example-commit/deploy-example.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-DC_SCRIPT=./scripts/example-commit/dc-example.sh
-
-$DC_SCRIPT build
-$DC_SCRIPT up -d httpbin mongo redis openldap authelia smtp nginx-portal nginx-backend
diff --git a/scripts/example-commit/undeploy-example.sh b/scripts/example-commit/undeploy-example.sh
deleted file mode 100755
index 3ef607fe1..000000000
--- a/scripts/example-commit/undeploy-example.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-DC_SCRIPT=./scripts/example-commit/dc-example.sh
-
-$DC_SCRIPT down
diff --git a/scripts/example-dockerhub/dc-example.sh b/scripts/example-dockerhub/dc-example.sh
deleted file mode 100755
index a60b0f49c..000000000
--- a/scripts/example-dockerhub/dc-example.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-set -e
-
-docker-compose \
- -f docker-compose.dockerhub.yml \
- -f example/compose/docker-compose.base.yml \
- -f example/compose/mongo/docker-compose.yml \
- -f example/compose/redis/docker-compose.yml \
- -f example/compose/nginx/backend/docker-compose.yml \
- -f example/compose/nginx/portal/docker-compose.yml \
- -f example/compose/smtp/docker-compose.yml \
- -f example/compose/httpbin/docker-compose.yml \
- -f example/compose/ldap/docker-compose.yml $*
diff --git a/scripts/example-dockerhub/deploy-example.sh b/scripts/example-dockerhub/deploy-example.sh
deleted file mode 100755
index 844920653..000000000
--- a/scripts/example-dockerhub/deploy-example.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-DC_SCRIPT=./scripts/example-dockerhub/dc-example.sh
-
-#$DC_SCRIPT build
-$DC_SCRIPT up -d httpbin mongo redis openldap authelia smtp nginx-portal nginx-backend
diff --git a/scripts/example-dockerhub/undeploy-example.sh b/scripts/example-dockerhub/undeploy-example.sh
deleted file mode 100755
index 1b943f396..000000000
--- a/scripts/example-dockerhub/undeploy-example.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-DC_SCRIPT=./scripts/example-dockerhub/dc-example.sh
-
-$DC_SCRIPT down
diff --git a/scripts/integration-tests.sh b/scripts/integration-tests.sh
deleted file mode 100755
index f84f969d1..000000000
--- a/scripts/integration-tests.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-
-DC_SCRIPT=./scripts/example-commit/dc-example.sh
-EXPECTED_SERVICES_COUNT=8
-
-build_services() {
- $DC_SCRIPT build authelia
-}
-
-expect_services_count() {
- EXPECTED_COUNT=$1
- service_count=`docker ps -a | grep "Up " | wc -l`
-
- if [ "${service_count}" -eq "$EXPECTED_COUNT" ]
- then
- echo "Services are up and running."
- else
- echo "Some services exited..."
- docker ps -a
- exit 1
- fi
-}
-
-run_integration_tests() {
- ./node_modules/.bin/grunt test-int
-}
-
-run_other_tests() {
- echo "Test dev environment deployment (commands in README)"
- ./scripts/example-commit/deploy-example.sh
- expect_services_count $EXPECTED_SERVICES_COUNT
- ./scripts/example-commit/undeploy-example.sh
-}
-
-run_other_tests_docker() {
- echo "Test dev docker deployment (commands in README)"
- ./scripts/example-dockerhub/deploy-example.sh
- expect_services_count $EXPECTED_SERVICES_COUNT
- ./scripts/example-dockerhub/undeploy-example.sh
-}
-
-set -e
-
-# Build the container
-build_services
-
-# Pull all images
-$DC_SCRIPT pull
-
-# Prepare & test example from end user perspective
-run_integration_tests
-
-# Other tests like executing the deployment script
-run_other_tests
-
-# Test example with precompiled container
-run_other_tests_docker
diff --git a/scripts/run-cucumber.sh b/scripts/run-cucumber.sh
deleted file mode 100755
index cfd0ed9f0..000000000
--- a/scripts/run-cucumber.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-REQ=`for f in test/features/step_definitions/*.ts; do echo "--require $f"; done;`
-
-./node_modules/.bin/cucumber-js --format-options '{"colorsEnabled": true}' --require-module ts-node/register --require test/features/support/world.ts $REQ $*
diff --git a/scripts/run-environment.ts b/scripts/run-environment.ts
new file mode 100644
index 000000000..ed1655e94
--- /dev/null
+++ b/scripts/run-environment.ts
@@ -0,0 +1,40 @@
+
+const userSuite = process.argv[2];
+
+var { setup, teardown } = require(`../test/suites/${userSuite}/environment`);
+
+function sleep(ms: number) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+}
+
+let teardownInProgress = false;
+
+process.on('SIGINT', function() {
+ if (teardownInProgress) return;
+ teardownInProgress = true;
+ console.log('Tearing down environment...');
+ return teardown()
+ .then(() => {
+ process.exit(0)
+ })
+ .catch((err: Error) => {
+ console.error(err);
+ process.exit(1);
+ });
+});
+
+function main() {
+ console.log('Setting up environment...');
+ return setup()
+ .then(async () => {
+ while (true) {
+ await sleep(10000);
+ }
+ })
+ .catch((err: Error) => {
+ console.error(err);
+ process.exit(1);
+ });
+}
+
+main();
\ No newline at end of file
diff --git a/scripts/travis.sh b/scripts/travis.sh
deleted file mode 100755
index 664242d2a..000000000
--- a/scripts/travis.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-set -e
-
-docker --version
-docker-compose --version
-echo "node `node -v`"
-echo "npm `npm -v`"
-
-# Generate configuration schema
-grunt schema
-
-# Run unit tests
-grunt test-unit
-
-# Build the app from Typescript and package
-grunt build-dist
-
-# Run integration/example tests
-./scripts/integration-tests.sh
-
-# Test npm deployment before actual deployment
-# ./scripts/npm-deployment-test.sh
diff --git a/scripts/utils/ListSuites.js b/scripts/utils/ListSuites.js
new file mode 100644
index 000000000..546d05f8e
--- /dev/null
+++ b/scripts/utils/ListSuites.js
@@ -0,0 +1,13 @@
+const { lstatSync, readdirSync } = require('fs')
+const { join } = require('path')
+
+const isDirectory = source => lstatSync(source).isDirectory()
+const getDirectories = source =>
+ readdirSync(source)
+ .map(name => join(source, name))
+ .filter(isDirectory)
+ .map(x => x.split('/').slice(-1)[0])
+
+module.exports = function() {
+ return getDirectories('test/suites/');
+}
\ No newline at end of file
diff --git a/scripts/utils/docker.js b/scripts/utils/docker.js
new file mode 100644
index 000000000..5d78bbe3f
--- /dev/null
+++ b/scripts/utils/docker.js
@@ -0,0 +1,5 @@
+
+
+module.exports = {
+ IMAGE_NAME: 'clems4ever/authelia'
+}
\ No newline at end of file
diff --git a/scripts/utils/exec.js b/scripts/utils/exec.js
new file mode 100644
index 000000000..82cdec729
--- /dev/null
+++ b/scripts/utils/exec.js
@@ -0,0 +1,21 @@
+var spawn = require('child_process').spawn;
+
+function exec(cmd) {
+ return new Promise((resolve, reject) => {
+ const command = spawn(cmd, {
+ shell: true
+ });
+ command.stdout.pipe(process.stdout);
+ command.stderr.pipe(process.stderr);
+
+ command.on('exit', function(statusCode) {
+ if (statusCode != 0) {
+ reject(new Error('Exited with status ' + statusCode));
+ return;
+ }
+ resolve();
+ })
+ })
+}
+
+module.exports = { exec }
\ No newline at end of file
diff --git a/server/src/lib/AuthenticationSessionHandler.ts b/server/src/lib/AuthenticationSessionHandler.ts
index 57361bf8a..1e54054ff 100644
--- a/server/src/lib/AuthenticationSessionHandler.ts
+++ b/server/src/lib/AuthenticationSessionHandler.ts
@@ -1,8 +1,6 @@
import express = require("express");
-import U2f = require("u2f");
-import BluebirdPromise = require("bluebird");
import { AuthenticationSession } from "../../types/AuthenticationSession";
import { IRequestLogger } from "./logging/IRequestLogger";
import { Level } from "./authentication/Level";
@@ -36,7 +34,8 @@ export class AuthenticationSessionHandler {
}
if (!req.session.auth) {
- logger.debug(req, "Authentication session %s was undefined. Resetting.", req.sessionID);
+ logger.debug(req, "Authentication session %s was undefined. Resetting..." +
+ " If it's unexpected, make sure you are visiting the expected domain.", req.sessionID);
AuthenticationSessionHandler.reset(req);
}
diff --git a/server/src/lib/ErrorReplies.ts b/server/src/lib/ErrorReplies.ts
index f1c5f4fd1..93bc89841 100644
--- a/server/src/lib/ErrorReplies.ts
+++ b/server/src/lib/ErrorReplies.ts
@@ -1,5 +1,4 @@
import express = require("express");
-import BluebirdPromise = require("bluebird");
import { IRequestLogger } from "./logging/IRequestLogger";
function replyWithError(req: express.Request, res: express.Response,
diff --git a/server/src/lib/FirstFactorValidator.ts b/server/src/lib/FirstFactorValidator.ts
index 231060002..e098b7e92 100644
--- a/server/src/lib/FirstFactorValidator.ts
+++ b/server/src/lib/FirstFactorValidator.ts
@@ -1,7 +1,6 @@
import BluebirdPromise = require("bluebird");
import express = require("express");
-import objectPath = require("object-path");
import Exceptions = require("./Exceptions");
import { AuthenticationSessionHandler } from "./AuthenticationSessionHandler";
import { IRequestLogger } from "./logging/IRequestLogger";
diff --git a/server/src/lib/IdentityCheckMiddleware.spec.ts b/server/src/lib/IdentityCheckMiddleware.spec.ts
index 842ed6bcb..db32e4e08 100644
--- a/server/src/lib/IdentityCheckMiddleware.spec.ts
+++ b/server/src/lib/IdentityCheckMiddleware.spec.ts
@@ -1,24 +1,16 @@
import sinon = require("sinon");
-import IdentityValidator = require("./IdentityCheckMiddleware");
-import { AuthenticationSessionHandler }
- from "./AuthenticationSessionHandler";
-import { AuthenticationSession } from "../../types/AuthenticationSession";
-import { UserDataStore } from "./storage/UserDataStore";
+import * as IdentityCheckMiddleware from "./IdentityCheckMiddleware";
import exceptions = require("./Exceptions");
import { ServerVariables } from "./ServerVariables";
import Assert = require("assert");
import express = require("express");
import BluebirdPromise = require("bluebird");
import ExpressMock = require("./stubs/express.spec");
-import NotifierMock = require("./notifiers/NotifierStub.spec");
import { IdentityValidableStub } from "./IdentityValidableStub.spec";
-import { RequestLoggerStub } from "./logging/RequestLoggerStub.spec";
import { ServerVariablesMock, ServerVariablesMockBuilder }
from "./ServerVariablesMockBuilder.spec";
-import { PRE_VALIDATION_TEMPLATE }
- from "./IdentityCheckPreValidationTemplate";
-
+import { OPERATION_FAILED } from "../../../shared/UserMessages";
describe("IdentityCheckMiddleware", function () {
let req: ExpressMock.RequestMock;
@@ -69,8 +61,8 @@ throws a first factor error", function () {
identityValidable.preValidationInitStub.returns(BluebirdPromise.reject(
new exceptions.FirstFactorValidationError(
"Error during prevalidation")));
- const callback = IdentityValidator.get_start_validation(
- identityValidable, "/endpoint", vars);
+ const callback = IdentityCheckMiddleware.post_start_validation(
+ identityValidable, vars);
return callback(req as any, res as any, undefined)
.then(() => {
@@ -84,8 +76,8 @@ throws a first factor error", function () {
identityValidable.preValidationInitStub
.returns(BluebirdPromise.resolve(identity));
- const callback = IdentityValidator
- .get_start_validation(identityValidable, "/endpoint", vars);
+ const callback = IdentityCheckMiddleware
+ .post_start_validation(identityValidable, vars);
return callback(req as any, res as any, undefined)
.then(function () {
@@ -96,13 +88,12 @@ throws a first factor error", function () {
// In that case we answer with 200 to avoid user enumeration.
it("should send 200 if userid is missing in provided identity",
function () {
- const endpoint = "/protected";
const identity = { email: "abc@example.com" };
identityValidable.preValidationInitStub
.returns(BluebirdPromise.resolve(identity));
- const callback = IdentityValidator
- .get_start_validation(identityValidable, "/endpoint", vars);
+ const callback = IdentityCheckMiddleware
+ .post_start_validation(identityValidable, vars);
return callback(req as any, res as any, undefined)
.then(function () {
@@ -110,52 +101,49 @@ throws a first factor error", function () {
});
});
- it("should issue a token, send an email and return 204", function () {
- const endpoint = "/protected";
+ it("should issue a token, send an email and return 204", async function () {
const identity = { userid: "user", email: "abc@example.com" };
req.get = sinon.stub().withArgs("Host").returns("localhost");
identityValidable.preValidationInitStub
.returns(BluebirdPromise.resolve(identity));
- const callback = IdentityValidator
- .get_start_validation(identityValidable, "/finish_endpoint", vars);
+ const callback = IdentityCheckMiddleware
+ .post_start_validation(identityValidable, vars);
- return callback(req as any, res as any, undefined)
- .then(function () {
- Assert(mocks.notifier.notifyStub.calledOnce);
- Assert(mocks.userDataStore.produceIdentityValidationTokenStub
- .calledOnce);
- Assert.equal(mocks.userDataStore.produceIdentityValidationTokenStub
- .getCall(0).args[0], "user");
- Assert.equal(mocks.userDataStore.produceIdentityValidationTokenStub
- .getCall(0).args[3], 240000);
- });
+ await callback(req as any, res as any, undefined)
+ Assert(mocks.notifier.notifyStub.calledOnce);
+ Assert(mocks.userDataStore.produceIdentityValidationTokenStub
+ .calledOnce);
+ Assert.equal(mocks.userDataStore.produceIdentityValidationTokenStub
+ .getCall(0).args[0], "user");
+ Assert.equal(mocks.userDataStore.produceIdentityValidationTokenStub
+ .getCall(0).args[3], 240000);
});
});
describe("test finish GET", function () {
- it("should send 401 if no identity_token is provided", () => {
- const callback = IdentityValidator
- .get_finish_validation(identityValidable, vars);
+ it("should return an error if no identity_token is provided", () => {
+ const callback = IdentityCheckMiddleware
+ .post_finish_validation(identityValidable, vars);
return callback(req as any, res as any, undefined)
.then(function () {
- Assert(res.redirect.calledWith("/error/401"));
+ Assert(res.status.calledWith(200));
+ Assert(res.send.calledWith({'error': OPERATION_FAILED}));
});
});
it("should call postValidation if identity_token is provided and still \
valid", function () {
req.query.identity_token = "token";
-
- const callback = IdentityValidator
- .get_finish_validation(identityValidable, vars);
+ const callback = IdentityCheckMiddleware
+ .post_finish_validation(identityValidable, vars);
return callback(req as any, res as any, undefined);
});
- it("should return 401 if identity_token is provided but invalid",
+ it("should return an error if identity_token is provided but invalid",
function () {
req.query.identity_token = "token";
@@ -165,11 +153,12 @@ valid", function () {
mocks.userDataStore.consumeIdentityValidationTokenStub
.returns(BluebirdPromise.reject(new Error("Invalid token")));
- const callback = IdentityValidator
- .get_finish_validation(identityValidable, vars);
+ const callback = IdentityCheckMiddleware
+ .post_finish_validation(identityValidable, vars);
return callback(req as any, res as any, undefined)
.then(() => {
- Assert(res.redirect.calledWith("/error/401"));
+ Assert(res.status.calledWith(200));
+ Assert(res.send.calledWith({'error': OPERATION_FAILED}));
});
});
});
diff --git a/server/src/lib/IdentityCheckMiddleware.ts b/server/src/lib/IdentityCheckMiddleware.ts
index e72ea4db1..ff2fadea5 100644
--- a/server/src/lib/IdentityCheckMiddleware.ts
+++ b/server/src/lib/IdentityCheckMiddleware.ts
@@ -3,8 +3,6 @@ import randomstring = require("randomstring");
import BluebirdPromise = require("bluebird");
import util = require("util");
import Exceptions = require("./Exceptions");
-import fs = require("fs");
-import ejs = require("ejs");
import { IUserDataStore } from "./storage/IUserDataStore";
import Express = require("express");
import ErrorReplies = require("./ErrorReplies");
@@ -16,16 +14,13 @@ import { IdentityValidable } from "./IdentityValidable";
import Identity = require("../../types/Identity");
import { IdentityValidationDocument }
from "./storage/IdentityValidationDocument";
-
-const filePath = __dirname + "/../resources/email-template.ejs";
-const email_template = fs.readFileSync(filePath, "utf8");
+import { OPERATION_FAILED } from "../../../shared/UserMessages";
function createAndSaveToken(userid: string, challenge: string,
userDataStore: IUserDataStore): BluebirdPromise {
const five_minutes = 4 * 60 * 1000;
const token = randomstring.generate({ length: 64 });
- const that = this;
return userDataStore.produceIdentityValidationToken(userid, token, challenge,
five_minutes)
@@ -46,10 +41,10 @@ export function register(app: Express.Application,
handler: IdentityValidable,
vars: ServerVariables) {
- app.get(pre_validation_endpoint,
- get_start_validation(handler, post_validation_endpoint, vars));
- app.get(post_validation_endpoint,
- get_finish_validation(handler, vars));
+ app.post(pre_validation_endpoint,
+ post_start_validation(handler, vars));
+ app.post(post_validation_endpoint,
+ post_finish_validation(handler, vars));
}
function checkIdentityToken(req: Express.Request, identityToken: string)
@@ -60,7 +55,7 @@ function checkIdentityToken(req: Express.Request, identityToken: string)
return BluebirdPromise.resolve();
}
-export function get_finish_validation(handler: IdentityValidable,
+export function post_finish_validation(handler: IdentityValidable,
vars: ServerVariables)
: Express.RequestHandler {
@@ -69,7 +64,7 @@ export function get_finish_validation(handler: IdentityValidable,
let authSession: AuthenticationSession;
const identityToken = objectPath.get(
- req, "query.identity_token");
+ req, "query.token");
vars.logger.debug(req, "Identity token provided is %s", identityToken);
return checkIdentityToken(req, identityToken)
@@ -89,12 +84,11 @@ export function get_finish_validation(handler: IdentityValidable,
handler.postValidationResponse(req, res);
return BluebirdPromise.resolve();
})
- .catch(ErrorReplies.replyWithError401(req, res, vars.logger));
+ .catch(ErrorReplies.replyWithError200(req, res, vars.logger, OPERATION_FAILED));
};
}
-export function get_start_validation(handler: IdentityValidable,
- postValidationEndpoint: string,
+export function post_start_validation(handler: IdentityValidable,
vars: ServerVariables)
: Express.RequestHandler {
return function (req: Express.Request, res: Express.Response)
@@ -116,10 +110,10 @@ export function get_start_validation(handler: IdentityValidable,
return createAndSaveToken(userid, handler.challenge(),
vars.userDataStore);
})
- .then((token) => {
+ .then((token: string) => {
const host = req.get("Host");
- const link_url = util.format("https://%s%s?identity_token=%s", host,
- postValidationEndpoint, token);
+ const link_url = util.format("https://%s%s?token=%s", host,
+ handler.destinationPath(), token);
vars.logger.info(req, "Notification sent to user \"%s\"",
identity.userid);
return vars.notifier.notify(identity.email, handler.mailSubject(),
@@ -130,6 +124,7 @@ export function get_start_validation(handler: IdentityValidable,
return BluebirdPromise.resolve();
})
.catch(Exceptions.IdentityError, (err: Error) => {
+ vars.logger.error(req, err.message);
handler.preValidationResponse(req, res);
return BluebirdPromise.resolve();
})
diff --git a/server/src/lib/IdentityCheckPreValidationTemplate.ts b/server/src/lib/IdentityCheckPreValidationTemplate.ts
deleted file mode 100644
index 0161ce406..000000000
--- a/server/src/lib/IdentityCheckPreValidationTemplate.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-export const PRE_VALIDATION_TEMPLATE = "need-identity-validation";
\ No newline at end of file
diff --git a/server/src/lib/IdentityValidable.ts b/server/src/lib/IdentityValidable.ts
index 075580c9e..85a9a45c2 100644
--- a/server/src/lib/IdentityValidable.ts
+++ b/server/src/lib/IdentityValidable.ts
@@ -16,4 +16,5 @@ export interface IdentityValidable {
// Serves the page if identity validated
postValidationResponse(req: Express.Request, res: Express.Response): void;
mailSubject(): string;
+ destinationPath(): string;
}
\ No newline at end of file
diff --git a/server/src/lib/IdentityValidableStub.spec.ts b/server/src/lib/IdentityValidableStub.spec.ts
index 20a977140..e378c095b 100644
--- a/server/src/lib/IdentityValidableStub.spec.ts
+++ b/server/src/lib/IdentityValidableStub.spec.ts
@@ -1,7 +1,6 @@
import Sinon = require("sinon");
import { IdentityValidable } from "./IdentityValidable";
-import express = require("express");
import Bluebird = require("bluebird");
import { Identity } from "../../types/Identity";
@@ -13,6 +12,7 @@ export class IdentityValidableStub implements IdentityValidable {
preValidationResponseStub: Sinon.SinonStub;
postValidationResponseStub: Sinon.SinonStub;
mailSubjectStub: Sinon.SinonStub;
+ destinationPathStub: Sinon.SinonStub;
constructor() {
this.challengeStub = Sinon.stub();
@@ -24,6 +24,7 @@ export class IdentityValidableStub implements IdentityValidable {
this.postValidationResponseStub = Sinon.stub();
this.mailSubjectStub = Sinon.stub();
+ this.destinationPathStub = Sinon.stub();
}
challenge(): string {
@@ -49,4 +50,8 @@ export class IdentityValidableStub implements IdentityValidable {
mailSubject(): string {
return this.mailSubjectStub();
}
+
+ destinationPath(): string {
+ return this.destinationPathStub();
+ }
}
\ No newline at end of file
diff --git a/server/src/lib/Server.ts b/server/src/lib/Server.ts
index 4090f6294..1a5105789 100644
--- a/server/src/lib/Server.ts
+++ b/server/src/lib/Server.ts
@@ -1,11 +1,8 @@
import BluebirdPromise = require("bluebird");
-import ObjectPath = require("object-path");
import { Configuration } from "./configuration/schema/Configuration";
import { GlobalDependencies } from "../../types/Dependencies";
-import { UserDataStore } from "./storage/UserDataStore";
import { ConfigurationParser } from "./configuration/ConfigurationParser";
-import { SessionConfigurationBuilder } from "./configuration/SessionConfigurationBuilder";
import { GlobalLogger } from "./logging/GlobalLogger";
import { RequestLogger } from "./logging/RequestLogger";
import { ServerVariables } from "./ServerVariables";
@@ -13,7 +10,6 @@ import { ServerVariablesInitializer } from "./ServerVariablesInitializer";
import { Configurator } from "./web_server/Configurator";
import * as Express from "express";
-import * as Path from "path";
import * as http from "http";
function clone(obj: any) {
diff --git a/server/src/lib/ServerVariablesInitializer.ts b/server/src/lib/ServerVariablesInitializer.ts
index df79238cc..fcf146d08 100644
--- a/server/src/lib/ServerVariablesInitializer.ts
+++ b/server/src/lib/ServerVariablesInitializer.ts
@@ -1,29 +1,19 @@
-import winston = require("winston");
import BluebirdPromise = require("bluebird");
-import U2F = require("u2f");
import Nodemailer = require("nodemailer");
import { IRequestLogger } from "./logging/IRequestLogger";
-import { RequestLogger } from "./logging/RequestLogger";
import { TotpHandler } from "./authentication/totp/TotpHandler";
-import { ITotpHandler } from "./authentication/totp/ITotpHandler";
import { NotifierFactory } from "./notifiers/NotifierFactory";
import { MailSenderBuilder } from "./notifiers/MailSenderBuilder";
import { LdapUsersDatabase } from "./authentication/backends/ldap/LdapUsersDatabase";
import { ConnectorFactory } from "./authentication/backends/ldap/connector/ConnectorFactory";
-import { IUserDataStore } from "./storage/IUserDataStore";
import { UserDataStore } from "./storage/UserDataStore";
-import { INotifier } from "./notifiers/INotifier";
import { Regulator } from "./regulation/Regulator";
-import { IRegulator } from "./regulation/IRegulator";
import Configuration = require("./configuration/schema/Configuration");
import { CollectionFactoryFactory } from "./storage/CollectionFactoryFactory";
-import { ICollectionFactory } from "./storage/ICollectionFactory";
-import { MongoCollectionFactory } from "./storage/mongo/MongoCollectionFactory";
-import { IMongoClient } from "./connectors/mongo/IMongoClient";
import { GlobalDependencies } from "../../types/Dependencies";
import { ServerVariables } from "./ServerVariables";
diff --git a/server/src/lib/authentication/AuthenticationError.ts b/server/src/lib/authentication/AuthenticationError.ts
new file mode 100644
index 000000000..9285ac49c
--- /dev/null
+++ b/server/src/lib/authentication/AuthenticationError.ts
@@ -0,0 +1,11 @@
+
+
+// Error thrown when the authentication failed when checking
+// user/password.
+class AuthenticationError extends Error {
+ constructor(msg: string) {
+ super(msg);
+ }
+}
+
+export default AuthenticationError;
\ No newline at end of file
diff --git a/server/src/lib/authentication/Level.ts b/server/src/lib/authentication/Level.ts
index 57b6a2346..dad5c5d5a 100644
--- a/server/src/lib/authentication/Level.ts
+++ b/server/src/lib/authentication/Level.ts
@@ -1,5 +1,3 @@
-export enum Level {
- NOT_AUTHENTICATED = 0,
- ONE_FACTOR = 1,
- TWO_FACTOR = 2
-}
\ No newline at end of file
+import { default as Level } from "../../../../shared/AuthenticationLevel";
+
+export { Level };
diff --git a/server/src/lib/authentication/backends/file/FileUsersDatabase.ts b/server/src/lib/authentication/backends/file/FileUsersDatabase.ts
index cf822540c..32bbff856 100644
--- a/server/src/lib/authentication/backends/file/FileUsersDatabase.ts
+++ b/server/src/lib/authentication/backends/file/FileUsersDatabase.ts
@@ -8,6 +8,7 @@ import { GroupsAndEmails } from "../GroupsAndEmails";
import { IUsersDatabase } from "../IUsersDatabase";
import { HashGenerator } from "../../../utils/HashGenerator";
import { ReadWriteQueue } from "./ReadWriteQueue";
+import AuthenticationError from "../../AuthenticationError";
const loadAsync = Bluebird.promisify(Yaml.load);
@@ -80,7 +81,7 @@ export class FileUsersDatabase implements IUsersDatabase {
return HashGenerator.ssha512(password, rounds, salt)
.then((hash: string) => {
if (hash !== storedHash) {
- return Bluebird.reject(new Error("Wrong username/password."));
+ return Bluebird.reject(new AuthenticationError("Wrong username/password."));
}
return Bluebird.resolve();
});
diff --git a/server/src/lib/authentication/backends/ldap/LdapUsersDatabase.ts b/server/src/lib/authentication/backends/ldap/LdapUsersDatabase.ts
index edda62ec6..d41743279 100644
--- a/server/src/lib/authentication/backends/ldap/LdapUsersDatabase.ts
+++ b/server/src/lib/authentication/backends/ldap/LdapUsersDatabase.ts
@@ -5,6 +5,7 @@ import { LdapConfiguration } from "../../../configuration/schema/LdapConfigurati
import { ISession } from "./ISession";
import { GroupsAndEmails } from "../GroupsAndEmails";
import Exceptions = require("../../../Exceptions");
+import AuthenticationError from "../../AuthenticationError";
type SessionCallback = (session: ISession) => Bluebird;
@@ -58,7 +59,7 @@ export class LdapUsersDatabase implements IUsersDatabase {
.then(() => getInfo(session));
})
.catch((err) =>
- Bluebird.reject(new Exceptions.LdapError(err.message)));
+ Bluebird.reject(new AuthenticationError(err.message)));
}
getEmails(username: string): Bluebird {
diff --git a/server/src/lib/authentication/backends/ldap/Session.ts b/server/src/lib/authentication/backends/ldap/Session.ts
index 3f37b226f..d6312cca0 100644
--- a/server/src/lib/authentication/backends/ldap/Session.ts
+++ b/server/src/lib/authentication/backends/ldap/Session.ts
@@ -1,6 +1,5 @@
import BluebirdPromise = require("bluebird");
import exceptions = require("../../../Exceptions");
-import { EventEmitter } from "events";
import { ISession } from "./ISession";
import { LdapConfiguration } from "../../../configuration/schema/LdapConfiguration";
import { Winston } from "../../../../../types/Dependencies";
diff --git a/server/src/lib/authorization/Authorizer.ts b/server/src/lib/authorization/Authorizer.ts
index 889b7ec20..1d3995626 100644
--- a/server/src/lib/authorization/Authorizer.ts
+++ b/server/src/lib/authorization/Authorizer.ts
@@ -1,5 +1,5 @@
-import { ACLConfiguration, ACLPolicy, ACLRule } from "../configuration/schema/AclConfiguration";
+import { ACLConfiguration, ACLRule } from "../configuration/schema/AclConfiguration";
import { IAuthorizer } from "./IAuthorizer";
import { Winston } from "../../../types/Dependencies";
import { MultipleDomainMatcher } from "./MultipleDomainMatcher";
diff --git a/server/src/lib/notifiers/AbstractEmailNotifier.ts b/server/src/lib/notifiers/AbstractEmailNotifier.ts
index 198e4e5db..626f2b6ae 100644
--- a/server/src/lib/notifiers/AbstractEmailNotifier.ts
+++ b/server/src/lib/notifiers/AbstractEmailNotifier.ts
@@ -1,6 +1,5 @@
import { INotifier } from "../notifiers/INotifier";
-import { Identity } from "../../../types/Identity";
import Fs = require("fs");
import Path = require("path");
diff --git a/server/src/lib/notifiers/EmailNotifier.ts b/server/src/lib/notifiers/EmailNotifier.ts
index 4df7c861e..4ffd385d0 100644
--- a/server/src/lib/notifiers/EmailNotifier.ts
+++ b/server/src/lib/notifiers/EmailNotifier.ts
@@ -1,6 +1,3 @@
-
-import * as BluebirdPromise from "bluebird";
-
import { AbstractEmailNotifier } from "../notifiers/AbstractEmailNotifier";
import { EmailNotifierConfiguration } from "../configuration/schema/NotifierConfiguration";
import { IMailSender } from "./IMailSender";
diff --git a/server/src/lib/routes/error/401/get.spec.ts b/server/src/lib/routes/error/401/get.spec.ts
deleted file mode 100644
index 9fdac9c3c..000000000
--- a/server/src/lib/routes/error/401/get.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import Sinon = require("sinon");
-import Express = require("express");
-import Assert = require("assert");
-import Get401 from "./get";
-import { ServerVariables } from "../../../ServerVariables";
-import { ServerVariablesMockBuilder, ServerVariablesMock }
- from "../../../ServerVariablesMockBuilder.spec";
-
-describe("routes/error/401/get", function () {
- let vars: ServerVariables;
- let mocks: ServerVariablesMock;
- let req: any;
- let res: any;
- let renderSpy: Sinon.SinonSpy;
-
- beforeEach(function () {
- const s = ServerVariablesMockBuilder.build();
- vars = s.variables;
- mocks = s.mocks;
-
- renderSpy = Sinon.spy();
- req = {
- headers: {}
- };
- res = {
- render: renderSpy
- };
- });
-
- it("should set redirection url to the default redirection url", function () {
- vars.config.default_redirection_url = "http://default-redirection";
- return Get401(vars)(req, res as any)
- .then(function () {
- Assert(renderSpy.calledOnce);
- Assert(renderSpy.calledWithExactly("errors/401", {
- redirection_url: "http://default-redirection"
- }));
- });
- });
-
- it("should set redirection url to the referer", function () {
- req.headers["referer"] = "http://redirection";
- return Get401(vars)(req, res as any)
- .then(function () {
- Assert(renderSpy.calledOnce);
- Assert(renderSpy.calledWithExactly("errors/401", {
- redirection_url: "http://redirection"
- }));
- });
- });
-
- it("should render without redirecting the user", function () {
- return Get401(vars)(req, res as any)
- .then(function () {
- Assert(renderSpy.calledOnce);
- Assert(renderSpy.calledWithExactly("errors/401", {
- redirection_url: undefined
- }));
- });
- });
-});
\ No newline at end of file
diff --git a/server/src/lib/routes/error/401/get.ts b/server/src/lib/routes/error/401/get.ts
deleted file mode 100644
index ca4a3963d..000000000
--- a/server/src/lib/routes/error/401/get.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-import express = require("express");
-import redirector from "../redirector";
-import { ServerVariables } from "../../../ServerVariables";
-
-export default function (vars: ServerVariables) {
- return function (req: express.Request, res: express.Response): BluebirdPromise {
- const redirectionUrl = redirector(req, vars);
- res.render("errors/401", {
- redirection_url: redirectionUrl
- });
- return BluebirdPromise.resolve();
- };
-}
diff --git a/server/src/lib/routes/error/403/get.spec.ts b/server/src/lib/routes/error/403/get.spec.ts
deleted file mode 100644
index 22eb84853..000000000
--- a/server/src/lib/routes/error/403/get.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import Sinon = require("sinon");
-import Express = require("express");
-import Assert = require("assert");
-import Get403 from "./get";
-import { ServerVariables } from "../../../ServerVariables";
-import { ServerVariablesMockBuilder, ServerVariablesMock }
- from "../../../ServerVariablesMockBuilder.spec";
-
-describe("routes/error/403/get", function () {
- let vars: ServerVariables;
- let mocks: ServerVariablesMock;
- let req: any;
- let res: any;
- let renderSpy: Sinon.SinonSpy;
-
- beforeEach(function () {
- const s = ServerVariablesMockBuilder.build();
- vars = s.variables;
- mocks = s.mocks;
-
- renderSpy = Sinon.spy();
- req = {
- headers: {}
- };
- res = {
- render: renderSpy
- };
- });
-
- it("should set redirection url to the default redirection url", function () {
- vars.config.default_redirection_url = "http://default-redirection";
- return Get403(vars)(req, res as any)
- .then(function () {
- Assert(renderSpy.calledOnce);
- Assert(renderSpy.calledWithExactly("errors/403", {
- redirection_url: "http://default-redirection"
- }));
- });
- });
-
- it("should set redirection url to the referer", function () {
- req.headers["referer"] = "http://redirection";
- return Get403(vars)(req, res as any)
- .then(function () {
- Assert(renderSpy.calledOnce);
- Assert(renderSpy.calledWithExactly("errors/403", {
- redirection_url: "http://redirection"
- }));
- });
- });
-
- it("should render without redirecting the user", function () {
- return Get403(vars)(req, res as any)
- .then(function () {
- Assert(renderSpy.calledOnce);
- Assert(renderSpy.calledWithExactly("errors/403", {
- redirection_url: undefined
- }));
- });
- });
-});
\ No newline at end of file
diff --git a/server/src/lib/routes/error/403/get.ts b/server/src/lib/routes/error/403/get.ts
deleted file mode 100644
index 3ab0319e5..000000000
--- a/server/src/lib/routes/error/403/get.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-import express = require("express");
-import redirector from "../redirector";
-import { ServerVariables } from "../../../ServerVariables";
-
-export default function (vars: ServerVariables) {
- return function (req: express.Request, res: express.Response): BluebirdPromise {
- const redirectionUrl = redirector(req, vars);
- res.render("errors/403", {
- redirection_url: redirectionUrl
- });
- return BluebirdPromise.resolve();
- };
-}
\ No newline at end of file
diff --git a/server/src/lib/routes/error/404/get.spec.ts b/server/src/lib/routes/error/404/get.spec.ts
deleted file mode 100644
index 73e4e6cef..000000000
--- a/server/src/lib/routes/error/404/get.spec.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import Sinon = require("sinon");
-import Express = require("express");
-import Assert = require("assert");
-import Get404 from "./get";
-
-describe("routes/error/404/get", function () {
- it("should render the page", function () {
- const req = {} as Express.Request;
- const res = {
- render: Sinon.stub()
- };
-
- return Get404(req, res as any)
- .then(function () {
- Assert(res.render.calledOnce);
- Assert(res.render.calledWith("errors/404"));
- });
- });
-});
\ No newline at end of file
diff --git a/server/src/lib/routes/error/404/get.ts b/server/src/lib/routes/error/404/get.ts
deleted file mode 100644
index 6693b6fc8..000000000
--- a/server/src/lib/routes/error/404/get.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-import express = require("express");
-
-export default function (req: express.Request, res: express.Response): BluebirdPromise {
- res.render("errors/404");
- return BluebirdPromise.resolve();
-}
\ No newline at end of file
diff --git a/server/src/lib/routes/error/redirector.ts b/server/src/lib/routes/error/redirector.ts
deleted file mode 100644
index b1a3ccc11..000000000
--- a/server/src/lib/routes/error/redirector.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Express = require("express");
-import { ServerVariables } from "../../ServerVariables";
-
-export default function (req: Express.Request, vars: ServerVariables): string {
- let redirectionUrl: string;
-
- if (req.headers && req.headers["referer"])
- redirectionUrl = "" + req.headers["referer"];
- else if (vars.config.default_redirection_url)
- redirectionUrl = vars.config.default_redirection_url;
-
- return redirectionUrl;
-}
\ No newline at end of file
diff --git a/server/src/lib/routes/firstfactor/get.ts b/server/src/lib/routes/firstfactor/get.ts
deleted file mode 100644
index d94f656c8..000000000
--- a/server/src/lib/routes/firstfactor/get.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-
-import express = require("express");
-import Endpoints = require("../../../../../shared/api");
-import BluebirdPromise = require("bluebird");
-import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
-import Constants = require("../../../../../shared/constants");
-import Util = require("util");
-import { ServerVariables } from "../../ServerVariables";
-import { SafeRedirector } from "../../utils/SafeRedirection";
-import { Level } from "../../authentication/Level";
-
-function getRedirectParam(
- req: express.Request) {
- return req.query[Constants.REDIRECT_QUERY_PARAM] != "undefined"
- ? req.query[Constants.REDIRECT_QUERY_PARAM]
- : undefined;
-}
-
-function redirectToSecondFactorPage(
- req: express.Request,
- res: express.Response) {
-
- const redirectUrl = getRedirectParam(req);
- if (!redirectUrl)
- res.redirect(Endpoints.SECOND_FACTOR_GET);
- else
- res.redirect(
- Util.format("%s?%s=%s",
- Endpoints.SECOND_FACTOR_GET,
- Constants.REDIRECT_QUERY_PARAM,
- redirectUrl));
-}
-
-function redirectToService(
- req: express.Request,
- res: express.Response,
- redirector: SafeRedirector) {
- const redirectUrl = getRedirectParam(req);
- if (!redirectUrl) {
- res.redirect(Endpoints.LOGGED_IN);
- } else {
- redirector.redirectOrElse(res, redirectUrl, Endpoints.LOGGED_IN);
- }
-}
-
-function renderFirstFactor(
- res: express.Response) {
-
- res.render("firstfactor", {
- first_factor_post_endpoint: Endpoints.FIRST_FACTOR_POST,
- reset_password_request_endpoint: Endpoints.RESET_PASSWORD_REQUEST_GET
- });
-}
-
-export default function (
- vars: ServerVariables) {
-
- const redirector = new SafeRedirector(vars.config.session.domain);
- return function (req: express.Request, res: express.Response): BluebirdPromise {
- return new BluebirdPromise(function (resolve, reject) {
- const authSession = AuthenticationSessionHandler.get(req, vars.logger);
- if (authSession.authentication_level == Level.ONE_FACTOR) {
- redirectToSecondFactorPage(req, res);
- } else if (authSession.authentication_level == Level.TWO_FACTOR) {
- redirectToService(req, res, redirector);
- } else {
- renderFirstFactor(res);
- }
- resolve();
- });
- };
-}
diff --git a/server/src/lib/routes/firstfactor/post.spec.ts b/server/src/lib/routes/firstfactor/post.spec.ts
index e1d078cdd..71244e5ce 100644
--- a/server/src/lib/routes/firstfactor/post.spec.ts
+++ b/server/src/lib/routes/firstfactor/post.spec.ts
@@ -6,11 +6,10 @@ import FirstFactorPost = require("./post");
import exceptions = require("../../Exceptions");
import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
import { AuthenticationSession } from "../../../../types/AuthenticationSession";
-import Endpoints = require("../../../../../shared/api");
-import AuthenticationRegulatorMock = require("../../regulation/RegulatorStub.spec");
import ExpressMock = require("../../stubs/express.spec");
import { ServerVariablesMock, ServerVariablesMockBuilder } from "../../ServerVariablesMockBuilder.spec";
import { ServerVariables } from "../../ServerVariables";
+import AuthenticationError from "../../authentication/AuthenticationError";
describe("routes/firstfactor/post", function () {
let req: ExpressMock.RequestMock;
@@ -73,7 +72,7 @@ describe("routes/firstfactor/post", function () {
emails: emails,
groups: groups
}));
- req.body.keepMeLoggedIn = "true";
+ req.body.keepMeLoggedIn = true;
return FirstFactorPost.default(vars)(req as any, res as any);
});
@@ -108,14 +107,14 @@ describe("routes/firstfactor/post", function () {
it("should return error message when LDAP authenticator throws", function () {
mocks.usersDatabase.checkUserPasswordStub.withArgs("username", "password")
- .returns(BluebirdPromise.reject(new exceptions.LdapBindError("Bad credentials")));
+ .returns(BluebirdPromise.reject(new AuthenticationError("Bad credentials")));
return FirstFactorPost.default(vars)(req as any, res as any)
.then(function () {
Assert.equal(res.status.getCall(0).args[0], 200);
Assert.equal(mocks.regulator.markStub.getCall(0).args[0], "username");
Assert.deepEqual(res.send.getCall(0).args[0], {
- error: "Operation failed."
+ error: "Authentication failed. Please check your credentials."
});
});
});
@@ -127,7 +126,7 @@ describe("routes/firstfactor/post", function () {
.then(function () {
Assert.equal(res.status.getCall(0).args[0], 200);
Assert.deepEqual(res.send.getCall(0).args[0], {
- error: "Operation failed."
+ error: "Authentication failed. Please check your credentials."
});
});
});
diff --git a/server/src/lib/routes/firstfactor/post.ts b/server/src/lib/routes/firstfactor/post.ts
index 565681d6a..7f252e6c2 100644
--- a/server/src/lib/routes/firstfactor/post.ts
+++ b/server/src/lib/routes/firstfactor/post.ts
@@ -1,26 +1,26 @@
-
-import Exceptions = require("../../Exceptions");
+import * as ObjectPath from "object-path";
import BluebirdPromise = require("bluebird");
import express = require("express");
-import Endpoint = require("../../../../../shared/api");
import ErrorReplies = require("../../ErrorReplies");
import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
-import Constants = require("../../../../../shared/constants");
import UserMessages = require("../../../../../shared/UserMessages");
import { ServerVariables } from "../../ServerVariables";
import { AuthenticationSession } from "../../../../types/AuthenticationSession";
import { GroupsAndEmails } from "../../authentication/backends/GroupsAndEmails";
-import { Level as AuthenticationLevel } from "../../authentication/Level";
+import { Level } from "../../authentication/Level";
import { Level as AuthorizationLevel } from "../../authorization/Level";
-import { URLDecomposer } from "../../utils/URLDecomposer";
+import { BelongToDomain } from "../../../../../shared/BelongToDomain";
+import { URLDecomposer } from "../..//utils/URLDecomposer";
+import { Object } from "../../../lib/authorization/Object";
+import { Subject } from "../../../lib/authorization/Subject";
+import AuthenticationError from "../../../lib/authentication/AuthenticationError";
export default function (vars: ServerVariables) {
return function (req: express.Request, res: express.Response)
: BluebirdPromise {
const username: string = req.body.username;
const password: string = req.body.password;
- const keepMeLoggedIn: boolean = req.body.keepMeLoggedIn &&
- req.body.keepMeLoggedIn === "true";
+ const keepMeLoggedIn: boolean = req.body.keepMeLoggedIn;
let authSession: AuthenticationSession;
if (keepMeLoggedIn) {
@@ -48,20 +48,10 @@ export default function (vars: ServerVariables) {
JSON.stringify(groupsAndEmails));
authSession.userid = username;
authSession.keep_me_logged_in = keepMeLoggedIn;
- authSession.authentication_level = AuthenticationLevel.ONE_FACTOR;
- const redirectUrl: string = req.query[Constants.REDIRECT_QUERY_PARAM] !== "undefined"
- // Fuck, don't know why it is a string!
- ? req.query[Constants.REDIRECT_QUERY_PARAM]
- : "";
+ authSession.authentication_level = Level.ONE_FACTOR;
const emails: string[] = groupsAndEmails.emails;
const groups: string[] = groupsAndEmails.groups;
- const decomposition = URLDecomposer.fromUrl(redirectUrl);
- const authorizationLevel = (decomposition)
- ? vars.authorizer.authorization(
- {domain: decomposition.domain, resource: decomposition.path},
- {user: username, groups: groups})
- : AuthorizationLevel.TWO_FACTOR;
if (emails.length > 0)
authSession.email = emails[0];
@@ -69,33 +59,45 @@ export default function (vars: ServerVariables) {
vars.logger.debug(req, "Mark successful authentication to regulator.");
vars.regulator.mark(username, true);
+ })
+ .then(function() {
+ const targetUrl = ObjectPath.get(req, "headers.x-target-url", undefined);
- if (authorizationLevel <= AuthorizationLevel.ONE_FACTOR) {
- let newRedirectionUrl: string = redirectUrl;
- if (!newRedirectionUrl)
- newRedirectionUrl = Endpoint.LOGGED_IN;
- res.send({
- redirect: newRedirectionUrl
- });
- vars.logger.debug(req, "Redirect to '%s'", redirectUrl);
+ if (!targetUrl) {
+ res.status(204);
+ res.send();
+ return BluebirdPromise.resolve();
}
- else {
- let newRedirectUrl = Endpoint.SECOND_FACTOR_GET;
- if (redirectUrl) {
- newRedirectUrl += "?" + Constants.REDIRECT_QUERY_PARAM + "="
- + redirectUrl;
+
+ if (BelongToDomain(targetUrl, vars.config.session.domain)) {
+ const resource = URLDecomposer.fromUrl(targetUrl);
+ const resObject: Object = {
+ domain: resource.domain,
+ resource: resource.path,
+ };
+
+ const subject: Subject = {
+ user: authSession.userid,
+ groups: authSession.groups
+ };
+
+ const authorizationLevel = vars.authorizer.authorization(resObject, subject);
+ if (authorizationLevel <= AuthorizationLevel.ONE_FACTOR) {
+ res.json({
+ redirect: targetUrl
+ });
+ return BluebirdPromise.resolve();
}
- vars.logger.debug(req, "Redirect to '%s'", newRedirectUrl);
- res.send({
- redirect: newRedirectUrl
- });
}
+
+ res.status(204);
+ res.send();
return BluebirdPromise.resolve();
})
- .catch(Exceptions.LdapBindError, function (err: Error) {
+ .catch(AuthenticationError, function (err: Error) {
vars.regulator.mark(username, false);
- return ErrorReplies.replyWithError200(req, res, vars.logger, UserMessages.OPERATION_FAILED)(err);
+ return ErrorReplies.replyWithError200(req, res, vars.logger, UserMessages.AUTHENTICATION_FAILED)(err);
})
- .catch(ErrorReplies.replyWithError200(req, res, vars.logger, UserMessages.OPERATION_FAILED));
+ .catch(ErrorReplies.replyWithError200(req, res, vars.logger, UserMessages.AUTHENTICATION_FAILED));
};
-}
\ No newline at end of file
+}
diff --git a/server/src/lib/routes/loggedin/get.ts b/server/src/lib/routes/loggedin/get.ts
deleted file mode 100644
index 283a041b1..000000000
--- a/server/src/lib/routes/loggedin/get.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import Express = require("express");
-import Endpoints = require("../../../../../shared/api");
-import BluebirdPromise = require("bluebird");
-import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
-import { ServerVariables } from "../../ServerVariables";
-import ErrorReplies = require("../../ErrorReplies");
-
-export default function (vars: ServerVariables) {
- function handler(req: Express.Request, res: Express.Response): BluebirdPromise {
- return new BluebirdPromise(function (resolve, reject) {
- const authSession = AuthenticationSessionHandler.get(req, vars.logger);
- res.render("already-logged-in", {
- logout_endpoint: Endpoints.LOGOUT_GET,
- username: authSession.userid,
- redirection_url: vars.config.default_redirection_url
- });
- resolve();
- })
- .catch(ErrorReplies.replyWithError401(req, res, vars.logger));
- }
-
- return handler;
-}
diff --git a/server/src/lib/routes/logout/get.ts b/server/src/lib/routes/logout/post.ts
similarity index 100%
rename from server/src/lib/routes/logout/get.ts
rename to server/src/lib/routes/logout/post.ts
diff --git a/server/src/lib/routes/password-reset/identity/PasswordResetHandler.spec.ts b/server/src/lib/routes/password-reset/identity/PasswordResetHandler.spec.ts
index ac6a41754..cd3a5775f 100644
--- a/server/src/lib/routes/password-reset/identity/PasswordResetHandler.spec.ts
+++ b/server/src/lib/routes/password-reset/identity/PasswordResetHandler.spec.ts
@@ -1,10 +1,6 @@
import PasswordResetHandler
from "./PasswordResetHandler";
-import { UserDataStore } from "../../../storage/UserDataStore";
-import Sinon = require("sinon");
-import winston = require("winston");
-import assert = require("assert");
import BluebirdPromise = require("bluebird");
import ExpressMock = require("../../../stubs/express.spec");
import { ServerVariablesMock, ServerVariablesMockBuilder }
@@ -13,15 +9,14 @@ import { ServerVariables } from "../../../ServerVariables";
describe("routes/password-reset/identity/PasswordResetHandler", function () {
let req: ExpressMock.RequestMock;
- let res: ExpressMock.ResponseMock;
let mocks: ServerVariablesMock;
let vars: ServerVariables;
beforeEach(function () {
req = {
originalUrl: "/non-api/xxx",
- query: {
- userid: "user"
+ body: {
+ username: "user"
},
session: {
auth: {
@@ -36,10 +31,6 @@ describe("routes/password-reset/identity/PasswordResetHandler", function () {
}
};
- const options = {
- inMemoryOnly: true
- };
-
const s = ServerVariablesMockBuilder.build();
mocks = s.mocks;
vars = s.variables;
@@ -52,12 +43,11 @@ describe("routes/password-reset/identity/PasswordResetHandler", function () {
.returns(BluebirdPromise.resolve({}));
mocks.userDataStore.consumeIdentityValidationTokenStub
.returns(BluebirdPromise.resolve({}));
- res = ExpressMock.ResponseMock();
});
describe("test reset password identity pre check", () => {
it("should fail when no userid is provided", function () {
- req.query.userid = undefined;
+ req.body.username = undefined;
const handler = new PasswordResetHandler(vars.logger,
vars.usersDatabase);
return handler.preValidationInit(req as any)
diff --git a/server/src/lib/routes/password-reset/identity/PasswordResetHandler.ts b/server/src/lib/routes/password-reset/identity/PasswordResetHandler.ts
index 42ae92cda..c32815755 100644
--- a/server/src/lib/routes/password-reset/identity/PasswordResetHandler.ts
+++ b/server/src/lib/routes/password-reset/identity/PasswordResetHandler.ts
@@ -5,13 +5,10 @@ import objectPath = require("object-path");
import exceptions = require("../../../Exceptions");
import { Identity } from "../../../../../types/Identity";
import { IdentityValidable } from "../../../IdentityValidable";
-import { PRE_VALIDATION_TEMPLATE } from "../../../IdentityCheckPreValidationTemplate";
import Constants = require("../constants");
import { IRequestLogger } from "../../../logging/IRequestLogger";
import { IUsersDatabase } from "../../../authentication/backends/IUsersDatabase";
-export const TEMPLATE_NAME = "password-reset-form";
-
export default class PasswordResetHandler implements IdentityValidable {
private logger: IRequestLogger;
private usersDatabase: IUsersDatabase;
@@ -28,14 +25,14 @@ export default class PasswordResetHandler implements IdentityValidable {
preValidationInit(req: express.Request): BluebirdPromise {
const that = this;
const userid: string =
- objectPath.get(req, "query.userid");
+ objectPath.get(req, "body.username");
return BluebirdPromise.resolve()
.then(function () {
that.logger.debug(req, "User '%s' requested a password reset", userid);
- if (!userid)
+ if (!userid) {
return BluebirdPromise.reject(
new exceptions.AccessDeniedError("No user id provided"));
-
+ }
return that.usersDatabase.getEmails(userid);
})
.then(function (emails: string[]) {
@@ -52,7 +49,8 @@ export default class PasswordResetHandler implements IdentityValidable {
}
preValidationResponse(req: express.Request, res: express.Response) {
- res.render(PRE_VALIDATION_TEMPLATE);
+ res.status(204);
+ res.send();
}
postValidationInit(req: express.Request) {
@@ -60,10 +58,15 @@ export default class PasswordResetHandler implements IdentityValidable {
}
postValidationResponse(req: express.Request, res: express.Response) {
- res.render(TEMPLATE_NAME);
+ res.status(204);
+ res.send();
}
mailSubject(): string {
return "Reset your password";
}
+
+ destinationPath(): string {
+ return "/reset-password";
+ }
}
\ No newline at end of file
diff --git a/server/src/lib/routes/password-reset/request/get.ts b/server/src/lib/routes/password-reset/request/get.ts
deleted file mode 100644
index 8f3ae2b4b..000000000
--- a/server/src/lib/routes/password-reset/request/get.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-
-import express = require("express");
-import BluebirdPromise = require("bluebird");
-import objectPath = require("object-path");
-import exceptions = require("../../../Exceptions");
-
-import Constants = require("./../constants");
-
-const TEMPLATE_NAME = "password-reset-request";
-
-export default function (req: express.Request, res: express.Response) {
- res.render(TEMPLATE_NAME);
-}
\ No newline at end of file
diff --git a/server/src/lib/routes/redirect/post.ts b/server/src/lib/routes/redirect/post.ts
new file mode 100644
index 000000000..ab001a9b6
--- /dev/null
+++ b/server/src/lib/routes/redirect/post.ts
@@ -0,0 +1,31 @@
+import * as Express from "express";
+import { ServerVariables } from "../../ServerVariables";
+import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
+import { Level } from "../../authentication/Level";
+import * as URLParse from "url-parse";
+
+export default function (vars: ServerVariables) {
+ return function (req: Express.Request, res: Express.Response) {
+ if (!req.body.url) {
+ res.status(400);
+ vars.logger.error(req, "Provide url for verification to be done.");
+ return;
+ }
+
+ const authSession = AuthenticationSessionHandler.get(req, vars.logger);
+ const url = new URLParse(req.body.url);
+
+ const urlInDomain = url.hostname.endsWith(vars.config.session.domain);
+ vars.logger.debug(req, "Check domain %s is in url %s.", vars.config.session.domain, url.hostname);
+ const sufficientPermissions = authSession.authentication_level >= Level.TWO_FACTOR;
+
+ vars.logger.debug(req, "Check that protocol %s is HTTPS.", url.protocol);
+ const protocolIsHttps = url.protocol === "https:";
+
+ if (sufficientPermissions && urlInDomain && protocolIsHttps) {
+ res.send("OK");
+ return;
+ }
+ res.send("NOK");
+ };
+}
diff --git a/server/src/lib/routes/secondfactor/get.spec.ts b/server/src/lib/routes/secondfactor/get.spec.ts
deleted file mode 100644
index 6c77e1f69..000000000
--- a/server/src/lib/routes/secondfactor/get.spec.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import SecondFactorGet from "./get";
-import { ServerVariablesMockBuilder, ServerVariablesMock }
- from "../../ServerVariablesMockBuilder.spec";
-import { ServerVariables } from "../../ServerVariables";
-import Sinon = require("sinon");
-import ExpressMock = require("../../stubs/express.spec");
-import Assert = require("assert");
-import Endpoints = require("../../../../../shared/api");
-import BluebirdPromise = require("bluebird");
-
-describe("routes/secondfactor/get", function () {
- let mocks: ServerVariablesMock;
- let vars: ServerVariables;
- let req: ExpressMock.RequestMock;
- let res: ExpressMock.ResponseMock;
-
- beforeEach(function () {
- const s = ServerVariablesMockBuilder.build();
- mocks = s.mocks;
- vars = s.variables;
-
- req = ExpressMock.RequestMock();
- res = ExpressMock.ResponseMock();
-
- req.session = {
- auth: {
- userid: "user",
- first_factor: true,
- second_factor: false
- }
- };
- });
-
- describe("test rendering", function () {
- it("should render second factor page", function () {
- req.session.auth.second_factor = false;
- return SecondFactorGet(vars)(req as any, res as any)
- .then(function () {
- Assert(res.render.calledWith("secondfactor"));
- return BluebirdPromise.resolve();
- });
- });
- });
-});
\ No newline at end of file
diff --git a/server/src/lib/routes/secondfactor/get.ts b/server/src/lib/routes/secondfactor/get.ts
deleted file mode 100644
index 9f6deb4c6..000000000
--- a/server/src/lib/routes/secondfactor/get.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-
-import Express = require("express");
-import Endpoints = require("../../../../../shared/api");
-import BluebirdPromise = require("bluebird");
-import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
-import { ServerVariables } from "../../ServerVariables";
-
-const TEMPLATE_NAME = "secondfactor";
-
-export default function (vars: ServerVariables) {
- function handler(req: Express.Request, res: Express.Response)
- : BluebirdPromise {
-
- return new BluebirdPromise(function (resolve, reject) {
- const authSession = AuthenticationSessionHandler.get(req, vars.logger);
-
- res.render(TEMPLATE_NAME, {
- username: authSession.userid,
- totp_identity_start_endpoint:
- Endpoints.SECOND_FACTOR_TOTP_IDENTITY_START_GET,
- u2f_identity_start_endpoint:
- Endpoints.SECOND_FACTOR_U2F_IDENTITY_START_GET
- });
- resolve();
- });
- }
- return handler;
-}
diff --git a/server/src/lib/routes/secondfactor/redirect.ts b/server/src/lib/routes/secondfactor/redirect.ts
index 5d84d9ebf..75132f960 100644
--- a/server/src/lib/routes/secondfactor/redirect.ts
+++ b/server/src/lib/routes/secondfactor/redirect.ts
@@ -1,13 +1,10 @@
import express = require("express");
-import objectPath = require("object-path");
-import Endpoints = require("../../../../../shared/api");
import { ServerVariables } from "../../ServerVariables";
import BluebirdPromise = require("bluebird");
import ErrorReplies = require("../../ErrorReplies");
import UserMessages = require("../../../../../shared/UserMessages");
import { RedirectionMessage } from "../../../../../shared/RedirectionMessage";
-import Constants = require("../../../../../shared/constants");
export default function (vars: ServerVariables) {
return function (req: express.Request, res: express.Response)
diff --git a/server/src/lib/routes/secondfactor/totp/identity/RegistrationHandler.ts b/server/src/lib/routes/secondfactor/totp/identity/RegistrationHandler.ts
index b39b6d045..e7d67146f 100644
--- a/server/src/lib/routes/secondfactor/totp/identity/RegistrationHandler.ts
+++ b/server/src/lib/routes/secondfactor/totp/identity/RegistrationHandler.ts
@@ -1,13 +1,10 @@
import express = require("express");
import BluebirdPromise = require("bluebird");
-import objectPath = require("object-path");
import { Identity } from "../../../../../../types/Identity";
import { IdentityValidable } from "../../../../IdentityValidable";
-import { PRE_VALIDATION_TEMPLATE } from "../../../../IdentityCheckPreValidationTemplate";
import Constants = require("../constants");
-import Endpoints = require("../../../../../../../shared/api");
import ErrorReplies = require("../../../../ErrorReplies");
import { AuthenticationSessionHandler } from "../../../../AuthenticationSessionHandler";
import UserMessages = require("../../../../../../../shared/UserMessages");
@@ -66,7 +63,8 @@ export default class RegistrationHandler implements IdentityValidable {
}
preValidationResponse(req: express.Request, res: express.Response) {
- res.render(PRE_VALIDATION_TEMPLATE);
+ res.status(204);
+ res.send();
}
postValidationInit(req: express.Request) {
@@ -97,10 +95,9 @@ export default class RegistrationHandler implements IdentityValidable {
.then(function () {
AuthenticationSessionHandler.reset(req);
- res.render(Constants.TEMPLATE_NAME, {
+ res.json({
base32_secret: secret.base32,
otpauth_url: secret.otpauth_url,
- login_endpoint: Endpoints.FIRST_FACTOR_GET
});
})
.catch(ErrorReplies.replyWithError200(req, res, that.logger, UserMessages.OPERATION_FAILED));
@@ -109,4 +106,8 @@ export default class RegistrationHandler implements IdentityValidable {
mailSubject(): string {
return "Set up Authelia's one-time password";
}
+
+ destinationPath(): string {
+ return "/one-time-password-registration";
+ }
}
\ No newline at end of file
diff --git a/server/src/lib/routes/secondfactor/totp/sign/post.spec.ts b/server/src/lib/routes/secondfactor/totp/sign/post.spec.ts
index 70a20d39d..d0c29b70b 100644
--- a/server/src/lib/routes/secondfactor/totp/sign/post.spec.ts
+++ b/server/src/lib/routes/secondfactor/totp/sign/post.spec.ts
@@ -67,7 +67,7 @@ describe("routes/secondfactor/totp/sign/post", function () {
Assert.notEqual(authSession.authentication_level, Level.TWO_FACTOR);
Assert.equal(res.status.getCall(0).args[0], 200);
Assert.deepEqual(res.send.getCall(0).args[0], {
- error: "Operation failed."
+ error: "Authentication failed. Have you already registered your secret?"
});
return BluebirdPromise.resolve();
});
diff --git a/server/src/lib/routes/secondfactor/totp/sign/post.ts b/server/src/lib/routes/secondfactor/totp/sign/post.ts
index 34a276d12..0f3797405 100644
--- a/server/src/lib/routes/secondfactor/totp/sign/post.ts
+++ b/server/src/lib/routes/secondfactor/totp/sign/post.ts
@@ -2,7 +2,6 @@ import Bluebird = require("bluebird");
import Express = require("express");
import { TOTPSecretDocument } from "../../../../storage/TOTPSecretDocument";
-import Endpoints = require("../../../../../../../shared/api");
import Redirect from "../../redirect";
import ErrorReplies = require("../../../../ErrorReplies");
import { AuthenticationSessionHandler } from "../../../../AuthenticationSessionHandler";
@@ -11,8 +10,6 @@ import UserMessages = require("../../../../../../../shared/UserMessages");
import { ServerVariables } from "../../../../ServerVariables";
import { Level } from "../../../../authentication/Level";
-const UNAUTHORIZED_MESSAGE = "Unauthorized access";
-
export default function (vars: ServerVariables) {
function handler(req: Express.Request, res: Express.Response): Bluebird {
let authSession: AuthenticationSession;
@@ -27,8 +24,9 @@ export default function (vars: ServerVariables) {
return vars.userDataStore.retrieveTOTPSecret(authSession.userid);
})
.then(function (doc: TOTPSecretDocument) {
- if (!vars.totpHandler.validate(token, doc.secret.base32))
+ if (!vars.totpHandler.validate(token, doc.secret.base32)) {
return Bluebird.reject(new Error("Invalid TOTP token."));
+ }
vars.logger.debug(req, "TOTP validation succeeded.");
authSession.authentication_level = Level.TWO_FACTOR;
@@ -36,7 +34,7 @@ export default function (vars: ServerVariables) {
return Bluebird.resolve();
})
.catch(ErrorReplies.replyWithError200(req, res, vars.logger,
- UserMessages.OPERATION_FAILED));
+ UserMessages.AUTHENTICATION_TOTP_FAILED));
}
return handler;
}
diff --git a/server/src/lib/routes/secondfactor/u2f/identity/RegistrationHandler.ts b/server/src/lib/routes/secondfactor/u2f/identity/RegistrationHandler.ts
index bc4713c77..c790832b8 100644
--- a/server/src/lib/routes/secondfactor/u2f/identity/RegistrationHandler.ts
+++ b/server/src/lib/routes/secondfactor/u2f/identity/RegistrationHandler.ts
@@ -1,11 +1,9 @@
import BluebirdPromise = require("bluebird");
import express = require("express");
-import objectPath = require("object-path");
import { IdentityValidable } from "../../../../IdentityValidable";
import { Identity } from "../../../../../../types/Identity";
-import { PRE_VALIDATION_TEMPLATE } from "../../../../IdentityCheckPreValidationTemplate";
import FirstFactorValidator = require("../../../../FirstFactorValidator");
import { AuthenticationSessionHandler } from "../../../../AuthenticationSessionHandler";
import { IRequestLogger } from "../../../../logging/IRequestLogger";
@@ -13,8 +11,6 @@ import { IRequestLogger } from "../../../../logging/IRequestLogger";
const CHALLENGE = "u2f-register";
const MAIL_SUBJECT = "Register your security key with Authelia";
-const POST_VALIDATION_TEMPLATE_NAME = "u2f-register";
-
export default class RegistrationHandler implements IdentityValidable {
private logger: IRequestLogger;
@@ -55,7 +51,8 @@ export default class RegistrationHandler implements IdentityValidable {
}
preValidationResponse(req: express.Request, res: express.Response) {
- res.render(PRE_VALIDATION_TEMPLATE);
+ res.status(204);
+ res.send();
}
postValidationInit(req: express.Request) {
@@ -63,11 +60,16 @@ export default class RegistrationHandler implements IdentityValidable {
}
postValidationResponse(req: express.Request, res: express.Response) {
- res.render(POST_VALIDATION_TEMPLATE_NAME);
+ res.status(204);
+ res.send();
}
mailSubject(): string {
return MAIL_SUBJECT;
}
+
+ destinationPath(): string {
+ return "/security-key-registration";
+ }
}
diff --git a/server/src/lib/routes/secondfactor/u2f/register/post.ts b/server/src/lib/routes/secondfactor/u2f/register/post.ts
index 7296ccbe5..c7ac656df 100644
--- a/server/src/lib/routes/secondfactor/u2f/register/post.ts
+++ b/server/src/lib/routes/secondfactor/u2f/register/post.ts
@@ -1,5 +1,3 @@
-
-import { UserDataStore } from "../../../../storage/UserDataStore";
import objectPath = require("object-path");
import u2f_common = require("../U2FCommon");
import BluebirdPromise = require("bluebird");
diff --git a/server/src/lib/routes/secondfactor/u2f/register_request/get.spec.ts b/server/src/lib/routes/secondfactor/u2f/register_request/get.spec.ts
index a207c9109..00d5ae5e3 100644
--- a/server/src/lib/routes/secondfactor/u2f/register_request/get.spec.ts
+++ b/server/src/lib/routes/secondfactor/u2f/register_request/get.spec.ts
@@ -36,10 +36,6 @@ describe("routes/secondfactor/u2f/register_request/get", function () {
mocks = s.mocks;
vars = s.variables;
- const options = {
- inMemoryOnly: true
- };
-
mocks.userDataStore.saveU2FRegistrationStub.returns(BluebirdPromise.resolve({}));
mocks.userDataStore.retrieveU2FRegistrationStub.returns(BluebirdPromise.resolve({}));
@@ -63,7 +59,6 @@ describe("routes/secondfactor/u2f/register_request/get", function () {
it("should return internal error on registration request", function () {
res.send = sinon.spy();
- const user_key_container = {};
mocks.u2f.requestStub.returns(BluebirdPromise.reject("Internal error"));
return U2FRegisterRequestGet.default(vars)(req as any, res as any)
.then(function () {
@@ -78,7 +73,10 @@ describe("routes/secondfactor/u2f/register_request/get", function () {
req.session.auth.identity_check = undefined;
return U2FRegisterRequestGet.default(vars)(req as any, res as any)
.then(function () {
- Assert.equal(403, res.status.getCall(0).args[0]);
+ Assert.equal(200, res.status.getCall(0).args[0]);
+ Assert.deepEqual(res.send.getCall(0).args[0], {
+ error: "Operation failed."
+ });
});
});
});
diff --git a/server/src/lib/routes/secondfactor/u2f/register_request/get.ts b/server/src/lib/routes/secondfactor/u2f/register_request/get.ts
index f611af933..ecac24f4a 100644
--- a/server/src/lib/routes/secondfactor/u2f/register_request/get.ts
+++ b/server/src/lib/routes/secondfactor/u2f/register_request/get.ts
@@ -1,7 +1,4 @@
-import { UserDataStore } from "../../../../storage/UserDataStore";
-
-import objectPath = require("object-path");
import u2f_common = require("../U2FCommon");
import BluebirdPromise = require("bluebird");
import express = require("express");
@@ -21,8 +18,6 @@ export default function (vars: ServerVariables) {
authSession = AuthenticationSessionHandler.get(req, vars.logger);
if (!authSession.identity_check
|| authSession.identity_check.challenge != "u2f-register") {
- res.status(403);
- res.send();
return reject(new Error("Bad challenge."));
}
diff --git a/server/src/lib/routes/secondfactor/u2f/sign/post.spec.ts b/server/src/lib/routes/secondfactor/u2f/sign/post.spec.ts
index 9b137e66d..3473bf3eb 100644
--- a/server/src/lib/routes/secondfactor/u2f/sign/post.spec.ts
+++ b/server/src/lib/routes/secondfactor/u2f/sign/post.spec.ts
@@ -4,12 +4,9 @@ import BluebirdPromise = require("bluebird");
import Assert = require("assert");
import U2FSignPost = require("./post");
import { ServerVariables } from "../../../../ServerVariables";
-import winston = require("winston");
-
+import UserMessages = require("../../../../../../../shared/UserMessages");
import { ServerVariablesMockBuilder, ServerVariablesMock } from "../../../../ServerVariablesMockBuilder.spec";
import ExpressMock = require("../../../../stubs/express.spec");
-import U2FMock = require("../../../../stubs/u2f.spec");
-import U2f = require("u2f");
import { Level } from "../../../../authentication/Level";
describe("routes/secondfactor/u2f/sign/post", function () {
@@ -40,10 +37,6 @@ describe("routes/secondfactor/u2f/sign/post", function () {
req.headers = {};
req.headers.host = "localhost";
- const options = {
- inMemoryOnly: true
- };
-
res = ExpressMock.ResponseMock();
res.send = sinon.spy();
res.json = sinon.spy();
@@ -94,7 +87,7 @@ describe("routes/secondfactor/u2f/sign/post", function () {
.then(function () {
Assert.equal(res.status.getCall(0).args[0], 200);
Assert.deepEqual(res.send.getCall(0).args[0],
- { error: "Operation failed." });
+ { error: UserMessages.OPERATION_FAILED });
});
});
});
diff --git a/server/src/lib/routes/secondfactor/u2f/sign/post.ts b/server/src/lib/routes/secondfactor/u2f/sign/post.ts
index 7ee711c2c..69eda0a39 100644
--- a/server/src/lib/routes/secondfactor/u2f/sign/post.ts
+++ b/server/src/lib/routes/secondfactor/u2f/sign/post.ts
@@ -1,13 +1,9 @@
-
import objectPath = require("object-path");
import u2f_common = require("../U2FCommon");
import BluebirdPromise = require("bluebird");
import express = require("express");
-import { UserDataStore } from "../../../../storage/UserDataStore";
import { U2FRegistrationDocument } from "../../../../storage/U2FRegistrationDocument";
-import { Winston } from "../../../../../../types/Dependencies";
import U2f = require("u2f");
-import exceptions = require("../../../../Exceptions");
import redirect from "../../redirect";
import ErrorReplies = require("../../../../ErrorReplies");
import { ServerVariables } from "../../../../ServerVariables";
diff --git a/server/src/lib/routes/state/get.ts b/server/src/lib/routes/state/get.ts
new file mode 100644
index 000000000..5c3fce6df
--- /dev/null
+++ b/server/src/lib/routes/state/get.ts
@@ -0,0 +1,18 @@
+import * as Express from "express";
+import * as Bluebird from "bluebird";
+import { ServerVariables } from "../../ServerVariables";
+import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
+
+export default function (vars: ServerVariables) {
+ return function (req: Express.Request, res: Express.Response): Bluebird {
+ return new Bluebird(function (resolve, reject) {
+ const authSession = AuthenticationSessionHandler.get(req, vars.logger);
+ res.json({
+ username: authSession.userid,
+ authentication_level: authSession.authentication_level,
+ default_redirection_url: vars.config.default_redirection_url,
+ });
+ resolve();
+ });
+ };
+}
diff --git a/server/src/lib/routes/verify/access_control.ts b/server/src/lib/routes/verify/access_control.ts
index 136239aeb..cbf97ab38 100644
--- a/server/src/lib/routes/verify/access_control.ts
+++ b/server/src/lib/routes/verify/access_control.ts
@@ -6,7 +6,6 @@ import Exceptions = require("../../Exceptions");
import { Level as AuthorizationLevel } from "../../authorization/Level";
import { Level as AuthenticationLevel } from "../../authentication/Level";
-import { AuthenticationSessionHandler } from "../../AuthenticationSessionHandler";
import { ServerVariables } from "../../ServerVariables";
function isAuthorized(
diff --git a/server/src/lib/routes/verify/get.ts b/server/src/lib/routes/verify/get.ts
index f73861696..e5fe87fc5 100644
--- a/server/src/lib/routes/verify/get.ts
+++ b/server/src/lib/routes/verify/get.ts
@@ -78,6 +78,8 @@ export default function (vars: ServerVariables) {
ErrorReplies.replyWithError401(req, res, vars.logger))
// The user is not yet authenticated -> 401
.catch((err) => {
+ // This redirect parameter is used in Kubernetes to annotate the ingress with
+ // the url to the authentication portal.
const redirectUrl = getRedirectParam(req);
if (redirectUrl) {
ErrorReplies.redirectTo(redirectUrl, req, res, vars.logger)(err);
diff --git a/server/src/lib/routes/verify/get_session_cookie.ts b/server/src/lib/routes/verify/get_session_cookie.ts
index 070344812..f703b9441 100644
--- a/server/src/lib/routes/verify/get_session_cookie.ts
+++ b/server/src/lib/routes/verify/get_session_cookie.ts
@@ -56,8 +56,6 @@ export default function (req: Express.Request, res: Express.Response,
const originalUrl = ObjectPath.get(
req, "headers.x-original-url");
- const originalUri =
- ObjectPath.get(req, "headers.x-original-uri");
const d = URLDecomposer.fromUrl(originalUrl);
vars.logger.debug(req, "domain=%s, path=%s, user=%s, groups=%s", d.domain,
diff --git a/server/src/lib/utils/HashGenerator.ts b/server/src/lib/utils/HashGenerator.ts
index e67de32b7..a88a21e48 100644
--- a/server/src/lib/utils/HashGenerator.ts
+++ b/server/src/lib/utils/HashGenerator.ts
@@ -8,7 +8,6 @@ export class HashGenerator {
password: string,
rounds: number = 500000,
salt?: string): BluebirdPromise {
- const saltSize = 16;
// $6 means SHA512
const _salt = Util.format("$6$rounds=%d$%s", rounds,
(salt) ? salt : RandomString.generate(16));
diff --git a/server/src/lib/utils/SafeRedirection.ts b/server/src/lib/utils/SafeRedirection.ts
index 9e6a32e0c..0a2e70488 100644
--- a/server/src/lib/utils/SafeRedirection.ts
+++ b/server/src/lib/utils/SafeRedirection.ts
@@ -1,5 +1,4 @@
import Express = require("express");
-import { DomainExtractor } from "../../../../shared/DomainExtractor";
import { BelongToDomain } from "../../../../shared/BelongToDomain";
diff --git a/server/src/lib/utils/URLDecomposer.ts b/server/src/lib/utils/URLDecomposer.ts
index 9bdf2e9d2..e86d64fcb 100644
--- a/server/src/lib/utils/URLDecomposer.ts
+++ b/server/src/lib/utils/URLDecomposer.ts
@@ -1,3 +1,4 @@
+// TODO: replace this decompose by third party library.
export class URLDecomposer {
static fromUrl(url: string): {domain: string, path: string} {
if (!url) return;
diff --git a/server/src/lib/web_server/Configurator.ts b/server/src/lib/web_server/Configurator.ts
index 6e404874a..be2d2acad 100644
--- a/server/src/lib/web_server/Configurator.ts
+++ b/server/src/lib/web_server/Configurator.ts
@@ -15,16 +15,12 @@ const addRequestId = require("express-request-id")();
// Constants
const TRUST_PROXY = "trust proxy";
const X_POWERED_BY = "x-powered-by";
-const VIEWS = "views";
-const VIEW_ENGINE = "view engine";
-const PUG = "pug";
export class Configurator {
static configure(config: Configuration,
app: Express.Application,
vars: ServerVariables,
deps: GlobalDependencies): void {
- const viewsDirectory = Path.resolve(__dirname, "../../views");
const publicHtmlDirectory = Path.resolve(__dirname, "../../public_html");
const expressSessionOptions = SessionConfigurationBuilder.build(config, deps);
@@ -39,9 +35,6 @@ export class Configurator {
app.enable(TRUST_PROXY);
app.use(Helmet());
- app.set(VIEWS, viewsDirectory);
- app.set(VIEW_ENGINE, PUG);
-
RestApi.setup(app, vars);
}
}
\ No newline at end of file
diff --git a/server/src/lib/web_server/RestApi.ts b/server/src/lib/web_server/RestApi.ts
index 9144a15b9..de17f3655 100644
--- a/server/src/lib/web_server/RestApi.ts
+++ b/server/src/lib/web_server/RestApi.ts
@@ -1,10 +1,9 @@
import Express = require("express");
-import FirstFactorGet = require("../routes/firstfactor/get");
-import SecondFactorGet = require("../routes/secondfactor/get");
-
import FirstFactorPost = require("../routes/firstfactor/post");
-import LogoutGet = require("../routes/logout/get");
+import LogoutPost from "../routes/logout/post";
+import StateGet from "../routes/state/get";
+import RedirectPost from "../routes/redirect/post";
import VerifyGet = require("../routes/verify/get");
import TOTPSignGet = require("../routes/secondfactor/totp/sign/post");
@@ -21,13 +20,6 @@ import U2FRegisterPost = require("../routes/secondfactor/u2f/register/post");
import U2FRegisterRequestGet = require("../routes/secondfactor/u2f/register_request/get");
import ResetPasswordFormPost = require("../routes/password-reset/form/post");
-import ResetPasswordRequestPost = require("../routes/password-reset/request/get");
-
-import Error401Get = require("../routes/error/401/get");
-import Error403Get = require("../routes/error/403/get");
-import Error404Get = require("../routes/error/404/get");
-
-import LoggedIn = require("../routes/loggedin/get");
import { ServerVariables } from "../ServerVariables";
import Endpoints = require("../../../../shared/api");
@@ -38,15 +30,15 @@ function setupTotp(app: Express.Application, vars: ServerVariables) {
RequireValidatedFirstFactor.middleware(vars.logger),
TOTPSignGet.default(vars));
- app.get(Endpoints.SECOND_FACTOR_TOTP_IDENTITY_START_GET,
+ app.post(Endpoints.SECOND_FACTOR_TOTP_IDENTITY_START_POST,
RequireValidatedFirstFactor.middleware(vars.logger));
- app.get(Endpoints.SECOND_FACTOR_TOTP_IDENTITY_FINISH_GET,
+ app.post(Endpoints.SECOND_FACTOR_TOTP_IDENTITY_FINISH_POST,
RequireValidatedFirstFactor.middleware(vars.logger));
IdentityCheckMiddleware.register(app,
- Endpoints.SECOND_FACTOR_TOTP_IDENTITY_START_GET,
- Endpoints.SECOND_FACTOR_TOTP_IDENTITY_FINISH_GET,
+ Endpoints.SECOND_FACTOR_TOTP_IDENTITY_START_POST,
+ Endpoints.SECOND_FACTOR_TOTP_IDENTITY_FINISH_POST,
new TOTPRegistrationIdentityHandler(vars.logger,
vars.userDataStore, vars.totpHandler, vars.config.totp),
vars);
@@ -69,15 +61,15 @@ function setupU2f(app: Express.Application, vars: ServerVariables) {
RequireValidatedFirstFactor.middleware(vars.logger),
U2FRegisterPost.default(vars));
- app.get(Endpoints.SECOND_FACTOR_U2F_IDENTITY_START_GET,
+ app.post(Endpoints.SECOND_FACTOR_U2F_IDENTITY_START_POST,
RequireValidatedFirstFactor.middleware(vars.logger));
- app.get(Endpoints.SECOND_FACTOR_U2F_IDENTITY_FINISH_GET,
+ app.post(Endpoints.SECOND_FACTOR_U2F_IDENTITY_FINISH_POST,
RequireValidatedFirstFactor.middleware(vars.logger));
IdentityCheckMiddleware.register(app,
- Endpoints.SECOND_FACTOR_U2F_IDENTITY_START_GET,
- Endpoints.SECOND_FACTOR_U2F_IDENTITY_FINISH_GET,
+ Endpoints.SECOND_FACTOR_U2F_IDENTITY_START_POST,
+ Endpoints.SECOND_FACTOR_U2F_IDENTITY_FINISH_POST,
new U2FRegistrationIdentityHandler(vars.logger), vars);
}
@@ -88,27 +80,16 @@ function setupResetPassword(app: Express.Application, vars: ServerVariables) {
new ResetPasswordIdentityHandler(vars.logger, vars.usersDatabase),
vars);
- app.get(Endpoints.RESET_PASSWORD_REQUEST_GET,
- ResetPasswordRequestPost.default);
app.post(Endpoints.RESET_PASSWORD_FORM_POST,
ResetPasswordFormPost.default(vars));
}
-function setupErrors(app: Express.Application, vars: ServerVariables) {
- app.get(Endpoints.ERROR_401_GET, Error401Get.default(vars));
- app.get(Endpoints.ERROR_403_GET, Error403Get.default(vars));
- app.get(Endpoints.ERROR_404_GET, Error404Get.default);
-}
-
export class RestApi {
static setup(app: Express.Application, vars: ServerVariables): void {
- app.get(Endpoints.FIRST_FACTOR_GET, FirstFactorGet.default(vars));
+ app.get(Endpoints.STATE_GET, StateGet(vars));
+ app.post(Endpoints.REDIRECT_POST, RedirectPost(vars));
- app.get(Endpoints.SECOND_FACTOR_GET,
- RequireValidatedFirstFactor.middleware(vars.logger),
- SecondFactorGet.default(vars));
-
- app.get(Endpoints.LOGOUT_GET, LogoutGet.default(vars));
+ app.post(Endpoints.LOGOUT_POST, LogoutPost(vars));
app.get(Endpoints.VERIFY_GET, VerifyGet.default(vars));
app.post(Endpoints.FIRST_FACTOR_POST, FirstFactorPost.default(vars));
@@ -116,10 +97,5 @@ export class RestApi {
setupTotp(app, vars);
setupU2f(app, vars);
setupResetPassword(app, vars);
- setupErrors(app, vars);
-
- app.get(Endpoints.LOGGED_IN,
- RequireValidatedFirstFactor.middleware(vars.logger),
- LoggedIn.default(vars));
}
}
diff --git a/server/src/views/already-logged-in.pug b/server/src/views/already-logged-in.pug
deleted file mode 100644
index 137bbea30..000000000
--- a/server/src/views/already-logged-in.pug
+++ /dev/null
@@ -1,14 +0,0 @@
-extends layout/layout.pug
-
-block form-header
- h1 Sign in
-
-block content
- img(class="header-img" src="/img/success.png" alt="success")
- if redirection_url
- p You are already logged in as #{ username } .
- | If you are not redirected in few seconds, click here .
- | Otherwise, click here to log off.
- else
- p You are already logged in as #{ username } .
- | Click here to log off.
diff --git a/server/src/views/errors/401.pug b/server/src/views/errors/401.pug
deleted file mode 100644
index b7a222ad0..000000000
--- a/server/src/views/errors/401.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-401";
-
-block form-header
- h1 Error 401
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You are not authorized to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You are not authorized to access this resource.
\ No newline at end of file
diff --git a/server/src/views/errors/403.pug b/server/src/views/errors/403.pug
deleted file mode 100644
index f4b5ca8a2..000000000
--- a/server/src/views/errors/403.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-403";
-
-block form-header
- h1 Error 403
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You don't have enough privileges to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You don't have enough privileges to access this resource.
diff --git a/server/src/views/errors/404.pug b/server/src/views/errors/404.pug
deleted file mode 100644
index 06d6375fc..000000000
--- a/server/src/views/errors/404.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-404";
-
-block form-header
- Error 404
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- p Page not found.
diff --git a/server/src/views/firstfactor.pug b/server/src/views/firstfactor.pug
deleted file mode 100644
index 046b8c4c1..000000000
--- a/server/src/views/firstfactor.pug
+++ /dev/null
@@ -1,23 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "firstfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/user.png" alt="user profile")
- p Enter your credentials to sign in
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" id="username" placeholder="Username" required autofocus)
- input(type="password" class="form-control" id="password" placeholder="Password" required)
- button(id="signin" class="btn btn-lg btn-primary btn-block" type="submit") Sign in
- div(class="keep-me-logged-in pull-left")
- input(type="checkbox" id="keep_me_logged_in" name="keep_me_logged_in" value="true")
- label(for="keep_me_logged_in") Keep me logged in
- div(class="bottom-right-links pull-right")
- a(href=reset_password_request_endpoint, class="link forgot-password") Forgot password?
- span(class="clearfix")
diff --git a/server/src/views/layout/layout.pug b/server/src/views/layout/layout.pug
deleted file mode 100644
index 8caf710b6..000000000
--- a/server/src/views/layout/layout.pug
+++ /dev/null
@@ -1,28 +0,0 @@
-block variables
-
-doctype html
-html
- head
- title Authelia - 2FA
- meta(name="viewport", content="width=device-width, initial-scale=1.0")
- meta(name="robots", content="noindex, nofollow, nosnippet, noarchive")
- meta(http-equiv="Content-Security-Policy", content="default-src 'self'; img-src 'self' data:;")
- link(rel="icon", href="/img/icon.png" type="image/png" sizes="32x32")
- link(rel="stylesheet", type="text/css", href="/css/authelia.css")
- if redirection_url
- meta(http-equiv="refresh" content="4;url=" + redirection_url)
- body
- div(class="container")
- div(class="row")
- div(class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3")
- div(class="account-wall " + page_classname)
- div(class="row header")
- block form-header
- div(class="row body")
- div(class="form col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2")
- block content
- div(class="row footer poweredby-block")
- div(class="poweredby col-xs-6 col-xs-offset-4 col-sm-6 col-sm-offset-4 col-md-6 col-md-offset-4")
- | Powered by Authelia
- block entrypoint
- script(src="/js/authelia.js", type="text/javascript")
\ No newline at end of file
diff --git a/server/src/views/need-identity-validation.pug b/server/src/views/need-identity-validation.pug
deleted file mode 100644
index 4cfd62717..000000000
--- a/server/src/views/need-identity-validation.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "identity-validation";
-
-block form-header
- h1 Registration
-
-block content
- img(class="header-img" src="/img/mail.png" alt="mail")
- p A confirmation email has been sent to your mailbox.
- | Please open it and click on the link within 15 minutes to confirm the registration.
diff --git a/server/src/views/password-reset-form.pug b/server/src/views/password-reset-form.pug
deleted file mode 100644
index 07f0baa7b..000000000
--- a/server/src/views/password-reset-form.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-form";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/password.png" alt="password")
- p Set your new password and confirm it.
- form(class="form-signin")
- div(class="form-inputs")
- input(class="form-control" type="password" name="password1" id="password1" placeholder="New password" required="required")
- input(class="form-control" type="password" name="password2" id="password2" placeholder="Password confirmation" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/server/src/views/password-reset-request.pug b/server/src/views/password-reset-request.pug
deleted file mode 100644
index 21746af9e..000000000
--- a/server/src/views/password-reset-request.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-request";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- div
- img(class="header-img" src="/img/password.png" alt="password")
- p After giving your username, you will receive an email to change your password.
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" name="username" id="username" placeholder="Your username" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/server/src/views/secondfactor.pug b/server/src/views/secondfactor.pug
deleted file mode 100644
index 4df8ec257..000000000
--- a/server/src/views/secondfactor.pug
+++ /dev/null
@@ -1,30 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "secondfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div
- div(class="notification")
- h3 Hi #{username}
- div(class="row")
- div(class="u2f-token")
- img(src="/img/pendrive.png", alt="security key")
- p
- | Please, touch your security key
- b Or
- | Get a one-time password
- form(class="form-signin totp")
- div(class="form-inputs")
- input(type="text" autocomplete="off" class="form-control" id="token" placeholder="Token" required autofocus)
- button(class="btn btn-lg btn-primary btn-block totp-button" type="submit") Sign in
- div(class="pull-right bottom-right-links")
- div Need to register?
- div
- a(href=u2f_identity_start_endpoint, class="link register-u2f", data-toggle="tooltip", title="A security key is required to register.") Security key
- | |
- a(href=totp_identity_start_endpoint, class="link register-totp") Google Authenticator
- span(class="clearfix")
\ No newline at end of file
diff --git a/server/src/views/totp-register.pug b/server/src/views/totp-register.pug
deleted file mode 100644
index 1b4d98354..000000000
--- a/server/src/views/totp-register.pug
+++ /dev/null
@@ -1,25 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "totp-register";
-
-block form-header
- h1 One-time passwords
-
-block content
- p Open Google Authenticator and add this entry
- p(id="secret") #{ base32_secret }
- p or scan this barcode
- div(id="qrcode") #{ otpauth_url }
- p
- a(href=login_endpoint, id="login-button") Login
- div(class="need-google-authenticator")
- | Need Google Authenticator?
- div(class="store-badges")
- a(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
- img(alt='Get it on Google Play', src='/img/stores/googleplay-badge.svg', class="store-badge")
- a(href='https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8', target="_blank")
- img(alt='Get it on Apple Store' src='/img/stores/applestore-badge.svg' class="store-badge")
-
-block entrypoint
- script(src="/js/qrcode.min.js", type="text/javascript" )
diff --git a/server/src/views/u2f-register.pug b/server/src/views/u2f-register.pug
deleted file mode 100644
index 5e24bc707..000000000
--- a/server/src/views/u2f-register.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "u2f-register";
-
-block form-header
- h1 Register your security key
-
-block content
- p Touch the token to register your security key.
- img(src="/img/pendrive.png" alt="pendrive")
\ No newline at end of file
diff --git a/server/test/requests.ts b/server/test/requests.ts
deleted file mode 100644
index 93fa0de47..000000000
--- a/server/test/requests.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-
-import BluebirdPromise = require("bluebird");
-import request = require("request");
-import assert = require("assert");
-import express = require("express");
-import nodemailer = require("nodemailer");
-import Endpoints = require("../../shared/api");
-
-declare module "request" {
- export interface RequestAPI {
- getAsync(uri: string, options?: RequiredUriUrl): BluebirdPromise;
- getAsync(uri: string): BluebirdPromise;
- getAsync(options: RequiredUriUrl & CoreOptions): BluebirdPromise;
-
- postAsync(uri: string, options?: CoreOptions): BluebirdPromise;
- postAsync(uri: string): BluebirdPromise;
- postAsync(options: RequiredUriUrl & CoreOptions): BluebirdPromise;
- }
-}
-
-const requestAsync: typeof request = BluebirdPromise.promisifyAll(request) as typeof request;
-
-export = function (port: number) {
- const PORT = port;
- const BASE_URL = "http://localhost:" + PORT;
-
- function execute_totp(jar: request.CookieJar, token: string) {
- return requestAsync.postAsync({
- url: BASE_URL + Endpoints.SECOND_FACTOR_TOTP_POST,
- jar: jar,
- form: {
- token: token
- }
- });
- }
-
- function execute_u2f_authentication(jar: request.CookieJar) {
- return requestAsync.getAsync({
- url: BASE_URL + Endpoints.SECOND_FACTOR_U2F_SIGN_REQUEST_GET,
- jar: jar
- })
- .then(function (res: request.RequestResponse) {
- assert.equal(res.statusCode, 200);
- return requestAsync.postAsync({
- url: BASE_URL + Endpoints.SECOND_FACTOR_U2F_SIGN_POST,
- jar: jar,
- form: {
- }
- });
- });
- }
-
- function execute_verification(jar: request.CookieJar) {
- return requestAsync.getAsync({ url: BASE_URL + Endpoints.VERIFY_GET, jar: jar });
- }
-
- function execute_login(jar: request.CookieJar) {
- return requestAsync.getAsync({ url: BASE_URL + Endpoints.FIRST_FACTOR_GET, jar: jar });
- }
-
- function execute_first_factor(jar: request.CookieJar) {
- return requestAsync.postAsync({
- url: BASE_URL + Endpoints.FIRST_FACTOR_POST,
- jar: jar,
- form: {
- username: "test_ok",
- password: "password"
- }
- });
- }
-
- function execute_failing_first_factor(jar: request.CookieJar) {
- return requestAsync.postAsync({
- url: BASE_URL + Endpoints.FIRST_FACTOR_POST,
- jar: jar,
- form: {
- username: "test_nok",
- password: "password"
- }
- });
- }
-
- return {
- login: execute_login,
- verify: execute_verification,
- u2f_authentication: execute_u2f_authentication,
- first_factor: execute_first_factor,
- failing_first_factor: execute_failing_first_factor,
- totp: execute_totp,
- };
-};
-
diff --git a/shared/AuthenticationLevel.ts b/shared/AuthenticationLevel.ts
new file mode 100644
index 000000000..8edae1fe0
--- /dev/null
+++ b/shared/AuthenticationLevel.ts
@@ -0,0 +1,7 @@
+enum Level {
+ NOT_AUTHENTICATED = 0,
+ ONE_FACTOR = 1,
+ TWO_FACTOR = 2
+}
+
+export default Level;
diff --git a/shared/api.ts b/shared/api.ts
index 2ebe5d3d9..dacb04f6d 100644
--- a/shared/api.ts
+++ b/shared/api.ts
@@ -109,17 +109,17 @@ export const SECOND_FACTOR_TOTP_POST = "/api/totp";
/**
- * @api {get} /secondfactor/u2f/identity/start Start U2F registration identity validation
+ * @api {get} /api/secondfactor/u2f/identity/start Start U2F registration identity validation
* @apiName RequestU2FRegistration
* @apiGroup U2F
* @apiVersion 1.0.0
* @apiUse UserSession
* @apiUse IdentityValidationStart
*/
-export const SECOND_FACTOR_U2F_IDENTITY_START_GET = "/secondfactor/u2f/identity/start";
+export const SECOND_FACTOR_U2F_IDENTITY_START_POST = "/api/secondfactor/u2f/identity/start";
/**
- * @api {get} /secondfactor/u2f/identity/finish Finish U2F registration identity validation
+ * @api {get} /api/secondfactor/u2f/identity/finish Finish U2F registration identity validation
* @apiName ServeU2FRegistrationPage
* @apiGroup U2F
* @apiVersion 1.0.0
@@ -129,12 +129,12 @@ export const SECOND_FACTOR_U2F_IDENTITY_START_GET = "/secondfactor/u2f/identity/
* @apiDescription Serves the U2F registration page that asks the user to
* touch the token of the U2F device.
*/
-export const SECOND_FACTOR_U2F_IDENTITY_FINISH_GET = "/secondfactor/u2f/identity/finish";
+export const SECOND_FACTOR_U2F_IDENTITY_FINISH_POST = "/api/secondfactor/u2f/identity/finish";
/**
- * @api {get} /secondfactor/totp/identity/start Start TOTP registration identity validation
+ * @api {get} /api/secondfactor/totp/identity/start Start TOTP registration identity validation
* @apiName StartTOTPRegistration
* @apiGroup TOTP
* @apiVersion 1.0.0
@@ -143,12 +143,12 @@ export const SECOND_FACTOR_U2F_IDENTITY_FINISH_GET = "/secondfactor/u2f/identity
*
* @apiDescription Initiates the identity validation
*/
-export const SECOND_FACTOR_TOTP_IDENTITY_START_GET = "/secondfactor/totp/identity/start";
+export const SECOND_FACTOR_TOTP_IDENTITY_START_POST = "/api/secondfactor/totp/identity/start";
/**
- * @api {get} /secondfactor/totp/identity/finish Finish TOTP registration identity validation
+ * @api {get} /api/secondfactor/totp/identity/finish Finish TOTP registration identity validation
* @apiName FinishTOTPRegistration
* @apiGroup TOTP
* @apiVersion 1.0.0
@@ -159,7 +159,7 @@ export const SECOND_FACTOR_TOTP_IDENTITY_START_GET = "/secondfactor/totp/identit
* @apiDescription Serves the TOTP registration page that displays the secret.
* The secret is a QRCode and a base32 secret.
*/
-export const SECOND_FACTOR_TOTP_IDENTITY_FINISH_GET = "/secondfactor/totp/identity/finish";
+export const SECOND_FACTOR_TOTP_IDENTITY_FINISH_POST = "/api/secondfactor/totp/identity/finish";
@@ -187,7 +187,7 @@ export const RESET_PASSWORD_FORM_POST = "/api/password-reset";
*
* @apiDescription Serve a page that requires the username.
*/
-export const RESET_PASSWORD_REQUEST_GET = "/password-reset/request";
+export const RESET_PASSWORD_REQUEST_GET = "/api/password-reset/request";
@@ -201,7 +201,7 @@ export const RESET_PASSWORD_REQUEST_GET = "/password-reset/request";
*
* @apiDescription Start password reset request.
*/
-export const RESET_PASSWORD_IDENTITY_START_GET = "/password-reset/identity/start";
+export const RESET_PASSWORD_IDENTITY_START_GET = "/api/password-reset/identity/start";
@@ -215,7 +215,7 @@ export const RESET_PASSWORD_IDENTITY_START_GET = "/password-reset/identity/start
*
* @apiDescription Start password reset request.
*/
-export const RESET_PASSWORD_IDENTITY_FINISH_GET = "/password-reset/identity/finish";
+export const RESET_PASSWORD_IDENTITY_FINISH_GET = "/api/password-reset/identity/finish";
@@ -240,28 +240,17 @@ export const RESET_PASSWORD_IDENTITY_FINISH_GET = "/password-reset/identity/fini
export const FIRST_FACTOR_POST = "/api/firstfactor";
/**
- * @api {get} / First factor page
- * @apiName Login
+ * @api {get} /state Authentication state
+ * @apiName State
* @apiGroup Authentication
* @apiVersion 1.0.0
*
- * @apiSuccess (Success 200) {String} Content The content of the first factor page.
+ * @apiSuccess (Success 200) A dict containing the username and the authentication
+ * level
*
- * @apiDescription Serves the login page and create a create a cookie for the client.
+ * @apiDescription Get the authentication state of the user based on the cookie.
*/
-export const FIRST_FACTOR_GET = "/";
-
-/**
- * @api {get} /secondfactor Second factor page
- * @apiName SecondFactor
- * @apiGroup Authentication
- * @apiVersion 1.0.0
- *
- * @apiSuccess (Success 200) {String} Content The content of second factor page.
- *
- * @apiDescription Serves the second factor page
- */
-export const SECOND_FACTOR_GET = "/secondfactor";
+export const STATE_GET = "/api/state";
/**
* @api {get} /api/verify Verify user authentication
@@ -287,20 +276,28 @@ export const SECOND_FACTOR_GET = "/secondfactor";
export const VERIFY_GET = "/api/verify";
/**
- * @api {get} /logout Serves logout page
+ * @api {post} /api/logout Logout procedure
* @apiName Logout
* @apiGroup Authentication
* @apiVersion 1.0.0
*
- * @apiParam {String} redirect Redirect to this URL when user is deauthenticated.
- * @apiSuccess (Success 302) redirect Redirect to the URL.
+ * @apiSuccess (Success 200)
*
- * @apiDescription Log out the user and redirect to the URL.
+ * @apiDescription Resets the session to logout the user.
*/
-export const LOGOUT_GET = "/logout";
+export const LOGOUT_POST = "/api/logout";
-export const ERROR_401_GET = "/error/401";
-export const ERROR_403_GET = "/error/403";
-export const ERROR_404_GET = "/error/404";
-
-export const LOGGED_IN = "/loggedin";
+/**
+ * @api {post} /api/redirect Url redirection checking endpoint
+ * @apiName Redirect
+ * @apiGroup Authentication
+ * @apiVersion 1.0.0
+ * @apiDescription Check if the user can be redirected to the url provided.
+ * The level of permissions for this user are checked and the url must be
+ * in the domain protected by authelia.
+ *
+ * @apiSuccess (Success 200)
+ *
+ * @apiDescription Resets the session to logout the user.
+ */
+export const REDIRECT_POST = "/api/redirect";
\ No newline at end of file
diff --git a/test/complete-config/00-suite.ts b/test/complete-config/00-suite.ts
deleted file mode 100644
index 3ef451b56..000000000
--- a/test/complete-config/00-suite.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-require("chromedriver");
-import Environment = require('../environment');
-
-const includes = [
- "docker-compose.yml",
- "example/compose/docker-compose.base.yml",
- "example/compose/mongo/docker-compose.yml",
- "example/compose/redis/docker-compose.yml",
- "example/compose/nginx/backend/docker-compose.yml",
- "example/compose/nginx/portal/docker-compose.yml",
- "example/compose/smtp/docker-compose.yml",
- "example/compose/httpbin/docker-compose.yml",
- "example/compose/ldap/docker-compose.yml"
-];
-
-
-before(function() {
- this.timeout(20000);
- this.environment = new Environment.Environment(includes);
- return this.environment.setup(5000);
-});
-
-after(function() {
- this.timeout(30000);
- if(process.env.KEEP_ENV != "true") {
- return this.environment.cleanup();
- }
-});
\ No newline at end of file
diff --git a/test/complete-config/closed-redirection.ts b/test/complete-config/closed-redirection.ts
deleted file mode 100644
index c44721eca..000000000
--- a/test/complete-config/closed-redirection.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import WithDriver from "../helpers/with-driver";
-import LoginAndRegisterTotp from "../helpers/login-and-register-totp";
-import SeeNotification from "../helpers/see-notification";
-import VisitPage from "../helpers/visit-page";
-import FillLoginPageWithUserAndPasswordAndClick from '../helpers/fill-login-page-and-click';
-import ValidateTotp from "../helpers/validate-totp";
-import {CANNOT_REDIRECT_TO_EXTERNAL_DOMAIN} from '../../shared/UserMessages';
-
-/*
- * Authelia should not be vulnerable to open redirection. Otherwise it would aid an
- * attacker in conducting a phishing attack.
- *
- * To avoid the issue, Authelia's client scans the URL and prevent any redirection if
- * the URL is pointing to an external domain.
- */
-describe("Redirection should be performed only if in domain", function() {
- this.timeout(10000);
- WithDriver();
-
- before(function() {
- const that = this;
- return LoginAndRegisterTotp(this.driver, "john", true)
- .then((secret: string) => that.secret = secret)
- });
-
- function DoNotRedirect(url: string) {
- it(`should see an error message instead of redirecting to ${url}`, function() {
- const driver = this.driver;
- const secret = this.secret;
- return VisitPage(driver, `https://login.example.com:8080/?rd=${url}`)
- .then(() => FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password'))
- .then(() => ValidateTotp(driver, secret))
- .then(() => SeeNotification(driver, "error", CANNOT_REDIRECT_TO_EXTERNAL_DOMAIN))
- .then(() => driver.get(`https://login.example.com:8080/logout`));
- });
- }
-
- DoNotRedirect("www.google.fr");
- DoNotRedirect("http://www.google.fr");
- DoNotRedirect("https://www.google.fr");
-})
\ No newline at end of file
diff --git a/test/complete-config/mongo-broken-connection.ts b/test/complete-config/mongo-broken-connection.ts
deleted file mode 100644
index c46359869..000000000
--- a/test/complete-config/mongo-broken-connection.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import WithDriver from '../helpers/with-driver';
-import fullLogin from '../helpers/full-login';
-import loginAndRegisterTotp from '../helpers/login-and-register-totp';
-
-describe("Connection retry when mongo fails or restarts", function() {
- this.timeout(30000);
- WithDriver();
-
- it("should be able to login after mongo restarts", function() {
- const that = this;
- let secret;
- return loginAndRegisterTotp(that.driver, "john", true)
- .then(_secret => secret = _secret)
- .then(() => that.environment.restart_service("mongo", 1000))
- .then(() => fullLogin(that.driver, "https://admin.example.com:8080/secret.html", "john", secret));
- })
-});
diff --git a/test/configuration.ts b/test/configuration.ts
deleted file mode 100644
index 3204c6c22..000000000
--- a/test/configuration.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import Bluebird = require("bluebird");
-import YamlJS = require("yamljs");
-import Fs = require("fs");
-import ChildProcess = require("child_process");
-
-const execAsync = Bluebird.promisify(ChildProcess.exec);
-
-export class Configuration {
- private outputPath: string;
-
- setup(
- inputPath: string,
- outputPath: string,
- updateFn: (configuration: any) => void)
- : Bluebird {
-
- console.log("[CONFIGURATION] setup");
- this.outputPath = outputPath;
- return new Bluebird((resolve, reject) => {
- const configuration = YamlJS.load(inputPath);
- updateFn(configuration);
- const configurationStr = YamlJS.stringify(configuration);
- Fs.writeFileSync(outputPath, configurationStr);
- resolve();
- });
- }
-
- cleanup(): Bluebird<{}> {
- console.log("[CONFIGURATION] cleanup");
- return execAsync(`rm ${this.outputPath}`);
- }
-}
\ No newline at end of file
diff --git a/test/environment.ts b/test/environment.ts
deleted file mode 100644
index 593aa05af..000000000
--- a/test/environment.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-const { exec } = require('child_process');
-import Bluebird = require("bluebird");
-
-function docker_compose(includes: string[]) {
- const compose_args = includes.map((dc: string) => `-f ${dc}`).join(' ');
- return `docker-compose ${compose_args}`;
-}
-
-export class Environment {
- private includes: string[];
- constructor(includes: string[]) {
- this.includes = includes;
- }
-
- private runCommand(command: string, timeout?: number): Bluebird {
- return new Bluebird((resolve, reject) => {
- console.log('[ENVIRONMENT] Running: %s', command);
- exec(command, (err: any, stdout: any, stderr: any) => {
- if(err) {
- reject(err);
- return;
- }
- if(!timeout) resolve();
- else setTimeout(resolve, timeout);
- });
- });
- }
-
-
- setup(timeout?: number): Bluebird {
- const command = docker_compose(this.includes) + ' up -d'
- console.log('[ENVIRONMENT] Starting up...');
- return this.runCommand(command, timeout);
- }
-
- cleanup(): Bluebird {
- if(process.env.KEEP_ENV != "true") {
- const command = docker_compose(this.includes) + ' down'
- console.log('[ENVIRONMENT] Cleaning up...');
- return this.runCommand(command);
- }
- return Bluebird.resolve();
- }
-
- stop_service(serviceName: string): Bluebird {
- const command = docker_compose(this.includes) + ' stop ' + serviceName;
- console.log('[ENVIRONMENT] Stopping service %s...', serviceName);
- return this.runCommand(command);
- }
-
- start_service(serviceName: string): Bluebird {
- const command = docker_compose(this.includes) + ' start ' + serviceName;
- console.log('[ENVIRONMENT] Starting service %s...', serviceName);
- return this.runCommand(command);
- }
-
- restart_service(serviceName: string, timeout?: number): Bluebird {
- const command = docker_compose(this.includes) + ' restart ' + serviceName;
- console.log('[ENVIRONMENT] Restarting service %s...', serviceName);
- return this.runCommand(command, timeout);
- }
-}
\ No newline at end of file
diff --git a/test/features/access-control.feature b/test/features/access-control.feature
deleted file mode 100644
index 0e513ea1f..000000000
--- a/test/features/access-control.feature
+++ /dev/null
@@ -1,55 +0,0 @@
-Feature: User has access restricted access to domains
-
- @need-registered-user-john
- Scenario: User john has admin access
- When I visit "https://login.example.com:8080?rd=https://home.example.com:8080/"
- And I login with user "john" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- And I'm redirected to "https://home.example.com:8080/"
- Then I have access to "https://public.example.com:8080/secret.html"
- And I have access to "https://dev.example.com:8080/groups/admin/secret.html"
- And I have access to "https://dev.example.com:8080/groups/dev/secret.html"
- And I have access to "https://dev.example.com:8080/users/john/secret.html"
- And I have access to "https://dev.example.com:8080/users/harry/secret.html"
- And I have access to "https://dev.example.com:8080/users/bob/secret.html"
- And I have access to "https://admin.example.com:8080/secret.html"
- And I have access to "https://mx1.mail.example.com:8080/secret.html"
- And I have access to "https://single_factor.example.com:8080/secret.html"
- And I have no access to "https://mx2.mail.example.com:8080/secret.html"
-
- @need-registered-user-bob
- Scenario: User bob has restricted access
- When I visit "https://login.example.com:8080?rd=https://home.example.com:8080/"
- And I login with user "bob" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- And I'm redirected to "https://home.example.com:8080/"
- Then I have access to "https://public.example.com:8080/secret.html"
- And I have no access to "https://dev.example.com:8080/groups/admin/secret.html"
- And I have access to "https://dev.example.com:8080/groups/dev/secret.html"
- And I have no access to "https://dev.example.com:8080/users/john/secret.html"
- And I have no access to "https://dev.example.com:8080/users/harry/secret.html"
- And I have access to "https://dev.example.com:8080/users/bob/secret.html"
- And I have no access to "https://admin.example.com:8080/secret.html"
- And I have access to "https://mx1.mail.example.com:8080/secret.html"
- And I have access to "https://single_factor.example.com:8080/secret.html"
- And I have access to "https://mx2.mail.example.com:8080/secret.html"
-
- @need-registered-user-harry
- Scenario: User harry has restricted access
- When I visit "https://login.example.com:8080?rd=https://home.example.com:8080/"
- And I login with user "harry" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- And I'm redirected to "https://home.example.com:8080/"
- Then I have access to "https://public.example.com:8080/secret.html"
- And I have no access to "https://dev.example.com:8080/groups/admin/secret.html"
- And I have no access to "https://dev.example.com:8080/groups/dev/secret.html"
- And I have no access to "https://dev.example.com:8080/users/john/secret.html"
- And I have access to "https://dev.example.com:8080/users/harry/secret.html"
- And I have no access to "https://dev.example.com:8080/users/bob/secret.html"
- And I have no access to "https://admin.example.com:8080/secret.html"
- And I have no access to "https://mx1.mail.example.com:8080/secret.html"
- And I have access to "https://single_factor.example.com:8080/secret.html"
- And I have no access to "https://mx2.mail.example.com:8080/secret.html"
diff --git a/test/features/auth-portal-redirection.feature b/test/features/auth-portal-redirection.feature
deleted file mode 100644
index 1fd5bb5cf..000000000
--- a/test/features/auth-portal-redirection.feature
+++ /dev/null
@@ -1,34 +0,0 @@
-Feature: User is redirected when factors are already validated
-
- @need-registered-user-john
- Scenario: User has validated first factor and tries to access service protected by second factor. He is then redirect to second factor step.
- When I visit "https://single_factor.example.com:8080/secret.html"
- And I'm redirected to "https://login.example.com:8080/?rd=https://single_factor.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- And I'm redirected to "https://single_factor.example.com:8080/secret.html"
- And I visit "https://public.example.com:8080/secret.html"
- Then I'm redirected to "https://login.example.com:8080/secondfactor?rd=https://public.example.com:8080/secret.html"
-
- @need-registered-user-john
- Scenario: User who has validated second factor and access auth portal should be redirected to "Already logged in page" and redirected to default URL declared in configuration
- When I visit "https://public.example.com:8080/secret.html"
- And I'm redirected to "https://login.example.com:8080/?rd=https://public.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- And I'm redirected to "https://public.example.com:8080/secret.html"
- And I visit "https://login.example.com:8080"
- Then I'm redirected to "https://login.example.com:8080/loggedin"
- And I sleep for 5 seconds
- And I'm redirected to "https://home.example.com:8080/"
-
- @need-registered-user-john
- Scenario: User who has validated second factor and access auth portal with rediction param should be redirected to that URL
- When I visit "https://public.example.com:8080/secret.html"
- And I'm redirected to "https://login.example.com:8080/?rd=https://public.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- And I'm redirected to "https://public.example.com:8080/secret.html"
- And I visit "https://login.example.com:8080?rd=https://public.example.com:8080/secret.html"
- Then I'm redirected to "https://public.example.com:8080/secret.html"
diff --git a/test/features/authelia.feature b/test/features/authelia.feature
deleted file mode 100644
index dc993c2b8..000000000
--- a/test/features/authelia.feature
+++ /dev/null
@@ -1,9 +0,0 @@
-Feature: Generic tests on Authelia endpoints
-
- Scenario: /api/verify replies with error when redirect parameter is not provided
- When I query "https://authelia.example.com:8080/api/verify"
- Then I get error code 401
-
- Scenario: /api/verify redirects when redirect parameter is provided
- When I query "https://authelia.example.com:8080/api/verify?rd=http://login.example.com:8080"
- Then I get redirected to "http://login.example.com:8080"
\ No newline at end of file
diff --git a/test/features/authentication.feature b/test/features/authentication.feature
deleted file mode 100644
index 851c7e5e6..000000000
--- a/test/features/authentication.feature
+++ /dev/null
@@ -1,38 +0,0 @@
-Feature: Authentication scenarii
-
- Scenario: User succeeds first factor
- Given I visit "https://login.example.com:8080/"
- When I set field "username" to "bob"
- And I set field "password" to "password"
- And I click on "Sign in"
- Then I'm redirected to "https://login.example.com:8080/secondfactor"
-
- Scenario: User fails first factor
- Given I visit "https://login.example.com:8080/"
- When I set field "username" to "john"
- And I set field "password" to "bad-password"
- And I click on "Sign in"
- Then I get a notification of type "error" with message "Authentication failed. Please check your credentials."
-
- Scenario: User registers TOTP secret and succeeds authentication
- Given I visit "https://login.example.com:8080/"
- And I login with user "john" and password "password"
- And I register a TOTP secret called "Sec0"
- When I visit "https://admin.example.com:8080/secret.html"
- And I'm redirected to "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- And I use "Sec0" as TOTP token handle
- And I click on "Sign in"
- Then I'm redirected to "https://admin.example.com:8080/secret.html"
-
- Scenario: User fails TOTP second factor
- When I visit "https://admin.example.com:8080/secret.html"
- And I'm redirected to "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- And I use "BADTOKEN" as TOTP token
- And I click on "Sign in"
- Then I get a notification of type "error" with message "Authentication failed. Have you already registered your secret?"
-
- Scenario: Logout redirects user to redirect URL given in parameter
- When I visit "https://login.example.com:8080/logout?rd=https://home.example.com:8080/"
- Then I'm redirected to "https://home.example.com:8080/"
diff --git a/test/features/forward-headers.feature b/test/features/forward-headers.feature
deleted file mode 100644
index 3e45c1356..000000000
--- a/test/features/forward-headers.feature
+++ /dev/null
@@ -1,11 +0,0 @@
-Feature: Headers are correctly forwarded to backend
- @need-authenticated-user-john
- Scenario: Custom-Forwarded-User and Custom-Forwarded-Groups are correctly forwarded to protected backend
- When I visit "https://public.example.com:8080/headers"
- Then I see header "Custom-Forwarded-User" set to "john"
- Then I see header "Custom-Forwarded-Groups" set to "dev,admin"
-
- Scenario: Custom-Forwarded-User and Custom-Forwarded-Groups are correctly forwarded to protected backend when basic auth is used
- When I request "https://single_factor.example.com:8080/headers" with username "john" and password "password" using basic authentication
- Then I received header "Custom-Forwarded-User" set to "john"
- And I received header "Custom-Forwarded-Groups" set to "dev,admin"
\ No newline at end of file
diff --git a/test/features/redirection.feature b/test/features/redirection.feature
deleted file mode 100644
index 2bb39b8d3..000000000
--- a/test/features/redirection.feature
+++ /dev/null
@@ -1,71 +0,0 @@
-Feature: User is correctly redirected
-
- Scenario: User is redirected to authelia when he is not authenticated
- When I visit "https://public.example.com:8080"
- Then I'm redirected to "https://login.example.com:8080/?rd=https://public.example.com:8080/"
-
- @need-registered-user-john
- Scenario: User is redirected to home page after several authentication tries
- When I visit "https://public.example.com:8080/secret.html"
- And I login with user "john" and password "badpassword"
- And I wait for notification to disappear
- And I clear field "username"
- And I clear field "password"
- And I login with user "john" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- Then I'm redirected to "https://public.example.com:8080/secret.html"
-
- Scenario: User Harry does not have access to admin domain and thus he must get an error 403
- When I register TOTP and login with user "harry" and password "password"
- And I visit "https://admin.example.com:8080/secret.html"
- Then I get an error 403
-
- Scenario: Redirection URL is propagated from restricted page to first factor
- When I visit "https://public.example.com:8080/secret.html"
- Then I'm redirected to "https://login.example.com:8080/?rd=https://public.example.com:8080/secret.html"
-
- Scenario: Redirection URL is propagated from first factor to second factor
- Given I visit "https://login.example.com:8080/"
- And I login with user "john" and password "password"
- And I register a TOTP secret called "Sec0"
- When I visit "https://public.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- Then I'm redirected to "https://login.example.com:8080/secondfactor?rd=https://public.example.com:8080/secret.html"
-
- Scenario: Redirection URL is used to send user from second factor to target page
- Given I visit "https://login.example.com:8080/"
- And I login with user "john" and password "password"
- And I register a TOTP secret called "Sec0"
- When I visit "https://public.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- And I use "Sec0" as TOTP token handle
- And I click on "Sign in"
- Then I'm redirected to "https://public.example.com:8080/secret.html"
-
- @need-registered-user-john
- Scenario: User is redirected to default URL defined in configuration when authentication is successful
- When I visit "https://login.example.com:8080"
- And I login with user "john" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- Then I'm redirected to "https://home.example.com:8080/"
-
-
- Scenario: User is redirected when hitting an error 401
- When I visit "https://login.example.com:8080/secondfactor/u2f/identity/finish"
- Then I'm redirected to "https://login.example.com:8080/error/401"
- And I sleep for 5 seconds
- And I'm redirected to "https://home.example.com:8080/"
-
- @need-registered-user-harry
- Scenario: User is redirected when hitting an error 403
- When I visit "https://login.example.com:8080"
- And I login with user "harry" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- And I'm redirected to "https://home.example.com:8080/"
- When I visit "https://admin.example.com:8080/secret.html"
- Then I'm redirected to "https://login.example.com:8080/error/403"
- And I sleep for 5 seconds
- And I'm redirected to "https://home.example.com:8080/"
diff --git a/test/features/registration.feature b/test/features/registration.feature
deleted file mode 100644
index c1c92b52f..000000000
--- a/test/features/registration.feature
+++ /dev/null
@@ -1,14 +0,0 @@
-Feature: Register secret for second factor
-
- Scenario: Register a TOTP secret with correct label and issuer
- Given I visit "https://login.example.com:8080/"
- And I login with user "john" and password "password"
- When I register a TOTP secret called "Sec0"
- Then the otpauth url has label "john" and issuer "authelia.com"
-
- @needs-totp_issuer-config
- Scenario: Register a TOTP secret with correct label and custom issuer
- Given I visit "https://login.example.com:8080/"
- And I login with user "john" and password "password"
- When I register a TOTP secret called "Sec0"
- Then the otpauth url has label "john" and issuer "custom.com"
\ No newline at end of file
diff --git a/test/features/regulation.feature b/test/features/regulation.feature
deleted file mode 100644
index 39504d7eb..000000000
--- a/test/features/regulation.feature
+++ /dev/null
@@ -1,39 +0,0 @@
-@needs-regulation-config
-Feature: Authelia regulates authentication to avoid brute force
-
- @need-registered-user-blackhat
- Scenario: Attacker tries too many authentication in a short period of time and get banned
- Given I visit "https://login.example.com:8080/"
- And I set field "username" to "blackhat"
- And I set field "password" to "bad-password"
- And I click on "Sign in"
- And I get a notification of type "error" with message "Authentication failed. Please check your credentials."
- And I set field "password" to "bad-password"
- And I click on "Sign in"
- And I get a notification of type "error" with message "Authentication failed. Please check your credentials."
- And I set field "password" to "bad-password"
- And I click on "Sign in"
- And I get a notification of type "error" with message "Authentication failed. Please check your credentials."
- When I set field "password" to "password"
- And I click on "Sign in"
- Then I get a notification of type "error" with message "Authentication failed. Please check your credentials."
-
- @need-registered-user-blackhat
- Scenario: User is unbanned after a configured amount of time
- Given I visit "https://login.example.com:8080/?rd=https://public.example.com:8080/secret.html"
- And I set field "username" to "blackhat"
- And I set field "password" to "bad-password"
- And I click on "Sign in"
- And I get a notification of type "error" with message "Authentication failed. Please check your credentials."
- And I set field "password" to "bad-password"
- And I click on "Sign in"
- And I get a notification of type "error" with message "Authentication failed. Please check your credentials."
- And I set field "password" to "bad-password"
- And I click on "Sign in"
- And I get a notification of type "error" with message "Authentication failed. Please check your credentials."
- When I wait 6 seconds
- And I set field "password" to "password"
- And I click on "Sign in"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- Then I'm redirected to "https://public.example.com:8080/secret.html"
diff --git a/test/features/reset-password.feature b/test/features/reset-password.feature
deleted file mode 100644
index d449fad78..000000000
--- a/test/features/reset-password.feature
+++ /dev/null
@@ -1,39 +0,0 @@
-Feature: User is able to reset his password
-
- Scenario: User is redirected to password reset page
- Given I'm on "https://login.example.com:8080"
- When I click on the link "Forgot password?"
- Then I'm redirected to "https://login.example.com:8080/password-reset/request"
-
- Scenario: User get an email with a link to reset password
- Given I'm on "https://login.example.com:8080/password-reset/request"
- When I set field "username" to "james"
- And I click on "Reset Password"
- Then I get a notification of type "success" with message "An email has been sent to you. Follow the link to change your password."
-
- Scenario: Request password for unexisting user should behave like existing user
- Given I'm on "https://login.example.com:8080/password-reset/request"
- When I set field "username" to "fake_user"
- And I click on "Reset Password"
- Then I get a notification of type "success" with message "An email has been sent to you. Follow the link to change your password."
-
- Scenario: User resets his password
- Given I'm on "https://login.example.com:8080/password-reset/request"
- And I set field "username" to "james"
- And I click on "Reset Password"
- When I click on the link of the email
- And I set field "password1" to "newpassword"
- And I set field "password2" to "newpassword"
- And I click on "Reset Password"
- Then I'm redirected to "https://login.example.com:8080/"
-
-
- Scenario: User does not confirm new password
- Given I'm on "https://login.example.com:8080/password-reset/request"
- And I set field "username" to "james"
- And I click on "Reset Password"
- When I click on the link of the email
- And I set field "password1" to "newpassword"
- And I set field "password2" to "newpassword2"
- And I click on "Reset Password"
- Then I get a notification of type "warning" with message "The passwords are different."
diff --git a/test/features/resilience.feature b/test/features/resilience.feature
deleted file mode 100644
index a110d4f85..000000000
--- a/test/features/resilience.feature
+++ /dev/null
@@ -1,15 +0,0 @@
-Feature: Authelia keeps user sessions despite the application restart
-
- @need-authenticated-user-john
- Scenario: Session is still valid after Authelia restarts
- When the application restarts
- Then I have access to "https://admin.example.com:8080/secret.html"
-
- @need-registered-user-john
- Scenario: Secrets are stored even when Authelia restarts
- When the application restarts
- And I visit "https://admin.example.com:8080/secret.html" and get redirected "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- And I use "REGISTERED" as TOTP token handle
- And I click on "Sign in"
- Then I'm redirected to "https://admin.example.com:8080/secret.html"
diff --git a/test/features/restrictions.feature b/test/features/restrictions.feature
deleted file mode 100644
index 97c85a342..000000000
--- a/test/features/restrictions.feature
+++ /dev/null
@@ -1,16 +0,0 @@
-Feature: Non authenticated users have no access to certain pages
-
- Scenario: Anonymous user has no access to protected pages
- Then I get the following status code when requesting:
- | url | code | method |
- | https://login.example.com:8080/secondfactor | 401 | GET |
- | https://login.example.com:8080/secondfactor/u2f/identity/start | 401 | GET |
- | https://login.example.com:8080/secondfactor/u2f/identity/finish | 401 | GET |
- | https://login.example.com:8080/secondfactor/totp/identity/start | 401 | GET |
- | https://login.example.com:8080/secondfactor/totp/identity/finish | 401 | GET |
- | https://login.example.com:8080/loggedin | 401 | GET |
- | https://login.example.com:8080/api/totp | 401 | POST |
- | https://login.example.com:8080/api/u2f/sign_request | 401 | GET |
- | https://login.example.com:8080/api/u2f/sign | 401 | POST |
- | https://login.example.com:8080/api/u2f/register_request | 401 | GET |
- | https://login.example.com:8080/api/u2f/register | 401 | POST |
diff --git a/test/features/session-timeout.feature b/test/features/session-timeout.feature
deleted file mode 100644
index 09bfb1fd9..000000000
--- a/test/features/session-timeout.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-@needs-inactivity-config
-Feature: Session is closed after a certain amount of time
-
- @need-authenticated-user-john
- Scenario: An authenticated user is disconnected after a certain inactivity period
- Given I have access to "https://public.example.com:8080/secret.html"
- When I sleep for 6 seconds
- And I visit "https://public.example.com:8080/secret.html"
- Then I'm redirected to "https://login.example.com:8080/?rd=https://public.example.com:8080/secret.html"
-
- @need-authenticated-user-john
- Scenario: An authenticated user is disconnected after session expiration period
- Given I have access to "https://public.example.com:8080/secret.html"
- When I sleep for 4 seconds
- And I visit "https://public.example.com:8080/secret.html"
- And I sleep for 4 seconds
- And I visit "https://public.example.com:8080/secret.html"
- And I sleep for 4 seconds
- And I visit "https://public.example.com:8080/secret.html"
- Then I'm redirected to "https://login.example.com:8080/?rd=https://public.example.com:8080/secret.html"
diff --git a/test/features/single-factor-domain.feature b/test/features/single-factor-domain.feature
deleted file mode 100644
index 9fee7be9a..000000000
--- a/test/features/single-factor-domain.feature
+++ /dev/null
@@ -1,16 +0,0 @@
-Feature: User can access certain subdomains with single factor
-
- Scenario: User is redirected to service after first factor if allowed
- When I visit "https://login.example.com:8080/?rd=https://single_factor.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- Then I'm redirected to "https://single_factor.example.com:8080/secret.html"
-
- Scenario: Redirection after first factor fails if single_factor not allowed. It redirects user to first factor.
- When I visit "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html"
- And I login with user "john" and password "password"
- Then I'm redirected to "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html"
-
- Scenario: User can login using basic authentication
- When I request "https://single_factor.example.com:8080/secret.html" with username "john" and password "password" using basic authentication
- Then I receive the secret page
-
diff --git a/test/features/step_definitions/access-control.ts b/test/features/step_definitions/access-control.ts
deleted file mode 100644
index 674d0edf8..000000000
--- a/test/features/step_definitions/access-control.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import {Then} from "cucumber";
-
-Then("I have access to {string}", function(url: string) {
- const that = this;
- return this.driver.get(url)
- .then(function () {
- return that.waitUntilUrlContains(url);
- });
-});
-
-Then("I have no access to {string}", function(url: string) {
- const that = this;
- return this.driver.get(url)
- .then(function () {
- return that.getErrorPage(403);
- });
-});
\ No newline at end of file
diff --git a/test/features/step_definitions/authelia.ts b/test/features/step_definitions/authelia.ts
deleted file mode 100644
index 7b100f0d1..000000000
--- a/test/features/step_definitions/authelia.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import {Before, When, Then} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-import Request = require("request-promise");
-import Bluebird = require("bluebird");
-
-When("I query {string}", function (url: string) {
- const that = this;
- return Request(url, { followRedirect: false })
- .then(function(response) {
- that.response = response;
- })
- .catch(function(err: Error) {
- that.error = err;
- })
-});
-
-Then("I get error code 401", function() {
- const that = this;
- return new Bluebird(function(resolve, reject) {
- if(that.error && that.error.statusCode == 401) {
- resolve();
- }
- else {
- if(that.response)
- reject(new Error("No error thrown"));
- else if(that.error.statusCode != 401)
- reject(new Error(`Error code (${that.error.statusCode}) != 401`));
- }
- });
-});
-
-Then("I get redirected to {string}", function(url: string) {
- const that = this;
- return new Bluebird(function(resolve, reject) {
- if(that.error && that.error.statusCode == 302
- && that.error.message.indexOf(url) > -1) {
- resolve();
- }
- else {
- reject(new Error("Not redirected"));
- }
- });
-});
\ No newline at end of file
diff --git a/test/features/step_definitions/authentication.ts b/test/features/step_definitions/authentication.ts
deleted file mode 100644
index 7c12e4da0..000000000
--- a/test/features/step_definitions/authentication.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-import {Given, When, Then, TableDefinition} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-import Fs = require("fs");
-import Speakeasy = require("speakeasy");
-import CustomWorld = require("../support/world");
-import BluebirdPromise = require("bluebird");
-import Request = require("request-promise");
-
-When(/^I visit "(https:\/\/[a-zA-Z0-9:%&._\/=?-]+)"$/, function (link: string) {
- return this.visit(link);
-});
-
-When("I wait for notification to disappear", function () {
- const that = this;
- const notificationEl = this.driver.findElement(seleniumWebdriver.By.className("notification"));
- return this.driver.wait(seleniumWebdriver.until.elementIsVisible(notificationEl), 15000)
- .then(function () {
- return that.driver.wait(seleniumWebdriver.until.elementIsNotVisible(notificationEl), 15000);
- })
-})
-
-When("I set field {string} to {string}", function (fieldName: string, content: string) {
- return this.setFieldTo(fieldName, content);
-});
-
-When("I clear field {string}", function (fieldName: string) {
- return this.clearField(fieldName);
-});
-
-When("I click on {string}", function (text: string) {
- return this.clickOnButton(text);
-});
-
-Given("I login with user {string} and password {string}",
- function (username: string, password: string) {
- return this.loginWithUserPassword(username, password);
- });
-
-Given("I login with user {string} and password {string} \
-and I use TOTP token handle {string}",
- function (username: string, password: string, totpTokenHandle: string) {
- const that = this;
- return this.loginWithUserPassword(username, password)
- .then(function () {
- return that.useTotpTokenHandle(totpTokenHandle);
- });
- });
-
-Given("I register a TOTP secret called {string}", function (handle: string) {
- return this.registerTotpSecret(handle);
-});
-
-Given("I use {string} as TOTP token", function (token: string) {
- return this.useTotpToken(token);
-});
-
-Given("I use {string} as TOTP token handle", function (handle) {
- return this.useTotpTokenHandle(handle);
-});
-
-When("I visit {string} and get redirected {string}",
- function (url: string, redirectUrl: string) {
- const that = this;
- return this.driver.get(url)
- .then(function () {
- return that.driver.wait(seleniumWebdriver.until.urlIs(redirectUrl), 5000);
- });
- });
-
-Given("I register TOTP and login with user {string} and password {string}",
- function (username: string, password: string) {
- return this.registerTotpAndSignin(username, password);
- });
-
-function endpointReplyWith(context: any, link: string, method: string,
- returnCode: number) {
- return Request(link, {
- method: method
- })
- .then(function (response: string) {
- Assert(response.indexOf("Error " + returnCode) >= 0);
- return BluebirdPromise.resolve();
- }, function (response: any) {
- Assert.equal(response.statusCode, returnCode);
- return BluebirdPromise.resolve();
- });
-}
-
-Then("the following endpoints reply with:", function (dataTable: TableDefinition) {
- const promises = [];
- for (let i = 0; i < dataTable.rows().length; i++) {
- const url: string = (dataTable.hashes() as any)[i].url;
- const method: string = (dataTable.hashes() as any)[i].method;
- const code: number = (dataTable.hashes() as any)[i].code;
- promises.push(endpointReplyWith(this, url, method, code));
- }
- return BluebirdPromise.all(promises);
-});
diff --git a/test/features/step_definitions/forward-headers.ts b/test/features/step_definitions/forward-headers.ts
deleted file mode 100644
index a459a4bfa..000000000
--- a/test/features/step_definitions/forward-headers.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {Then} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import CustomWorld = require("../support/world");
-import Util = require("util");
-import Bluebird = require("bluebird");
-import Request = require("request-promise");
-
-Then("I see header {string} set to {string}",
- { timeout: 5000 },
- function (expectedHeaderName: string, expectedValue: string) {
- return this.driver.findElement(seleniumWebdriver.By.tagName("body")).getText()
- .then(function (txt: string) {
- const expectedLine = Util.format("\"%s\": \"%s\"", expectedHeaderName, expectedValue);
- if (txt.indexOf(expectedLine) > 0)
- return Bluebird.resolve();
- else
- return Bluebird.reject(new Error(Util.format("No such header or with unexpected value.")));
- });
- })
\ No newline at end of file
diff --git a/test/features/step_definitions/hooks.ts b/test/features/step_definitions/hooks.ts
deleted file mode 100644
index fc250a7eb..000000000
--- a/test/features/step_definitions/hooks.ts
+++ /dev/null
@@ -1,173 +0,0 @@
-import {setDefaultTimeout, After, Before, BeforeAll, AfterAll} from "cucumber";
-import fs = require("fs");
-import BluebirdPromise = require("bluebird");
-import ChildProcess = require("child_process");
-import { UserDataStore } from "../../../server/src/lib/storage/UserDataStore";
-import { CollectionFactoryFactory } from "../../../server/src/lib/storage/CollectionFactoryFactory";
-import { IMongoClient } from "../../../server/src/lib/connectors/mongo/IMongoClient";
-import { TotpHandler } from "../../../server/src/lib/authentication/totp/TotpHandler";
-import Speakeasy = require("speakeasy");
-import Request = require("request-promise");
-import { TOTPSecret } from "../../../server/types/TOTPSecret";
-import Environment = require("../../environment");
-import { MongoClient } from "../../../server/src/lib/connectors/mongo/MongoClient";
-import { GlobalLogger } from "../../../server/src/lib/logging/GlobalLogger";
-import { GlobalLoggerStub } from "../../../server/src/lib/logging/GlobalLoggerStub.spec";
-
-setDefaultTimeout(30 * 1000);
-
-const exec = BluebirdPromise.promisify(ChildProcess.exec);
-
-const includes = [
- "docker-compose.yml",
- "example/compose/docker-compose.base.yml",
- "example/compose/mongo/docker-compose.yml",
- "example/compose/redis/docker-compose.yml",
- "example/compose/nginx/backend/docker-compose.yml",
- "example/compose/nginx/portal/docker-compose.yml",
- "example/compose/smtp/docker-compose.yml",
- "example/compose/httpbin/docker-compose.yml",
- "example/compose/ldap/docker-compose.yml"
-]
-
-const environment = new Environment.Environment(includes);
-
-BeforeAll(function() {
- return environment.setup(10000);
-});
-
-AfterAll(function() {
- return environment.cleanup()
-});
-
-Before(function () {
- this.jar = Request.jar();
-})
-
-After(function () {
- return this.driver.quit();
-});
-
-function createRegulationConfiguration(): BluebirdPromise {
- return exec("\
- cat config.template.yml | \
- sed 's/find_time: [0-9]\\+/find_time: 15/' | \
- sed 's/ban_time: [0-9]\\+/ban_time: 4/' > config.test.yml \
- ");
-}
-
-function createInactivityConfiguration(): BluebirdPromise {
- return exec("\
- cat config.template.yml | \
- sed 's/expiration: [0-9]\\+/expiration: 10000/' | \
- sed 's/inactivity: [0-9]\\+/inactivity: 5000/' > config.test.yml \
- ");
-}
-
-function createSingleFactorConfiguration(): BluebirdPromise {
- return exec("\
- cat config.template.yml | \
- sed 's/default_method: two_factor/default_method: single_factor/' > config.test.yml \
- ");
-}
-
-function createCustomTotpIssuerConfiguration(): BluebirdPromise {
- return exec("\
- cat config.template.yml | \
- sed 's/issuer: authelia.com/issuer: custom.com/' > config.test.yml \
- ");
-}
-
-function declareNeedsConfiguration(tag: string, cb: () => BluebirdPromise) {
- Before({ tags: "@needs-" + tag + "-config", timeout: 20 * 1000 }, function () {
- return cb()
- .then(function () {
- return exec("./scripts/example-commit/dc-example.sh -f " +
- "./example/compose/authelia/docker-compose.test.yml up -d authelia &&" +
- " sleep 3");
- })
- });
-
- After({ tags: "@needs-" + tag + "-config", timeout: 20 * 1000 }, function () {
- return exec("rm config.test.yml")
- .then(function () {
- return exec("./scripts/example-commit/dc-example.sh up -d authelia && sleep 3");
- });
- });
-}
-
-declareNeedsConfiguration("regulation", createRegulationConfiguration);
-declareNeedsConfiguration("inactivity", createInactivityConfiguration);
-declareNeedsConfiguration("single_factor", createSingleFactorConfiguration);
-declareNeedsConfiguration("totp_issuer", createCustomTotpIssuerConfiguration);
-
-function registerUser(context: any, username: string) {
- let secret: TOTPSecret;
- const mongoClient = new MongoClient({
- url: "mongodb://localhost:27017",
- database: "authelia",
- auth: {
- username: "authelia",
- password: "authelia"
- }
- }, new GlobalLoggerStub());
- const collectionFactory = CollectionFactoryFactory.createMongo(mongoClient);
- const userDataStore = new UserDataStore(collectionFactory);
-
- const generator = new TotpHandler(Speakeasy);
- secret = generator.generate("user", "authelia.com");
- return userDataStore.saveTOTPSecret(username, secret)
- .then(function () {
- context.totpSecrets["REGISTERED"] = secret.base32;
- return mongoClient.close();
- });
-}
-
-function declareNeedRegisteredUserHooks(username: string) {
- Before({ tags: "@need-registered-user-" + username, timeout: 15 * 1000 }, function () {
- return registerUser(this, username);
- });
-
- After({ tags: "@need-registered-user-" + username, timeout: 15 * 1000 }, function () {
- this.totpSecrets["REGISTERED"] = undefined;
- return BluebirdPromise.resolve();
- });
-}
-
-function needAuthenticatedUser(context: any, username: string): BluebirdPromise {
- return context.visit("https://login.example.com:8080/logout")
- .then(function () {
- return context.visit("https://login.example.com:8080/");
- })
- .then(function () {
- return registerUser(context, username);
- })
- .then(function () {
- return context.loginWithUserPassword(username, "password");
- })
- .then(function () {
- return context.useTotpTokenHandle("REGISTERED");
- })
- .then(function () {
- return context.clickOnButton("Sign in");
- });
-}
-
-function declareNeedAuthenticatedUserHooks(username: string) {
- Before({ tags: "@need-authenticated-user-" + username, timeout: 15 * 1000 }, function () {
- return needAuthenticatedUser(this, username);
- });
-
- After({ tags: "@need-authenticated-user-" + username, timeout: 15 * 1000 }, function () {
- this.totpSecrets["REGISTERED"] = undefined;
- return BluebirdPromise.resolve();
- });
-}
-
-function declareHooksForUser(username: string) {
- declareNeedRegisteredUserHooks(username);
- declareNeedAuthenticatedUserHooks(username);
-}
-
-const users = ["harry", "john", "bob", "blackhat"];
-users.forEach(declareHooksForUser);
diff --git a/test/features/step_definitions/notifications.ts b/test/features/step_definitions/notifications.ts
deleted file mode 100644
index 4bb3ef707..000000000
--- a/test/features/step_definitions/notifications.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import {Then} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-import Fs = require("fs");
-import CustomWorld = require("../support/world");
-
-Then("I get a notification of type {string} with message {string}", { timeout: 10 * 1000 },
-function (notificationType: string, notificationMessage: string) {
- const that = this;
- const notificationEl = this.driver.findElement(seleniumWebdriver.By.className("notification"));
- return this.driver.wait(seleniumWebdriver.until.elementIsVisible(notificationEl), 5000)
- .then(function () {
- return notificationEl.getText();
- })
- .then(function (txt: string) {
- Assert.equal(notificationMessage, txt);
- return notificationEl.getAttribute("class");
- })
- .then(function (classes: string) {
- Assert(classes.indexOf(notificationType) > -1, "Class '" + notificationType + "' not found in notification element.");
- return that.driver.sleep(500);
- });
-});
\ No newline at end of file
diff --git a/test/features/step_definitions/redirection.ts b/test/features/step_definitions/redirection.ts
deleted file mode 100644
index 23797c5ec..000000000
--- a/test/features/step_definitions/redirection.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import {Given, When, Then} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-
-Given("I'm on {string}", function (link: string) {
- return this.driver.get(link);
-});
-
-When("I click on the link to {string}", function (link: string) {
- return this.driver.findElement(seleniumWebdriver.By.linkText(link)).click();
-});
-
-Then("I'm redirected to {string}", function (link: string) {
- return this.waitUntilUrlContains(link);
-});
\ No newline at end of file
diff --git a/test/features/step_definitions/registration.ts b/test/features/step_definitions/registration.ts
deleted file mode 100644
index 7e861c542..000000000
--- a/test/features/step_definitions/registration.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {When} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-
-When("the otpauth url has label {string} and issuer \
-{string}", function (label: string, issuer: string) {
- return this.driver.findElement(seleniumWebdriver.By.id("qrcode"))
- .getAttribute("title")
- .then(function (title: string) {
- const re = `^otpauth://totp/${label}\\?secret=[A-Z0-9]+&issuer=${issuer}$`;
- Assert(new RegExp(re).test(title));
- })
- });
diff --git a/test/features/step_definitions/regulation.ts b/test/features/step_definitions/regulation.ts
deleted file mode 100644
index c2ac46287..000000000
--- a/test/features/step_definitions/regulation.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import {When} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-import Fs = require("fs");
-import CustomWorld = require("../support/world");
-
-When("I wait {int} seconds", { timeout: 10 * 1000 }, function (seconds: number) {
- return this.driver.sleep(seconds * 1000);
-});
diff --git a/test/features/step_definitions/reset-password.ts b/test/features/step_definitions/reset-password.ts
deleted file mode 100644
index d84c4a308..000000000
--- a/test/features/step_definitions/reset-password.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import {When} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-import Fs = require("fs");
-
-When("I click on the link {string}", function (text: string) {
- return this.driver.findElement(seleniumWebdriver.By.linkText(text)).click();
-});
-
-When("I click on the link of the email", function () {
- const that = this;
- return this.retrieveLatestMail()
- .then(function (link: string) {
- return that.driver.get(link);
- });
-});
\ No newline at end of file
diff --git a/test/features/step_definitions/resilience.ts b/test/features/step_definitions/resilience.ts
deleted file mode 100644
index 897cf9626..000000000
--- a/test/features/step_definitions/resilience.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import {When} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-import ChildProcess = require("child_process");
-import BluebirdPromise = require("bluebird");
-
-When(/^the application restarts$/, {timeout: 15 * 1000}, function () {
- const exec = BluebirdPromise.promisify(ChildProcess.exec);
- return exec("./scripts/example-commit/dc-example.sh restart authelia && sleep 3");
-});
\ No newline at end of file
diff --git a/test/features/step_definitions/restrictions.ts b/test/features/step_definitions/restrictions.ts
deleted file mode 100644
index db218ab20..000000000
--- a/test/features/step_definitions/restrictions.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import {Before, When, Then, TableDefinition} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-import Request = require("request-promise");
-import Bluebird = require("bluebird");
-
-Before(function () {
- this.jar = Request.jar();
-});
-
-Then("I get an error {int}", function (code: number) {
- return this.getErrorPage(code);
-});
-
-function requestAndExpectStatusCode(ctx: any, url: string, method: string,
- expectedStatusCode: number) {
- return Request(url, {
- method: method,
- jar: ctx.jar
- })
- .then(function (body: string) {
- return Bluebird.resolve(parseInt(body.match(/Error ([0-9]{3})/)[1]));
- }, function (response: any) {
- return Bluebird.resolve(response.statusCode)
- })
- .then(function (statusCode: number) {
- try {
- Assert.equal(statusCode, expectedStatusCode);
- }
- catch (e) {
- console.log("%s (actual) != %s (expected)", statusCode,
- expectedStatusCode);
- throw e;
- }
- })
-}
-
-Then("I get the following status code when requesting:",
- function (dataTable: TableDefinition) {
- const promises: Bluebird[] = [];
- for (let i = 0; i < dataTable.rows().length; i++) {
- const url: string = (dataTable.hashes() as any)[i].url;
- const method: string = (dataTable.hashes() as any)[i].method;
- const code: number = (dataTable.hashes() as any)[i].code;
- promises.push(requestAndExpectStatusCode(this, url, method, code));
- }
- return Bluebird.all(promises);
- })
-
-When("I post {string} with body:", function (url: string,
- dataTable: TableDefinition) {
- const body = {};
- for (let i = 0; i < dataTable.rows().length; i++) {
- const key = (dataTable.hashes() as any)[i].key;
- const value = (dataTable.hashes() as any)[i].value;
- body[key] = value;
- }
- return Request.post(url, {
- body: body,
- jar: this.jar,
- json: true
- });
-});
\ No newline at end of file
diff --git a/test/features/step_definitions/session-timeout.ts b/test/features/step_definitions/session-timeout.ts
deleted file mode 100644
index bbeb66f7b..000000000
--- a/test/features/step_definitions/session-timeout.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import {When} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-
-When("I sleep for {int} seconds", function (seconds: number) {
- return this.driver.sleep(seconds * 1000);
-});
diff --git a/test/features/step_definitions/single-factor.ts b/test/features/step_definitions/single-factor.ts
deleted file mode 100644
index 222480c70..000000000
--- a/test/features/step_definitions/single-factor.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {When, Then} from "cucumber";
-import seleniumWebdriver = require("selenium-webdriver");
-import Request = require("request-promise");
-import BluebirdPromise = require("bluebird");
-import Util = require("util");
-
-When("I request {string} with username {string}" +
- " and password {string} using basic authentication",
- function (url: string, username: string, password: string) {
- const that = this;
- return Request(url, {
- auth: {
- username: username,
- password: password
- },
- resolveWithFullResponse: true
- })
- .then(function (response: any) {
- that.response = response;
- });
- });
-
-Then("I receive the secret page", function () {
- if (this.response.body.match("This is a very important secret!"))
- return BluebirdPromise.resolve();
- return BluebirdPromise.reject(new Error("Secret page not received."));
-});
-
-Then("I received header {string} set to {string}",
- function (expectedHeaderName: string, expectedValue: string) {
- const expectedLine = Util.format("\"%s\": \"%s\"", expectedHeaderName,
- expectedValue);
- if (this.response.body.indexOf(expectedLine) > 0)
- return BluebirdPromise.resolve();
- return BluebirdPromise.reject(new Error(
- Util.format("No such header or with unexpected value.")));
- });
diff --git a/test/features/support/world.ts b/test/features/support/world.ts
deleted file mode 100644
index 1a27bd250..000000000
--- a/test/features/support/world.ts
+++ /dev/null
@@ -1,183 +0,0 @@
-require("chromedriver");
-import seleniumWebdriver = require("selenium-webdriver");
-import {setWorldConstructor, After} from "cucumber";
-import Fs = require("fs");
-import Speakeasy = require("speakeasy");
-import Assert = require("assert");
-import Request = require("request-promise");
-import BluebirdPromise = require("bluebird");
-
-process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
-
-function CustomWorld() {
- const that = this;
- this.driver = new seleniumWebdriver.Builder()
- .forBrowser("chrome")
- .build();
-
- this.totpSecrets = {};
- this.configuration = {};
-
- this.visit = function (link: string) {
- return this.driver.get(link);
- };
-
- this.setFieldTo = function (fieldName: string, content: string) {
- const that = this;
- return this.driver.findElement(seleniumWebdriver.By.id(fieldName))
- .sendKeys(content);
- };
-
- this.clearField = function (fieldName: string) {
- return this.driver.findElement(seleniumWebdriver.By.id(fieldName)).clear();
- };
-
- this.getErrorPage = function (code: number) {
- const that = this;
- return this.driver.wait(seleniumWebdriver.until.elementLocated(seleniumWebdriver.By.tagName("h1")), 5000)
- .then(function () {
- return that.driver
- .findElement(seleniumWebdriver.By.tagName("h1")).getText();
- })
- .then(function (txt: string) {
- try {
- Assert.equal(txt, "Error " + code);
- } catch (e) {
- console.log(txt);
- throw e;
- }
- })
- };
-
- this.clickOnButton = function (buttonText: string) {
- const that = this;
- return this.driver.wait(seleniumWebdriver.until.elementLocated(seleniumWebdriver.By.tagName("button")), 5000)
- .then(function () {
- return that.driver
- .findElement(seleniumWebdriver.By.tagName("button"))
- .findElement(seleniumWebdriver.By.xpath("//button[contains(.,'" + buttonText + "')]"))
- .click();
- });
- };
-
- this.waitUntilUrlContains = function (url: string) {
- const that = this;
- return this.driver.wait(seleniumWebdriver.until.urlIs(url), 15000)
- .then(function () {return BluebirdPromise.resolve(); }, function (err: Error) {
- that.driver.getCurrentUrl()
- .then(function (current: string) {
- console.error("====> Error due to: %s (current) != %s (expected)", current, url);
- });
- return BluebirdPromise.reject(err);
- });
- };
-
- this.loginWithUserPassword = function (username: string, password: string) {
- return that.driver.wait(seleniumWebdriver.until.elementLocated(seleniumWebdriver.By.id("username")), 5000)
- .then(function () {
- return that.driver.findElement(seleniumWebdriver.By.id("username"))
- .sendKeys(username);
- })
- .then(function () {
- return that.driver.findElement(seleniumWebdriver.By.id("password"))
- .clear();
- })
- .then(function () {
- return that.driver.findElement(seleniumWebdriver.By.id("password"))
- .sendKeys(password);
- })
- .then(function () {
- return that.driver.findElement(seleniumWebdriver.By.tagName("button"))
- .click();
- });
- };
-
- this.retrieveLatestMail = function () {
- return Request({
- method: "GET",
- uri: "http://localhost:8085/messages",
- json: true
- })
- .then(function (data: any) {
- const messageId = data[data.length - 1].id;
- return Request({
- method: "GET",
- uri: `http://localhost:8085/messages/${messageId}.html`
- });
- })
- .then(function (data: any) {
- const regexp = new RegExp(/Continue<\/a>/);
- const match = regexp.exec(data);
- const link = match[1];
- return BluebirdPromise.resolve(link);
- });
- };
-
- this.registerTotpSecret = function (totpSecretHandle: string) {
- return that.driver.wait(seleniumWebdriver.until.elementLocated(seleniumWebdriver.By.className("register-totp")), 5000)
- .then(function () {
- return that.driver.findElement(seleniumWebdriver.By.className("register-totp")).click();
- })
- .then(function () {
- return that.retrieveLatestMail();
- })
- .then(function (url: string) {
- return that.driver.get(url);
- })
- .then(function () {
- return that.driver.wait(seleniumWebdriver.until.elementLocated(seleniumWebdriver.By.id("secret")), 5000);
- })
- .then(function () {
- return that.driver.findElement(seleniumWebdriver.By.id("secret")).getText();
- })
- .then(function (secret: string) {
- that.totpSecrets[totpSecretHandle] = secret;
- });
- };
-
- this.useTotpTokenHandle = function (totpSecretHandle: string) {
- if (!this.totpSecrets[totpSecretHandle])
- throw new Error("No available TOTP token handle " + totpSecretHandle);
-
- const token = Speakeasy.totp({
- secret: this.totpSecrets[totpSecretHandle],
- encoding: "base32"
- });
- return this.useTotpToken(token);
- };
-
- this.useTotpToken = function (totpSecret: string) {
- return that.driver.wait(seleniumWebdriver.until.elementLocated(seleniumWebdriver.By.id("token")), 5000)
- .then(function () {
- return that.driver.findElement(seleniumWebdriver.By.id("token"))
- .sendKeys(totpSecret);
- });
- };
-
- this.registerTotpAndSignin = function (username: string, password: string) {
- const totpHandle = "HANDLE";
- const authUrl = "https://login.example.com:8080/";
- const that = this;
- return this.visit(authUrl)
- .then(function () {
- return that.loginWithUserPassword(username, password);
- })
- .then(function () {
- return that.registerTotpSecret(totpHandle);
- })
- .then(function () {
- return that.visit(authUrl);
- })
- .then(function () {
- return that.loginWithUserPassword(username, password);
- })
- .then(function () {
- return that.useTotpTokenHandle(totpHandle);
- })
- .then(function () {
- return that.clickOnButton("Sign in");
- });
- };
-}
-
-setWorldConstructor(CustomWorld);
diff --git a/test/helpers/ClickOn.ts b/test/helpers/ClickOn.ts
new file mode 100644
index 000000000..09b5935d6
--- /dev/null
+++ b/test/helpers/ClickOn.ts
@@ -0,0 +1,7 @@
+import SeleniumWebdriver, { WebDriver, Locator } from "selenium-webdriver";
+
+export default async function(driver: WebDriver, locator: Locator) {
+ const el = await driver.wait(
+ SeleniumWebdriver.until.elementLocated(locator), 5000);
+ await el.click();
+};
\ No newline at end of file
diff --git a/test/helpers/ClickOnLink.ts b/test/helpers/ClickOnLink.ts
new file mode 100644
index 000000000..ec9d7bedc
--- /dev/null
+++ b/test/helpers/ClickOnLink.ts
@@ -0,0 +1,8 @@
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+
+export default async function(driver: WebDriver, linkText: string) {
+ const element = await driver.wait(
+ SeleniumWebdriver.until.elementLocated(
+ SeleniumWebdriver.By.linkText(linkText)), 5000)
+ await element.click();
+};
\ No newline at end of file
diff --git a/test/helpers/FillField.ts b/test/helpers/FillField.ts
new file mode 100644
index 000000000..80566b7c6
--- /dev/null
+++ b/test/helpers/FillField.ts
@@ -0,0 +1,9 @@
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+
+export default async function(driver: WebDriver, fieldName: string, text: string) {
+ const element = await driver.wait(
+ SeleniumWebdriver.until.elementLocated(
+ SeleniumWebdriver.By.name(fieldName)), 5000)
+
+ await element.sendKeys(text);
+};
\ No newline at end of file
diff --git a/test/helpers/FillLoginPageAndClick.ts b/test/helpers/FillLoginPageAndClick.ts
new file mode 100644
index 000000000..9ffe5d50c
--- /dev/null
+++ b/test/helpers/FillLoginPageAndClick.ts
@@ -0,0 +1,16 @@
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+
+export default async function(
+ driver: WebDriver,
+ username: string,
+ password: string,
+ keepMeLoggedIn: boolean = false) {
+
+ await driver.wait(SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.id("username")), 5000)
+ await driver.findElement(SeleniumWebdriver.By.id("username")).sendKeys(username);
+ await driver.findElement(SeleniumWebdriver.By.id("password")).sendKeys(password);
+ if (keepMeLoggedIn) {
+ await driver.findElement(SeleniumWebdriver.By.id("remember-checkbox")).click();
+ }
+ await driver.findElement(SeleniumWebdriver.By.tagName("button")).click();
+};
\ No newline at end of file
diff --git a/test/helpers/FullLogin.ts b/test/helpers/FullLogin.ts
new file mode 100644
index 000000000..6b88945c8
--- /dev/null
+++ b/test/helpers/FullLogin.ts
@@ -0,0 +1,11 @@
+import FillLoginPageAndClick from "./FillLoginPageAndClick";
+import ValidateTotp from "./ValidateTotp";
+import { WebDriver } from "selenium-webdriver";
+import VisitPageAndWaitUrlIs from "./behaviors/VisitPageAndWaitUrlIs";
+
+// Validate the two factors!
+export default async function(driver: WebDriver, user: string, secret: string, url: string) {
+ await VisitPageAndWaitUrlIs(driver, `https://login.example.com:8080/?rd=${url}`);
+ await FillLoginPageAndClick(driver, user, 'password');
+ await ValidateTotp(driver, secret);
+}
\ No newline at end of file
diff --git a/test/helpers/GetIdentityLink.ts b/test/helpers/GetIdentityLink.ts
new file mode 100644
index 000000000..c0f07b921
--- /dev/null
+++ b/test/helpers/GetIdentityLink.ts
@@ -0,0 +1,32 @@
+import Bluebird = require("bluebird");
+import Fs = require("fs");
+import Request = require("request-promise");
+
+export async function GetLinkFromFile() {
+ const data = await Bluebird.promisify(Fs.readFile)("/tmp/authelia/notification.txt")
+ const regexp = new RegExp(/Link: (.+)/);
+ const match = regexp.exec(data.toLocaleString());
+ if (match == null) {
+ throw new Error('No match');
+ }
+ return match[1];
+};
+
+export async function GetLinkFromEmail() {
+ const data = await Request({
+ method: "GET",
+ uri: "http://localhost:8085/messages",
+ json: true
+ });
+ const messageId = data[data.length - 1].id;
+ const data2 = await Request({
+ method: "GET",
+ uri: `http://localhost:8085/messages/${messageId}.html`
+ });
+ const regexp = new RegExp(/ Continue<\/a>/);
+ const match = regexp.exec(data2);
+ if (match == null) {
+ throw new Error('No match');
+ }
+ return match[1];
+};
\ No newline at end of file
diff --git a/test/helpers/LoginAndRegisterTotp.ts b/test/helpers/LoginAndRegisterTotp.ts
new file mode 100644
index 000000000..f62c4fbba
--- /dev/null
+++ b/test/helpers/LoginAndRegisterTotp.ts
@@ -0,0 +1,10 @@
+import RegisterTotp from './RegisterTotp';
+import LoginAs from './LoginAs';
+import { WebDriver } from 'selenium-webdriver';
+import VerifyIsSecondFactorStage from './assertions/VerifyIsSecondFactorStage';
+
+export default async function(driver: WebDriver, user: string, password: string, email: boolean = false) {
+ await LoginAs(driver, user, password);
+ await VerifyIsSecondFactorStage(driver);
+ return await RegisterTotp(driver, email);
+}
\ No newline at end of file
diff --git a/test/helpers/LoginAs.ts b/test/helpers/LoginAs.ts
new file mode 100644
index 000000000..1894d211f
--- /dev/null
+++ b/test/helpers/LoginAs.ts
@@ -0,0 +1,9 @@
+import FillLoginPageAndClick from './FillLoginPageAndClick';
+import { WebDriver } from "selenium-webdriver";
+import VisitPageAndWaitUrlIs from "./behaviors/VisitPageAndWaitUrlIs";
+
+export default async function(driver: WebDriver, user: string, password: string, targetUrl?: string) {
+ const urlExt = (targetUrl) ? ('rd=' + targetUrl) : '';
+ await VisitPageAndWaitUrlIs(driver, "https://login.example.com:8080/" + urlExt);
+ await FillLoginPageAndClick(driver, user, password);
+}
\ No newline at end of file
diff --git a/test/helpers/Logout.ts b/test/helpers/Logout.ts
new file mode 100644
index 000000000..eccd40f1e
--- /dev/null
+++ b/test/helpers/Logout.ts
@@ -0,0 +1,5 @@
+import { WebDriver } from "selenium-webdriver";
+
+export default async function(driver: WebDriver) {
+ await driver.get(`https://login.example.com:8080/logout`);
+}
\ No newline at end of file
diff --git a/test/helpers/RegisterTotp.ts b/test/helpers/RegisterTotp.ts
new file mode 100644
index 000000000..8c3cc32b7
--- /dev/null
+++ b/test/helpers/RegisterTotp.ts
@@ -0,0 +1,13 @@
+import SeleniumWebdriver = require("selenium-webdriver");
+import {GetLinkFromFile, GetLinkFromEmail} from './GetIdentityLink';
+
+export default async function(driver: SeleniumWebdriver.WebDriver, email?: boolean){
+ await driver.wait(SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.className("register-totp")), 5000)
+ await driver.findElement(SeleniumWebdriver.By.className("register-totp")).click();
+ await driver.sleep(500);
+
+ const link = (email) ? await GetLinkFromEmail() : await GetLinkFromFile();
+ await driver.get(link);
+ await driver.wait(SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.className("base32-secret")), 5000);
+ return await driver.findElement(SeleniumWebdriver.By.className("base32-secret")).getText();
+};
diff --git a/test/helpers/ValidateTotp.ts b/test/helpers/ValidateTotp.ts
new file mode 100644
index 000000000..63a2e107f
--- /dev/null
+++ b/test/helpers/ValidateTotp.ts
@@ -0,0 +1,16 @@
+import Speakeasy from "speakeasy";
+import SeleniumWebdriver, { WebDriver } from 'selenium-webdriver';
+
+export default async function(driver: WebDriver, secret: string) {
+ const token = Speakeasy.totp({
+ secret: secret,
+ encoding: "base32"
+ });
+
+ await driver.wait(SeleniumWebdriver.until.elementLocated(
+ SeleniumWebdriver.By.id("totp-token")), 5000)
+ await driver.findElement(SeleniumWebdriver.By.id("totp-token")).sendKeys(token);
+
+ const el = await driver.wait(SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.id('totp-button')));
+ el.click();
+}
\ No newline at end of file
diff --git a/test/helpers/VisitPage.ts b/test/helpers/VisitPage.ts
new file mode 100644
index 000000000..6a6d781c5
--- /dev/null
+++ b/test/helpers/VisitPage.ts
@@ -0,0 +1,5 @@
+import { WebDriver } from "selenium-webdriver";
+
+export default async function(driver: WebDriver, url: string, timeout: number = 5000) {
+ await driver.get(url);
+}
\ No newline at end of file
diff --git a/test/helpers/access-secret.ts b/test/helpers/access-secret.ts
deleted file mode 100644
index e046bfd8b..000000000
--- a/test/helpers/access-secret.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-import Bluebird = require("bluebird");
-
-export default function(driver: any) {
- return driver.findElement(
- SeleniumWebdriver.By.tagName('h1')).getText()
- .then(function(content: string) {
- return (content.indexOf('Secret') > -1)
- ? Bluebird.resolve()
- : Bluebird.reject(new Error("Secret is not accessible."));
- })
-}
\ No newline at end of file
diff --git a/test/helpers/assertions/VerifyForwardedHeaderIs.ts b/test/helpers/assertions/VerifyForwardedHeaderIs.ts
new file mode 100644
index 000000000..95716d97d
--- /dev/null
+++ b/test/helpers/assertions/VerifyForwardedHeaderIs.ts
@@ -0,0 +1,13 @@
+import SeleniumWebDriver, { WebDriver } from "selenium-webdriver";
+import Util from "util";
+
+export default async function(driver: WebDriver, header: string, expectedValue: string, timeout: number = 5000) {
+ const el = await driver.wait(SeleniumWebDriver.until.elementLocated(
+ SeleniumWebDriver.By.tagName("body")), timeout);
+ const text = await el.getText();
+
+ const expectedLine = Util.format("\"%s\": \"%s\"", header, expectedValue);
+ if (text.indexOf(expectedLine) < 0) {
+ throw new Error("Header not found.");
+ }
+}
\ No newline at end of file
diff --git a/test/helpers/assertions/VerifyIsAlreadyAuthenticatedStage.ts b/test/helpers/assertions/VerifyIsAlreadyAuthenticatedStage.ts
new file mode 100644
index 000000000..e6e0d07f2
--- /dev/null
+++ b/test/helpers/assertions/VerifyIsAlreadyAuthenticatedStage.ts
@@ -0,0 +1,6 @@
+import SeleniumWebDriver, { WebDriver } from "selenium-webdriver";
+
+export default async function(driver: WebDriver, timeout: number = 5000) {
+ await driver.wait(SeleniumWebDriver.until.elementLocated(
+ SeleniumWebDriver.By.className('already-authenticated-step')), timeout);
+}
\ No newline at end of file
diff --git a/test/helpers/assertions/VerifyIsSecondFactorStage.ts b/test/helpers/assertions/VerifyIsSecondFactorStage.ts
new file mode 100644
index 000000000..1d7f22a7f
--- /dev/null
+++ b/test/helpers/assertions/VerifyIsSecondFactorStage.ts
@@ -0,0 +1,6 @@
+import SeleniumWebDriver, { WebDriver } from "selenium-webdriver";
+
+export default async function(driver: WebDriver, timeout: number = 5000) {
+ await driver.wait(SeleniumWebDriver.until.elementLocated(
+ SeleniumWebDriver.By.className('second-factor-step')), timeout);
+}
\ No newline at end of file
diff --git a/test/helpers/assertions/VerifyNotificationDisplayed.ts b/test/helpers/assertions/VerifyNotificationDisplayed.ts
new file mode 100644
index 000000000..52bda174f
--- /dev/null
+++ b/test/helpers/assertions/VerifyNotificationDisplayed.ts
@@ -0,0 +1,10 @@
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+import Assert = require("assert");
+
+export default async function(driver: WebDriver, message: string, timeout: number = 5000) {
+ await driver.wait(SeleniumWebdriver.until.elementLocated(
+ SeleniumWebdriver.By.className("notification")), timeout)
+ const notificationEl = driver.findElement(SeleniumWebdriver.By.className("notification"));
+ const txt = await notificationEl.getText();
+ Assert.equal(message, txt);
+}
\ No newline at end of file
diff --git a/test/helpers/assertions/VerifySecretObserved.ts b/test/helpers/assertions/VerifySecretObserved.ts
new file mode 100644
index 000000000..583c37c88
--- /dev/null
+++ b/test/helpers/assertions/VerifySecretObserved.ts
@@ -0,0 +1,10 @@
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+
+// Verify if the current page contains "This is a very important secret!".
+export default async function(driver: WebDriver, timeout: number = 5000) {
+ const el = await driver.wait(
+ SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.tagName('body')), timeout);
+
+ await driver.wait(
+ SeleniumWebdriver.until.elementTextContains(el, "This is a very important secret!"), timeout);
+}
\ No newline at end of file
diff --git a/test/helpers/assertions/VerifyUrlIs.ts b/test/helpers/assertions/VerifyUrlIs.ts
new file mode 100644
index 000000000..136a5719d
--- /dev/null
+++ b/test/helpers/assertions/VerifyUrlIs.ts
@@ -0,0 +1,5 @@
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+
+export default async function(driver: WebDriver, url: string, timeout: number = 5000) {
+ await driver.wait(SeleniumWebdriver.until.urlIs(url), timeout);
+}
\ No newline at end of file
diff --git a/test/helpers/behaviors/LoginOneFactor.ts b/test/helpers/behaviors/LoginOneFactor.ts
new file mode 100644
index 000000000..ead8e13fc
--- /dev/null
+++ b/test/helpers/behaviors/LoginOneFactor.ts
@@ -0,0 +1,15 @@
+import { WebDriver } from "selenium-webdriver";
+import FillLoginPageAndClick from "../FillLoginPageAndClick";
+import VerifyUrlIs from "../assertions/VerifyUrlIs";
+import VisitPageAndWaitUrlIs from "./VisitPageAndWaitUrlIs";
+
+export default async function(
+ driver: WebDriver,
+ username: string,
+ password: string,
+ targetUrl: string) {
+
+ await VisitPageAndWaitUrlIs(driver, `https://login.example.com:8080/?rd=${targetUrl}`);
+ await FillLoginPageAndClick(driver, username, password);
+ await VerifyUrlIs(driver, targetUrl);
+};
\ No newline at end of file
diff --git a/test/helpers/behaviors/RegisterAndLoginTwoFactor.ts b/test/helpers/behaviors/RegisterAndLoginTwoFactor.ts
new file mode 100644
index 000000000..49868673c
--- /dev/null
+++ b/test/helpers/behaviors/RegisterAndLoginTwoFactor.ts
@@ -0,0 +1,17 @@
+import { WebDriver } from "selenium-webdriver";
+import LoginAndRegisterTotp from "../LoginAndRegisterTotp";
+import FullLogin from "../FullLogin";
+import VerifyUrlIs from "../assertions/VerifyUrlIs";
+
+export default async function(
+ driver: WebDriver,
+ username: string,
+ password: string,
+ email: boolean = false,
+ targetUrl: string = "https://login.example.com:8080/") {
+
+ const secret = await LoginAndRegisterTotp(driver, username, password, email);
+ await FullLogin(driver, username, secret, targetUrl);
+ await VerifyUrlIs(driver, targetUrl);
+ return secret;
+};
\ No newline at end of file
diff --git a/test/helpers/behaviors/VisitPageAndWaitUrlIs.ts b/test/helpers/behaviors/VisitPageAndWaitUrlIs.ts
new file mode 100644
index 000000000..6ff8229aa
--- /dev/null
+++ b/test/helpers/behaviors/VisitPageAndWaitUrlIs.ts
@@ -0,0 +1,8 @@
+import { WebDriver } from "selenium-webdriver";
+import VerifyUrlIs from "../assertions/VerifyUrlIs";
+import VisitPage from "../VisitPage";
+
+export default async function(driver: WebDriver, url: string, timeout: number = 5000) {
+ await VisitPage(driver, url);
+ await VerifyUrlIs(driver, url);
+}
\ No newline at end of file
diff --git a/test/helpers/click-on-button.ts b/test/helpers/click-on-button.ts
deleted file mode 100644
index e9b6fd448..000000000
--- a/test/helpers/click-on-button.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-
-export default function(driver: any, buttonText: string) {
- return driver.wait(
- SeleniumWebdriver.until.elementLocated(
- SeleniumWebdriver.By.tagName("button")), 5000)
- .then(function () {
- return driver
- .findElement(SeleniumWebdriver.By.tagName("button"))
- .findElement(SeleniumWebdriver.By.xpath("//button[contains(.,'" + buttonText + "')]"))
- .click();
- });
-};
\ No newline at end of file
diff --git a/test/helpers/click-on-link.ts b/test/helpers/click-on-link.ts
deleted file mode 100644
index 97f791022..000000000
--- a/test/helpers/click-on-link.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-
-export default function(driver: any, linkText: string) {
- return driver.wait(
- SeleniumWebdriver.until.elementLocated(
- SeleniumWebdriver.By.linkText(linkText)), 5000)
- .then(function (el) {
- return el.click();
- });
-};
\ No newline at end of file
diff --git a/test/helpers/context/AutheliaServer.ts b/test/helpers/context/AutheliaServer.ts
new file mode 100644
index 000000000..e14eedeb1
--- /dev/null
+++ b/test/helpers/context/AutheliaServer.ts
@@ -0,0 +1,26 @@
+import fs from 'fs';
+import AutheliaServerWithHotReload from "./AutheliaServerWithHotReload";
+import AutheliaServerInterface from './AutheliaServerInterface';
+import AutheliaServerFromDist from './AutheliaServerFromDist';
+
+class AutheliaServer implements AutheliaServerInterface {
+ private runnerImpl: AutheliaServerInterface;
+
+ constructor(configPath: string) {
+ if (fs.existsSync('.suite')) {
+ this.runnerImpl = new AutheliaServerWithHotReload(configPath);
+ } else {
+ this.runnerImpl = new AutheliaServerFromDist(configPath, true);
+ }
+ }
+
+ async start() {
+ await this.runnerImpl.start();
+ }
+
+ async stop() {
+ await this.runnerImpl.stop();
+ }
+}
+
+export default AutheliaServer;
\ No newline at end of file
diff --git a/test/helpers/context/AutheliaServerFromDist.ts b/test/helpers/context/AutheliaServerFromDist.ts
new file mode 100644
index 000000000..3a347b37f
--- /dev/null
+++ b/test/helpers/context/AutheliaServerFromDist.ts
@@ -0,0 +1,39 @@
+import AutheliaServerInterface from './AutheliaServerInterface';
+import ChildProcess from 'child_process';
+import treeKill = require('tree-kill');
+import fs from 'fs';
+
+class AutheliaServerFromDist implements AutheliaServerInterface {
+ private configPath: string;
+ private logInFile: boolean;
+ private serverProcess: ChildProcess.ChildProcess | undefined;
+
+ constructor(configPath: string, logInFile: boolean = false) {
+ this.configPath = configPath;
+ this.logInFile = logInFile;
+ }
+
+ async start() {
+ this.serverProcess = ChildProcess.spawn('./scripts/authelia-scripts serve ' + this.configPath, {
+ shell: true
+ } as any);
+ if (this.logInFile) {
+ var logStream = fs.createWriteStream('/tmp/authelia-server.log', {flags: 'a'});
+ this.serverProcess.stdout.pipe(logStream);
+ this.serverProcess.stderr.pipe(logStream);
+ } else {
+ this.serverProcess.stdout.pipe(process.stdout);
+ this.serverProcess.stderr.pipe(process.stderr);
+ }
+ this.serverProcess.on('exit', (statusCode) => {
+ console.log('Authelia server exited with code ' + statusCode);
+ })
+ }
+
+ async stop() {
+ if (!this.serverProcess) return;
+ treeKill(this.serverProcess.pid, 'SIGKILL');
+ }
+}
+
+export default AutheliaServerFromDist;
\ No newline at end of file
diff --git a/test/helpers/context/AutheliaServerInterface.ts b/test/helpers/context/AutheliaServerInterface.ts
new file mode 100644
index 000000000..5ac11a54a
--- /dev/null
+++ b/test/helpers/context/AutheliaServerInterface.ts
@@ -0,0 +1,7 @@
+
+interface AutheliaServerInterface {
+ start(): Promise;
+ stop(): Promise
+}
+
+export default AutheliaServerInterface;
\ No newline at end of file
diff --git a/test/helpers/context/AutheliaServerWithHotReload.ts b/test/helpers/context/AutheliaServerWithHotReload.ts
new file mode 100644
index 000000000..7a0ec8fe0
--- /dev/null
+++ b/test/helpers/context/AutheliaServerWithHotReload.ts
@@ -0,0 +1,149 @@
+import Chokidar from 'chokidar';
+import fs from 'fs';
+import { exec } from '../utils/exec';
+import ChildProcess from 'child_process';
+import kill from 'tree-kill';
+import AutheliaServerInterface from './AutheliaServerInterface';
+
+class AutheliaServerWithHotReload implements AutheliaServerInterface {
+ private watcher: Chokidar.FSWatcher;
+ private configPath: string;
+ private AUTHELIA_INTERRUPT_FILENAME = '.authelia-interrupt';
+ private serverProcess: ChildProcess.ChildProcess | undefined;
+ private clientProcess: ChildProcess.ChildProcess | undefined;
+
+ constructor(configPath: string) {
+ this.configPath = configPath;
+ this.watcher = Chokidar.watch(['server', 'shared/**/*.ts', 'node_modules',
+ this.AUTHELIA_INTERRUPT_FILENAME, configPath], {
+ persistent: true,
+ ignoreInitial: true,
+ });
+ }
+
+ private async startServer() {
+ await exec('./node_modules/.bin/tslint -c server/tslint.json -p server/tsconfig.json')
+ this.serverProcess = ChildProcess.spawn('./node_modules/.bin/ts-node',
+ ['-P', './server/tsconfig.json', './server/src/index.ts', this.configPath], {
+ env: {...process.env},
+ });
+ this.serverProcess.stdout.pipe(process.stdout);
+ this.serverProcess.stderr.pipe(process.stderr);
+ this.serverProcess.on('exit', () => {
+ console.log('Authelia server exited.');
+ if (!this.serverProcess) return;
+ this.serverProcess.removeAllListeners();
+ this.serverProcess = undefined;
+ });
+ }
+
+ private killServer() {
+ return new Promise((resolve, reject) => {
+ if (this.serverProcess) {
+ try {
+ const timeout = setTimeout(
+ () => reject(new Error('Server not killed after timeout.')), 10000);
+ this.serverProcess.on('exit', () => {
+ clearTimeout(timeout);
+ resolve();
+ });
+ kill(this.serverProcess.pid, 'SIGKILL');
+ } catch (e) {
+ reject(e);
+ }
+ } else {
+ resolve();
+ }
+ });
+ }
+
+ private async startClient() {
+ this.clientProcess = ChildProcess.spawn('npm', ['run', 'start'], {
+ cwd: './client',
+ env: {
+ ...process.env,
+ 'BROWSER': 'none'
+ }
+ });
+ this.clientProcess.stdout.pipe(process.stdout);
+ this.clientProcess.stderr.pipe(process.stderr);
+ this.clientProcess.on('exit', () => {
+ console.log('Authelia client exited.');
+ if (!this.clientProcess) return;
+ this.clientProcess.removeAllListeners();
+ this.clientProcess = undefined;
+ })
+ }
+
+ private killClient() {
+ return new Promise((resolve, reject) => {
+ if (this.clientProcess) {
+ try {
+ const timeout = setTimeout(
+ () => reject(new Error('Server not killed after timeout.')), 10000);
+ this.clientProcess.on('exit', () => {
+ clearTimeout(timeout);
+ resolve();
+ });
+ kill(this.clientProcess.pid, 'SIGKILL');
+ } catch (e) {
+ reject(e);
+ }
+ } else {
+ resolve();
+ }
+ });
+ }
+
+ private async generateConfigurationSchema() {
+ await exec('./node_modules/.bin/typescript-json-schema -o ' +
+ 'server/src/lib/configuration/Configuration.schema.json ' +
+ '--strictNullChecks --required server/tsconfig.json Configuration');
+ }
+
+ /**
+ * Handle file changes.
+ * @param path The path of the file that has been changed.
+ */
+ private async onFileChanged(path: string) {
+ console.log(`File ${path} has been changed, reloading...`);
+ if (path.startsWith('server/src/lib/configuration/schema')) {
+ console.log('Schema needs to be regenerated.');
+ await this.generateConfigurationSchema();
+ }
+ else if (path === this.AUTHELIA_INTERRUPT_FILENAME) {
+ if (fs.existsSync(path)) {
+ console.log('Authelia is being interrupted.');
+ await this.killServer();
+ } else {
+ console.log('Authelia is restarting.');
+ await this.startServer();
+ }
+ return;
+ }
+ await this.killServer();
+ await this.startServer();
+ }
+
+ async start() {
+ if (fs.existsSync(this.AUTHELIA_INTERRUPT_FILENAME)) {
+ console.log('Authelia is interrupted. Consider removing ' + this.AUTHELIA_INTERRUPT_FILENAME + ' if it\'s not expected.');
+ return;
+ }
+
+ console.log('Start watching file changes...');
+ this.watcher.on('add', (p) => this.onFileChanged(p));
+ this.watcher.on('unlink', (p) => this.onFileChanged(p));
+ this.watcher.on('change', (p) => this.onFileChanged(p));
+
+ this.startClient();
+ this.startServer();
+ }
+
+ async stop() {
+ await this.killClient();
+ await this.killServer();
+ }
+}
+
+export default AutheliaServerWithHotReload;
\ No newline at end of file
diff --git a/test/helpers/context/AutheliaSuite.ts b/test/helpers/context/AutheliaSuite.ts
new file mode 100644
index 000000000..e883ff024
--- /dev/null
+++ b/test/helpers/context/AutheliaSuite.ts
@@ -0,0 +1,33 @@
+import WithEnvironment from "./WithEnvironment";
+import fs from 'fs';
+
+interface AutheliaSuiteType {
+ (suitePath: string, cb: (this: Mocha.ISuiteCallbackContext) => void): Mocha.ISuite;
+ only: (suitePath: string, cb: (this: Mocha.ISuiteCallbackContext) => void) => Mocha.ISuite;
+}
+
+function AutheliaSuiteBase(suitePath: string,
+ cb: (this: Mocha.ISuiteCallbackContext) => void,
+ context: (description: string, ctx: (this: Mocha.ISuiteCallbackContext) => void) => Mocha.ISuite) {
+ const suite = suitePath.split('/').slice(-1)[0];
+ return context('Suite: ' + suite, function(this: Mocha.ISuiteCallbackContext) {
+ if (!fs.existsSync('.suite')) {
+ WithEnvironment(suite);
+ }
+
+ cb.call(this);
+ });
+}
+
+const AutheliaSuite = function(suitePath: string,
+ cb: (this: Mocha.ISuiteCallbackContext) => void) {
+ return AutheliaSuiteBase(suitePath, cb, describe);
+}
+
+
+AutheliaSuite.only = function(suitePath: string,
+ cb: (this: Mocha.ISuiteCallbackContext) => void) {
+ return AutheliaSuiteBase(suitePath, cb, describe.only);
+}
+
+export default AutheliaSuite as AutheliaSuiteType;
\ No newline at end of file
diff --git a/test/helpers/context/DockerCompose.ts b/test/helpers/context/DockerCompose.ts
new file mode 100644
index 000000000..ddf6c963a
--- /dev/null
+++ b/test/helpers/context/DockerCompose.ts
@@ -0,0 +1,28 @@
+import { exec } from '../../helpers/utils/exec';
+import { execSync } from 'child_process';
+
+class DockerCompose {
+ private commandPrefix: string;
+
+ constructor(composeFiles: string[]) {
+ this.commandPrefix = 'docker-compose ' + composeFiles.map((f) => '-f ' + f).join(' ');
+ }
+
+ async up() {
+ return await exec(this.commandPrefix + ' up -d');
+ }
+
+ async down() {
+ return await exec(this.commandPrefix + ' down');
+ }
+
+ async restart(service: string) {
+ return await exec(this.commandPrefix + ' restart ' + service);
+ }
+
+ async ps() {
+ return Promise.resolve(execSync(this.commandPrefix + ' ps').toString('utf-8'));
+ }
+}
+
+export default DockerCompose;
\ No newline at end of file
diff --git a/test/helpers/context/DockerEnvironment.ts b/test/helpers/context/DockerEnvironment.ts
new file mode 100644
index 000000000..5d3f1e764
--- /dev/null
+++ b/test/helpers/context/DockerEnvironment.ts
@@ -0,0 +1,19 @@
+import DockerCompose from "./DockerCompose";
+
+class DockerEnvironment {
+ private dockerCompose: DockerCompose;
+
+ constructor(composeFiles: string[]) {
+ this.dockerCompose = new DockerCompose(composeFiles);
+ }
+
+ async start() {
+ await this.dockerCompose.up();
+ }
+
+ async stop() {
+ await this.dockerCompose.down();
+ }
+}
+
+export default DockerEnvironment;
\ No newline at end of file
diff --git a/test/helpers/context/WithDriver.ts b/test/helpers/context/WithDriver.ts
new file mode 100644
index 000000000..adb4c7f0c
--- /dev/null
+++ b/test/helpers/context/WithDriver.ts
@@ -0,0 +1,39 @@
+require("chromedriver");
+import chrome from 'selenium-webdriver/chrome';
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+
+export async function StartDriver() {
+ let options = new chrome.Options();
+
+ if (process.env['HEADLESS'] == 'y') {
+ options = options.headless();
+ }
+
+ const driver = new SeleniumWebdriver.Builder()
+ .forBrowser("chrome")
+ .setChromeOptions(options)
+ .build();
+ return driver;
+}
+
+export async function StopDriver(driver: WebDriver) {
+ return await driver.quit();
+}
+
+export default function(forEach: boolean = false) {
+ if (forEach) {
+ beforeEach(async function() {
+ this.driver = await StartDriver();
+ });
+ afterEach(async function() {
+ await StopDriver(this.driver);
+ });
+ } else {
+ before(async function() {
+ this.driver = await StartDriver();
+ });
+ after(async function() {
+ await StopDriver(this.driver)
+ });
+ }
+}
\ No newline at end of file
diff --git a/test/helpers/context/WithEnvironment.ts b/test/helpers/context/WithEnvironment.ts
new file mode 100644
index 000000000..937871158
--- /dev/null
+++ b/test/helpers/context/WithEnvironment.ts
@@ -0,0 +1,22 @@
+import sleep from '../utils/sleep';
+
+export default function WithEnvironment(suite: string, waitTimeout: number = 5000) {
+ var { setup, teardown } = require(`../../suites/${suite}/environment`);
+
+ before(async function() {
+ this.timeout(30000);
+
+ console.log('Preparing environment...');
+ await setup();
+ await sleep(waitTimeout);
+ });
+
+ after(async function() {
+ this.timeout(30000);
+
+ console.log('Stopping environment...');
+ await teardown();
+
+ await sleep(waitTimeout);
+ });
+}
\ No newline at end of file
diff --git a/test/helpers/fill-field.ts b/test/helpers/fill-field.ts
deleted file mode 100644
index 0e2b6b9d6..000000000
--- a/test/helpers/fill-field.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-
-export default function(driver: any, fieldName: string, text: string) {
- return driver.wait(
- SeleniumWebdriver.until.elementLocated(
- SeleniumWebdriver.By.name(fieldName)), 5000)
- .then(function (el) {
- return el.sendKeys(text);
- });
-};
\ No newline at end of file
diff --git a/test/helpers/fill-login-page-and-click.ts b/test/helpers/fill-login-page-and-click.ts
deleted file mode 100644
index 11f16b7f6..000000000
--- a/test/helpers/fill-login-page-and-click.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import Bluebird = require("bluebird");
-import SeleniumWebdriver = require("selenium-webdriver");
-
-export default function(
- driver: any,
- username: string,
- password: string,
- keepMeLoggedIn: boolean = false) {
- return driver.wait(SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.id("username")), 5000)
- .then(() => {
- return driver.findElement(SeleniumWebdriver.By.id("username"))
- .sendKeys(username);
- })
- .then(() => {
- return driver.findElement(SeleniumWebdriver.By.id("password"))
- .sendKeys(password);
- })
- .then(() => {
- if (keepMeLoggedIn) {
- return driver.findElement(SeleniumWebdriver.By.id("keep_me_logged_in"))
- .click();
- }
- return Bluebird.resolve();
- })
- .then(() => {
- return driver.findElement(SeleniumWebdriver.By.tagName("button"))
- .click();
- });
-};
\ No newline at end of file
diff --git a/test/helpers/full-login.ts b/test/helpers/full-login.ts
deleted file mode 100644
index 5cab80c89..000000000
--- a/test/helpers/full-login.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import VisitPage from "./visit-page";
-import FillLoginPageWithUserAndPasswordAndClick from "./fill-login-page-and-click";
-import ValidateTotp from "./validate-totp";
-import WaitRedirected from "./wait-redirected";
-
-// Validate the two factors!
-export default function(driver: any, url: string, user: string, secret: string) {
- return VisitPage(driver, `https://login.example.com:8080/?rd=${url}`)
- .then(() => FillLoginPageWithUserAndPasswordAndClick(driver, user, 'password'))
- .then(() => ValidateTotp(driver, secret))
- .then(() => WaitRedirected(driver, "https://admin.example.com:8080/secret.html"));
-}
\ No newline at end of file
diff --git a/test/helpers/get-identity-link.ts b/test/helpers/get-identity-link.ts
deleted file mode 100644
index 06381b132..000000000
--- a/test/helpers/get-identity-link.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import Bluebird = require("bluebird");
-import Fs = require("fs");
-import Request = require("request-promise");
-
-export function GetLinkFromFile(): Bluebird {
- return Bluebird.promisify(Fs.readFile)("/tmp/authelia/notification.txt")
- .then(function (data: any) {
- const regexp = new RegExp(/Link: (.+)/);
- const match = regexp.exec(data);
- const link = match[1];
- return Bluebird.resolve(link);
- });
-};
-
-export function GetLinkFromEmail(): Bluebird {
- return Request({
- method: "GET",
- uri: "http://localhost:8085/messages",
- json: true
- })
- .then(function (data: any) {
- const messageId = data[data.length - 1].id;
- return Request({
- method: "GET",
- uri: `http://localhost:8085/messages/${messageId}.html`
- });
- })
- .then(function (data: any) {
- const regexp = new RegExp(/Continue<\/a>/);
- const match = regexp.exec(data);
- const link = match[1];
- return Bluebird.resolve(link);
- });
-};
\ No newline at end of file
diff --git a/test/helpers/login-and-register-totp.ts b/test/helpers/login-and-register-totp.ts
deleted file mode 100644
index 8837254e0..000000000
--- a/test/helpers/login-and-register-totp.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import RegisterTotp from './register-totp';
-import WaitRedirected from './wait-redirected';
-import LoginAs from './login-as';
-import Bluebird = require("bluebird");
-
-export default function(driver: any, user: string, email?: boolean): Bluebird {
- return LoginAs(driver, user)
- .then(() => WaitRedirected(driver, "https://login.example.com:8080/secondfactor"))
- .then(() => RegisterTotp(driver, email));
-}
\ No newline at end of file
diff --git a/test/helpers/login-as.ts b/test/helpers/login-as.ts
deleted file mode 100644
index ebb6707f8..000000000
--- a/test/helpers/login-as.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import VisitPage from "./visit-page";
-import FillLoginPageAndClick from './fill-login-page-and-click';
-
-export default function(driver: any, user: string) {
- return VisitPage(driver, "https://login.example.com:8080/")
- .then(() => FillLoginPageAndClick(driver, user, "password"));
-}
\ No newline at end of file
diff --git a/test/helpers/register-totp.ts b/test/helpers/register-totp.ts
deleted file mode 100644
index 2d84fdf67..000000000
--- a/test/helpers/register-totp.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import Bluebird = require("bluebird");
-import SeleniumWebdriver = require("selenium-webdriver");
-import {GetLinkFromFile, GetLinkFromEmail} from '../helpers/get-identity-link';
-
-export default function(driver: any, email?: boolean): Bluebird {
- return driver.wait(SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.className("register-totp")), 5000)
- .then(function () {
- return driver.findElement(SeleniumWebdriver.By.className("register-totp")).click();
- })
- .then(function () {
- if(email) return GetLinkFromEmail();
- else return GetLinkFromFile();
- })
- .then(function (link: string) {
- return driver.get(link);
- })
- .then(function () {
- return driver.wait(SeleniumWebdriver.until.elementLocated(SeleniumWebdriver.By.id("secret")), 5000);
- })
- .then(function () {
- return driver.findElement(SeleniumWebdriver.By.id("secret")).getText();
- });
-};
diff --git a/test/helpers/see-notification.ts b/test/helpers/see-notification.ts
deleted file mode 100644
index b9fa6d8e7..000000000
--- a/test/helpers/see-notification.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-import Assert = require("assert");
-
-export default function(driver: any, type: string, message: string) {
- const notificationEl = driver.findElement(SeleniumWebdriver.By.className("notification"));
- return driver.wait(SeleniumWebdriver.until.elementIsVisible(notificationEl), 5000)
- .then(function () {
- return notificationEl.getText();
- })
- .then(function (txt: string) {
- Assert.equal(message, txt);
- return notificationEl.getAttribute("class");
- })
- .then(function (classes: string) {
- Assert(classes.indexOf(type) > -1, "Class '" + type + "' not found in notification element.");
- return driver.sleep(500);
- });
-}
\ No newline at end of file
diff --git a/test/helpers/utils/Requests.ts b/test/helpers/utils/Requests.ts
new file mode 100644
index 000000000..5b5a1e613
--- /dev/null
+++ b/test/helpers/utils/Requests.ts
@@ -0,0 +1,60 @@
+import Request from 'request-promise';
+import Fetch from 'node-fetch';
+import Assert from 'assert';
+import { StatusCodeError } from 'request-promise/errors';
+
+process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
+
+export async function GET_ExpectError(url: string, statusCode: number) {
+ try {
+ await Request.get(url, {
+ json: true,
+ rejectUnauthorized: false,
+ });
+ throw new Error('No response');
+ } catch (e) {
+ if (e instanceof StatusCodeError) {
+ Assert.equal(e.statusCode, statusCode);
+ return;
+ }
+ }
+ return;
+}
+
+// Sent a GET request to the url and expect a 401
+export async function GET_Expect401(url: string) {
+ return await GET_ExpectError(url, 401);
+}
+
+export async function GET_Expect502(url: string) {
+ return await GET_ExpectError(url, 502);
+}
+
+export async function POST_Expect401(url: string, body?: any) {
+ try {
+ await Request.post(url, {
+ json: true,
+ rejectUnauthorized: false,
+ body
+ });
+ throw new Error('No response');
+ } catch (e) {
+ if (e instanceof StatusCodeError) {
+ Assert.equal(e.statusCode, 401);
+ return;
+ }
+ }
+ return;
+}
+
+export async function GET_ExpectRedirect(url: string, redirectionUrl: string) {
+ const response = await Fetch(url, {redirect: 'manual'});
+
+ if (response.status == 302) {
+ const body = await response.text();
+ Assert.equal(body, 'Found. Redirecting to ' + redirectionUrl);
+ return;
+ }
+
+ throw new Error('No redirect');
+}
\ No newline at end of file
diff --git a/test/helpers/utils/exec.ts b/test/helpers/utils/exec.ts
new file mode 100644
index 000000000..5fe77cc4e
--- /dev/null
+++ b/test/helpers/utils/exec.ts
@@ -0,0 +1,20 @@
+var spawn = require('child_process').spawn;
+
+
+export function exec(command: string): Promise {
+ return new Promise((resolve, reject) => {
+ const cmd = spawn(command, {
+ shell: true,
+ });
+
+ cmd.stdout.pipe(process.stdout);
+ cmd.stderr.pipe(process.stderr);
+ cmd.on('exit', (statusCode: number) => {
+ if (statusCode == 0) {
+ resolve();
+ return;
+ }
+ reject(new Error('Exited with status code ' + statusCode));
+ });
+ });
+}
diff --git a/test/helpers/utils/sleep.ts b/test/helpers/utils/sleep.ts
new file mode 100644
index 000000000..d8321ed06
--- /dev/null
+++ b/test/helpers/utils/sleep.ts
@@ -0,0 +1,5 @@
+
+
+export default function sleep(ms: number) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+}
diff --git a/test/helpers/validate-totp.ts b/test/helpers/validate-totp.ts
deleted file mode 100644
index 7ae408c69..000000000
--- a/test/helpers/validate-totp.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import Speakeasy = require("speakeasy");
-import SeleniumWebdriver = require("selenium-webdriver");
-import ClickOnButton from "./click-on-button";
-
-export default function(driver: any, secret: string) {
- const token = Speakeasy.totp({
- secret: secret,
- encoding: "base32"
- });
- return driver.wait(
- SeleniumWebdriver.until.elementLocated(
- SeleniumWebdriver.By.id("token")), 5000)
- .then(function () {
- return driver.findElement(SeleniumWebdriver.By.id("token"))
- .sendKeys(token);
- })
- .then(function () {
- return ClickOnButton(driver, "Sign in");
- });
-}
\ No newline at end of file
diff --git a/test/helpers/visit-page.ts b/test/helpers/visit-page.ts
deleted file mode 100644
index b40b6b565..000000000
--- a/test/helpers/visit-page.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-
-export default function(driver: any, url: string, timeout: number = 5000) {
- return driver.get(url)
- .then(function () {
- return driver.wait(SeleniumWebdriver.until.urlIs(url), timeout);
- });
-}
\ No newline at end of file
diff --git a/test/helpers/wait-redirected.ts b/test/helpers/wait-redirected.ts
deleted file mode 100644
index 556993988..000000000
--- a/test/helpers/wait-redirected.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-
-export default function(driver: any, url: string, timeout: number = 5000) {
- return driver.wait(SeleniumWebdriver.until.urlIs(url), timeout);
-}
\ No newline at end of file
diff --git a/test/helpers/with-driver.ts b/test/helpers/with-driver.ts
deleted file mode 100644
index c2775a037..000000000
--- a/test/helpers/with-driver.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-
-export default function() {
- before(function() {
- this.driver = new SeleniumWebdriver.Builder()
- .forBrowser("chrome")
- .build();
- })
-
- after(function() {
- this.driver.quit();
- });
-}
\ No newline at end of file
diff --git a/test/inactivity/00-suite.ts b/test/inactivity/00-suite.ts
deleted file mode 100644
index 0bb67bf6a..000000000
--- a/test/inactivity/00-suite.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-require("chromedriver");
-import Bluebird = require("bluebird");
-import Configuration = require("../configuration");
-import Environment = require("../environment");
-
-import ChildProcess = require('child_process');
-const execAsync = Bluebird.promisify(ChildProcess.exec);
-
-const includes = [
- "docker-compose.test.yml",
- "example/compose/docker-compose.base.yml",
- "example/compose/nginx/minimal/docker-compose.yml",
- "example/compose/smtp/docker-compose.yml",
-]
-
-
-before(function() {
- this.timeout(20000);
- this.environment = new Environment.Environment(includes);
- this.configuration = new Configuration.Configuration();
-
- return this.configuration.setup(
- "config.minimal.yml",
- "config.test.yml",
- conf => {
- conf.session.inactivity = 2000;
- })
- .then(() => execAsync("cp users_database.yml users_database.test.yml"))
- .then(() => this.environment.setup(2000));
-});
-
-after(function() {
- this.timeout(30000);
- return this.configuration.cleanup()
- .then(() => execAsync("rm users_database.test.yml"))
- .then(() => this.environment.cleanup());
-});
\ No newline at end of file
diff --git a/test/inactivity/keep_me_logged_in.ts b/test/inactivity/keep_me_logged_in.ts
deleted file mode 100644
index edbd4437f..000000000
--- a/test/inactivity/keep_me_logged_in.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import Bluebird = require("bluebird");
-import LoginAndRegisterTotp from "../helpers/login-and-register-totp";
-import VisitPage from "../helpers/visit-page";
-import FillLoginPageWithUserAndPasswordAndClick from "../helpers/fill-login-page-and-click";
-import WithDriver from "../helpers/with-driver";
-import ValidateTotp from "../helpers/validate-totp";
-import WaitRedirected from "../helpers/wait-redirected";
-
-describe("Keep me logged in", function() {
- this.timeout(15000);
- WithDriver();
-
- before(function() {
- const that = this;
- return LoginAndRegisterTotp(this.driver, "john", true)
- .then(function(secret: string) {
- that.secret = secret;
- if(!secret) return Bluebird.reject(new Error("No secret!"));
- return Bluebird.resolve();
- });
- });
-
- it("should disconnect user after inactivity period", function() {
- const that = this;
- const driver = this.driver;
- return VisitPage(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html")
- .then(() => FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password', false))
- .then(() => ValidateTotp(driver, that.secret))
- .then(() => WaitRedirected(driver, "https://admin.example.com:8080/secret.html"))
- .then(() => VisitPage(driver, "https://home.example.com:8080/"))
- .then(() => driver.sleep(3000))
- .then(() => driver.get("https://admin.example.com:8080/secret.html"))
- .then(() => WaitRedirected(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html"))
- });
-
- it.only("should keep user logged in after inactivity period", function() {
- const that = this;
- const driver = this.driver;
- return VisitPage(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html")
- .then(() => FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password', true))
- .then(() => ValidateTotp(driver, that.secret))
- .then(() => WaitRedirected(driver, "https://admin.example.com:8080/secret.html"))
- .then(() => VisitPage(driver, "https://home.example.com:8080/"))
- .then(() => driver.sleep(5000))
- .then(() => driver.get("https://admin.example.com:8080/secret.html"))
- .then(() => WaitRedirected(driver, "https://admin.example.com:8080/secret.html"))
- });
-});
\ No newline at end of file
diff --git a/test/minimal-config/00-suite.ts b/test/minimal-config/00-suite.ts
deleted file mode 100644
index 0ee3b6747..000000000
--- a/test/minimal-config/00-suite.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-require("chromedriver");
-import ChildProcess = require('child_process');
-import Bluebird = require("bluebird");
-
-import Environment = require('../environment');
-
-const execAsync = Bluebird.promisify(ChildProcess.exec);
-
-const includes = [
- "docker-compose.minimal.yml",
- "example/compose/docker-compose.base.yml",
- "example/compose/nginx/minimal/docker-compose.yml",
- "example/compose/smtp/docker-compose.yml",
-]
-
-
-before(function() {
- this.timeout(20000);
- this.environment = new Environment.Environment(includes);
-
- return execAsync("cp users_database.yml users_database.test.yml")
- .then(() => this.environment.setup(2000));
-});
-
-after(function() {
- this.timeout(30000);
- return execAsync("rm users_database.test.yml")
- .then(() => {
- if(process.env.KEEP_ENV != "true") {
- return this.environment.cleanup();
- }
- });
-});
\ No newline at end of file
diff --git a/test/minimal-config/bad_password.ts b/test/minimal-config/bad_password.ts
deleted file mode 100644
index e629a28ac..000000000
--- a/test/minimal-config/bad_password.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import WithDriver from '../helpers/with-driver';
-import FillLoginPageWithUserAndPasswordAndClick from '../helpers/fill-login-page-and-click';
-import VisitPage from '../helpers/visit-page';
-import SeeNotification from '../helpers/see-notification';
-import {AUTHENTICATION_FAILED} from '../../shared/UserMessages';
-
-/**
- * When user provides bad password,
- * Then he gets a notification message.
- */
-describe("Provide bad password", function() {
- WithDriver();
-
- describe('failed login as john', function() {
- before(function() {
- this.timeout(10000);
-
- const driver = this.driver;
- return VisitPage(driver, "https://login.example.com:8080/")
- .then(function() {
- return FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'bad_password');
- });
- });
-
- it('should get a notification message', function() {
- this.timeout(10000);
- return SeeNotification(this.driver, "error", AUTHENTICATION_FAILED);
- });
- });
-});
diff --git a/test/minimal-config/fail_totp.ts b/test/minimal-config/fail_totp.ts
deleted file mode 100644
index b347ac476..000000000
--- a/test/minimal-config/fail_totp.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-require("chromedriver");
-import WithDriver from '../helpers/with-driver';
-import FillLoginPageWithUserAndPasswordAndClick from '../helpers/fill-login-page-and-click';
-import VisitPage from '../helpers/visit-page';
-import ValidateTotp from '../helpers/validate-totp';
-import LoginAndRegisterTotp from '../helpers/login-and-register-totp';
-import seeNotification from "../helpers/see-notification";
-import {AUTHENTICATION_TOTP_FAILED} from '../../shared/UserMessages';
-
-/**
- * Given john has registered a TOTP secret,
- * When he fails the TOTP challenge,
- * Then he gets a notification message.
- */
-describe('Fail TOTP challenge', function() {
- this.timeout(10000);
- WithDriver();
-
- describe('successfully login as john', function() {
- before(function() {
- return LoginAndRegisterTotp(this.driver, "john", true);
- });
-
- describe('fail second factor', function() {
- before(function() {
- const BAD_TOKEN = "125478";
- const driver = this.driver;
-
- return VisitPage(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html")
- .then(() => FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password'))
- .then(() => ValidateTotp(driver, BAD_TOKEN));
- });
-
- it("get a notification message", function() {
- return seeNotification(this.driver, "error", AUTHENTICATION_TOTP_FAILED);
- });
- });
- });
-});
diff --git a/test/minimal-config/register_totp.ts b/test/minimal-config/register_totp.ts
deleted file mode 100644
index 65d419e7c..000000000
--- a/test/minimal-config/register_totp.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import SeleniumWebdriver = require("selenium-webdriver");
-import WithDriver from '../helpers/with-driver';
-import LoginAndRegisterTotp from '../helpers/login-and-register-totp';
-
-/**
- * Given the user logs in as john,
- * When he register a TOTP token,
- * Then he reach a page containing the secret as string an qrcode
- */
-describe('Registering TOTP', function() {
- this.timeout(10000);
- WithDriver();
-
- describe('successfully login as john', function() {
- before('register successfully', function() {
- this.timeout(10000);
- return LoginAndRegisterTotp(this.driver, "john", true);
- })
-
- it("should see generated qrcode", function() {
- this.driver.findElement(
- SeleniumWebdriver.By.id("qrcode"),
- 5000);
- });
-
- it("should see generated secret", function() {
- this.driver.findElement(
- SeleniumWebdriver.By.id("secret"),
- 5000);
- });
- });
-});
diff --git a/test/minimal-config/reset_password.ts b/test/minimal-config/reset_password.ts
deleted file mode 100644
index 3ddfeb047..000000000
--- a/test/minimal-config/reset_password.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-require("chromedriver");
-import Bluebird = require("bluebird");
-import ChildProcess = require("child_process");
-
-import WithDriver from '../helpers/with-driver';
-import VisitPage from '../helpers/visit-page';
-import ClickOnLink from '../helpers/click-on-link';
-import ClickOnButton from '../helpers/click-on-button';
-import WaitRedirect from '../helpers/wait-redirected';
-import FillField from "../helpers/fill-field";
-import {GetLinkFromEmail} from "../helpers/get-identity-link";
-import FillLoginPageAndClick from "../helpers/fill-login-page-and-click";
-
-const execAsync = Bluebird.promisify(ChildProcess.exec);
-
-describe('Reset password', function() {
- this.timeout(10000);
- WithDriver();
-
- after(() => {
- return execAsync("cp users_database.yml users_database.test.yml");
- })
-
- describe('click on reset password', function() {
- it("should reset password for john", function() {
- return VisitPage(this.driver, "https://login.example.com:8080/")
- .then(() => ClickOnLink(this.driver, "Forgot password\?"))
- .then(() => WaitRedirect(this.driver, "https://login.example.com:8080/password-reset/request"))
- .then(() => FillField(this.driver, "username", "john"))
- .then(() => ClickOnButton(this.driver, "Reset Password"))
- .then(() => this.driver.sleep(1000)) // Simulate the time to read it from mailbox.
- .then(() => GetLinkFromEmail())
- .then((link) => VisitPage(this.driver, link))
- .then(() => FillField(this.driver, "password1", "newpass"))
- .then(() => FillField(this.driver, "password2", "newpass"))
- .then(() => ClickOnButton(this.driver, "Reset Password"))
- .then(() => WaitRedirect(this.driver, "https://login.example.com:8080/"))
- .then(() => FillLoginPageAndClick(this.driver, "john", "newpass"))
- .then(() => WaitRedirect(this.driver, "https://login.example.com:8080/secondfactor"))
- });
- });
-});
diff --git a/test/minimal-config/validate_totp.ts b/test/minimal-config/validate_totp.ts
deleted file mode 100644
index 4f1a2481e..000000000
--- a/test/minimal-config/validate_totp.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-require("chromedriver");
-import Bluebird = require("bluebird");
-import WithDriver from '../helpers/with-driver';
-import FillLoginPageWithUserAndPasswordAndClick from '../helpers/fill-login-page-and-click';
-import WaitRedirected from '../helpers/wait-redirected';
-import VisitPage from '../helpers/visit-page';
-import ValidateTotp from '../helpers/validate-totp';
-import AccessSecret from "../helpers/access-secret";
-import LoginAndRegisterTotp from '../helpers/login-and-register-totp';
-
-/**
- * Given john has registered a TOTP secret,
- * When he validates the TOTP second factor,
- * Then he has access to secret page.
- */
-describe('Validate TOTP factor', function() {
- this.timeout(10000);
- WithDriver();
-
- describe('successfully login as john', function() {
- before(function() {
- const that = this;
- return LoginAndRegisterTotp(this.driver, "john", true)
- .then(function(secret: string) {
- that.secret = secret;
- })
- });
-
- describe('validate second factor', function() {
- before(function() {
- const secret = this.secret;
- if(!secret) return Bluebird.reject(new Error("No secret!"));
- const driver = this.driver;
-
- return VisitPage(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html")
- .then(() => FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password'))
- .then(() => ValidateTotp(driver, secret))
- .then(() => WaitRedirected(driver, "https://admin.example.com:8080/secret.html"));
- });
-
- it("should access the secret", function() {
- return AccessSecret(this.driver);
- });
- });
- });
-});
diff --git a/test/suites/.gitignore b/test/suites/.gitignore
new file mode 100644
index 000000000..4df2d1dca
--- /dev/null
+++ b/test/suites/.gitignore
@@ -0,0 +1 @@
+users_database.test.yml
\ No newline at end of file
diff --git a/test/suites/README.md b/test/suites/README.md
new file mode 100644
index 000000000..7558d99d2
--- /dev/null
+++ b/test/suites/README.md
@@ -0,0 +1,5 @@
+# Authelia Suites
+
+A **suite** is a kind of virtual environment for Authelia. Please
+read the related documentation [here](../docs/suites.md) to get more
+details.
\ No newline at end of file
diff --git a/test/suites/basic/README.md b/test/suites/basic/README.md
new file mode 100644
index 000000000..751dfbc5c
--- /dev/null
+++ b/test/suites/basic/README.md
@@ -0,0 +1,13 @@
+# Basic suite
+
+This suite has been created to test Authelia with basic feature in a non highly-available setup.
+Authelia basically use an in-memory cache to store user sessions and persist data on disk instead
+of using a remote database. Also, the user accounts are stored in file-based database.
+
+## Components
+
+Authelia, nginx, fake webmail for registering devices.
+
+## Tests
+
+Broad range of tests.
\ No newline at end of file
diff --git a/test/suites/basic/config.yml b/test/suites/basic/config.yml
new file mode 100644
index 000000000..7ac889061
--- /dev/null
+++ b/test/suites/basic/config.yml
@@ -0,0 +1,110 @@
+###############################################################
+# Authelia minimal configuration #
+###############################################################
+
+port: 9091
+
+logs_level: debug
+
+default_redirection_url: https://home.example.com:8080/
+
+authentication_backend:
+ file:
+ path: ./test/suites/basic/users_database.test.yml
+
+session:
+ secret: unsecure_session_secret
+ domain: example.com
+ expiration: 3600000 # 1 hour
+ inactivity: 300000 # 5 minutes
+
+# Configuration of the storage backend used to store data and secrets. i.e. totp data
+storage:
+ local:
+ path: /tmp/authelia/db
+
+# TOTP Issuer Name
+#
+# This will be the issuer name displayed in Google Authenticator
+# See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format for more info on issuer names
+totp:
+ issuer: example.com
+
+# Access Control
+#
+# Access control is a set of rules you can use to restrict user access to certain
+# resources.
+access_control:
+ # Default policy can either be `bypass`, `one_factor`, `two_factor` or `deny`.
+ default_policy: deny
+
+ rules:
+ - domain: single_factor.example.com
+ policy: one_factor
+
+ - domain: '*.example.com'
+ subject: "group:admins"
+ policy: two_factor
+
+ - domain: dev.example.com
+ resources:
+ - '^/users/john/.*$'
+ subject: "user:john"
+ policy: two_factor
+
+ - domain: dev.example.com
+ resources:
+ - '^/users/harry/.*$'
+ subject: "user:harry"
+ policy: two_factor
+
+ - domain: '*.mail.example.com'
+ subject: "user:bob"
+ policy: two_factor
+
+ - domain: dev.example.com
+ resources:
+ - '^/users/bob/.*$'
+ subject: "user:bob"
+ policy: two_factor
+
+
+# Configuration of the authentication regulation mechanism.
+regulation:
+ # Set it to 0 to disable max_retries.
+ max_retries: 3
+
+ # The user is banned if the authenticaction failed `max_retries` times in a `find_time` seconds window.
+ find_time: 300
+
+ # The length of time before a banned user can login again.
+ ban_time: 900
+
+# Default redirection URL
+#
+# Note: this parameter is optional. If not provided, user won't
+# be redirected upon successful authentication.
+#default_redirection_url: https://authelia.example.domain
+
+notifier:
+ # For testing purpose, notifications can be sent in a file
+ # filesystem:
+ # filename: /tmp/authelia/notification.txt
+
+ # Use your email account to send the notifications. You can use an app password.
+ # List of valid services can be found here: https://nodemailer.com/smtp/well-known/
+ ## email:
+ ## username: user@example.com
+ ## password: yourpassword
+ ## sender: admin@example.com
+ ## service: gmail
+
+ # Use a SMTP server for sending notifications
+ smtp:
+ username: test
+ password: password
+ secure: false
+ host: 127.0.0.1
+ port: 1025
+ sender: admin@example.com
+
diff --git a/test/suites/basic/environment.ts b/test/suites/basic/environment.ts
new file mode 100644
index 000000000..6d865c6a9
--- /dev/null
+++ b/test/suites/basic/environment.ts
@@ -0,0 +1,28 @@
+import fs from 'fs';
+import { exec } from "../../helpers/utils/exec";
+import AutheliaServer from "../../helpers/context/AutheliaServer";
+import DockerEnvironment from "../../helpers/context/DockerEnvironment";
+
+const autheliaServer = new AutheliaServer(__dirname + '/config.yml');
+const dockerEnv = new DockerEnvironment([
+ 'docker-compose.yml',
+ 'example/compose/nginx/backend/docker-compose.yml',
+ 'example/compose/nginx/portal/docker-compose.yml',
+ 'example/compose/smtp/docker-compose.yml',
+])
+
+async function setup() {
+ await exec(`cp ${__dirname}/users_database.yml ${__dirname}/users_database.test.yml`);
+ await exec('mkdir -p /tmp/authelia/db');
+ await exec('./example/compose/nginx/portal/render.js ' + (fs.existsSync('.suite') ? '': '--production'));
+ await dockerEnv.start();
+ await autheliaServer.start();
+}
+
+async function teardown() {
+ await dockerEnv.stop();
+ await autheliaServer.stop();
+ await exec('rm -r /tmp/authelia/db');
+}
+
+export { setup, teardown };
\ No newline at end of file
diff --git a/test/suites/basic/scenarii/BackendProtection.ts b/test/suites/basic/scenarii/BackendProtection.ts
new file mode 100644
index 000000000..8de7c4ff3
--- /dev/null
+++ b/test/suites/basic/scenarii/BackendProtection.ts
@@ -0,0 +1,45 @@
+import { POST_Expect401, GET_Expect401 } from "../../../helpers/utils/Requests";
+
+export default function() {
+ // POST
+ it('should return 401 error when posting to https://login.example.com:8080/api/totp', async function() {
+ await POST_Expect401('https://login.example.com:8080/api/totp', { token: 'MALICIOUS_TOKEN' });
+ });
+
+ it('should return 401 error when posting to https://login.example.com:8080/api/u2f/sign', async function() {
+ await POST_Expect401('https://login.example.com:8080/api/u2f/sign');
+ });
+
+ it('should return 401 error when posting to https://login.example.com:8080/api/u2f/register', async function() {
+ await POST_Expect401('https://login.example.com:8080/api/u2f/register');
+ });
+
+
+ // GET
+ it('should return 401 error on GET to https://login.example.com:8080/api/u2f/sign_request', async function() {
+ await GET_Expect401('https://login.example.com:8080/api/u2f/sign_request');
+ });
+
+ it('should return 401 error on GET to https://login.example.com:8080/api/u2f/register_request', async function() {
+ await GET_Expect401('https://login.example.com:8080/api/u2f/register_request');
+ });
+
+
+ describe('Identity validation endpoints blocked to unauthenticated users', function() {
+ it('should return 401 error on POST to https://login.example.com:8080/api/secondfactor/u2f/identity/start', async function() {
+ await POST_Expect401('https://login.example.com:8080/api/secondfactor/u2f/identity/start');
+ });
+
+ it('should return 401 error on POST to https://login.example.com:8080/api/secondfactor/u2f/identity/finish', async function() {
+ await POST_Expect401('https://login.example.com:8080/api/secondfactor/u2f/identity/finish');
+ });
+
+ it('should return 401 error on POST to https://login.example.com:8080/api/secondfactor/totp/identity/start', async function() {
+ await POST_Expect401('https://login.example.com:8080/api/secondfactor/totp/identity/start');
+ });
+
+ it('should return 401 error on POST to https://login.example.com:8080/api/secondfactor/totp/identity/finish', async function() {
+ await POST_Expect401('https://login.example.com:8080/api/secondfactor/totp/identity/finish');
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/basic/scenarii/BadPassword.ts b/test/suites/basic/scenarii/BadPassword.ts
new file mode 100644
index 000000000..448657534
--- /dev/null
+++ b/test/suites/basic/scenarii/BadPassword.ts
@@ -0,0 +1,29 @@
+import FillLoginPageWithUserAndPasswordAndClick from '../../../helpers/FillLoginPageAndClick';
+import {AUTHENTICATION_FAILED} from '../../../../shared/UserMessages';
+import VisitPageAndWaitUrlIs from '../../../helpers/behaviors/VisitPageAndWaitUrlIs';
+import VerifyNotificationDisplayed from '../../../helpers/assertions/VerifyNotificationDisplayed';
+import { StartDriver, StopDriver } from '../../../helpers/context/WithDriver';
+
+export default function() {
+/**
+ * When user provides bad password,
+ * Then he gets a notification message.
+ */
+ describe('failed login as john in first factor', function() {
+ this.timeout(10000);
+
+ before(async function() {
+ this.driver = await StartDriver();
+ await VisitPageAndWaitUrlIs(this.driver, "https://login.example.com:8080/")
+ await FillLoginPageWithUserAndPasswordAndClick(this.driver, 'john', 'bad_password');
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ })
+
+ it('should get a notification message', async function () {
+ await VerifyNotificationDisplayed(this.driver, AUTHENTICATION_FAILED);
+ });
+ });
+}
diff --git a/test/suites/basic/scenarii/LogoutRedirectToAlreadyLoggedIn.ts b/test/suites/basic/scenarii/LogoutRedirectToAlreadyLoggedIn.ts
new file mode 100644
index 000000000..37530c9a8
--- /dev/null
+++ b/test/suites/basic/scenarii/LogoutRedirectToAlreadyLoggedIn.ts
@@ -0,0 +1,23 @@
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import VisitPage from "../../../helpers/VisitPage";
+import VerifyIsAlreadyAuthenticatedStage from "../../../helpers/assertions/VerifyIsAlreadyAuthenticatedStage";
+import RegisterAndLoginTwoFactor from "../../../helpers/behaviors/RegisterAndLoginTwoFactor";
+
+
+export default function() {
+ describe('When visiting /logout the user is redirected to already logged in page to log out', function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ await RegisterAndLoginTwoFactor(this.driver, 'john', "password", true);
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it('should redirect the user', async function() {
+ await VisitPage(this.driver, 'https://login.example.com:8080/logout');
+ await VerifyIsAlreadyAuthenticatedStage(this.driver);
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/basic/scenarii/RegisterTotp.ts b/test/suites/basic/scenarii/RegisterTotp.ts
new file mode 100644
index 000000000..636d5f888
--- /dev/null
+++ b/test/suites/basic/scenarii/RegisterTotp.ts
@@ -0,0 +1,50 @@
+import SeleniumWebdriver, { WebDriver } from "selenium-webdriver";
+import Assert from 'assert';
+import LoginAndRegisterTotp from '../../../helpers/LoginAndRegisterTotp';
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+
+/**
+ * Given the user logs in as john,
+ * When he register a TOTP token,
+ * Then he reach a page containing the secret as string an qrcode
+ */
+export default function() {
+ describe('successfully login as john', function() {
+ this.timeout(10000);
+
+ beforeEach(async function() {
+ this.driver = await StartDriver();
+ await LoginAndRegisterTotp(this.driver, "john", "password", true);
+ });
+
+ afterEach(async function() {
+ await StopDriver(this.driver);
+ })
+
+ it("should see generated qrcode", async function() {
+ await this.driver.wait(
+ SeleniumWebdriver.until.elementLocated(
+ SeleniumWebdriver.By.className("qrcode")),
+ 5000);
+ });
+
+ it("should see generated secret", async function() {
+ await this.driver.wait(
+ SeleniumWebdriver.until.elementLocated(
+ SeleniumWebdriver.By.className("base32-secret")),
+ 5000);
+ });
+
+ it("should have user and issuer in otp url", async function() {
+ const el = await (this.driver as WebDriver).wait(
+ SeleniumWebdriver.until.elementLocated(
+ SeleniumWebdriver.By.className('otpauth-secret')), 5000);
+
+ const otpauthUrl = await el.getAttribute('innerText');
+ const label = 'john';
+ const issuer = 'example.com';
+
+ Assert(new RegExp(`^otpauth://totp/${label}\\?secret=[A-Z0-9]+&issuer=${issuer}$`).test(otpauthUrl));
+ })
+ });
+};
diff --git a/test/suites/basic/scenarii/RequiredTwoFactor.ts b/test/suites/basic/scenarii/RequiredTwoFactor.ts
new file mode 100644
index 000000000..dd48a9494
--- /dev/null
+++ b/test/suites/basic/scenarii/RequiredTwoFactor.ts
@@ -0,0 +1,30 @@
+import LoginAndRegisterTotp from '../../../helpers/LoginAndRegisterTotp';
+import VerifyUrlIs from '../../../helpers/assertions/VerifyUrlIs';
+import { StartDriver, StopDriver } from '../../../helpers/context/WithDriver';
+import VerifyIsSecondFactorStage from '../../../helpers/assertions/VerifyIsSecondFactorStage';
+import VisitPage from '../../../helpers/VisitPage';
+import FillLoginPageAndClick from '../../../helpers/FillLoginPageAndClick';
+
+export default function() {
+ describe('User tries to access a page protected by second factor while he only passed first factor', function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ const secret = await LoginAndRegisterTotp(this.driver, "john", "password", true);
+ if (!secret) throw new Error('No secret!');
+
+ await VisitPage(this.driver, "https://admin.example.com:8080/secret.html");
+ await VerifyUrlIs(this.driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+ await FillLoginPageAndClick(this.driver, "john", "password");
+ await VerifyIsSecondFactorStage(this.driver);
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it("should reach second factor page of login portal", async function() {
+ await VisitPage(this.driver, "https://admin.example.com:8080/secret.html");
+ await VerifyIsSecondFactorStage(this.driver);
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/basic/scenarii/ResetPassword.ts b/test/suites/basic/scenarii/ResetPassword.ts
new file mode 100644
index 000000000..f2b6b95db
--- /dev/null
+++ b/test/suites/basic/scenarii/ResetPassword.ts
@@ -0,0 +1,71 @@
+import SeleniumWebDriver from 'selenium-webdriver';
+
+import ClickOnLink from '../../../helpers/ClickOnLink';
+import ClickOn from '../../../helpers/ClickOn';
+import FillField from "../../../helpers/FillField";
+import {GetLinkFromEmail} from "../../../helpers/GetIdentityLink";
+import FillLoginPageAndClick from "../../../helpers/FillLoginPageAndClick";
+import IsSecondFactorStage from "../../../helpers/assertions/VerifyIsSecondFactorStage";
+import VisitPageAndWaitUrlIs from '../../../helpers/behaviors/VisitPageAndWaitUrlIs';
+import VerifyNotificationDisplayed from '../../../helpers/assertions/VerifyNotificationDisplayed';
+import VerifyUrlIs from '../../../helpers/assertions/VerifyUrlIs';
+import { StartDriver, StopDriver } from '../../../helpers/context/WithDriver';
+
+export default function() {
+ beforeEach(async function() {
+ this.driver = await StartDriver();
+ });
+
+ afterEach(async function() {
+ await StopDriver(this.driver);
+ })
+
+ it("should reset password for john", async function() {
+ await VisitPageAndWaitUrlIs(this.driver, "https://login.example.com:8080/");
+ await ClickOnLink(this.driver, "Forgot password\?");
+ await VerifyUrlIs(this.driver, "https://login.example.com:8080/forgot-password");
+ await FillField(this.driver, "username", "john");
+ await ClickOn(this.driver, SeleniumWebDriver.By.id('next-button'));
+ await VerifyUrlIs(this.driver, 'https://login.example.com:8080/confirmation-sent');
+
+ await this.driver.sleep(500); // Simulate the time it takes to receive the e-mail.
+ const link = await GetLinkFromEmail();
+ await VisitPageAndWaitUrlIs(this.driver, link);
+ await FillField(this.driver, "password1", "newpass");
+ await FillField(this.driver, "password2", "newpass");
+ await ClickOn(this.driver, SeleniumWebDriver.By.id('reset-button'));
+ await VerifyUrlIs(this.driver, "https://login.example.com:8080/");
+ await FillLoginPageAndClick(this.driver, "john", "newpass");
+
+ // The user reaches the second factor page using the new password.
+ await IsSecondFactorStage(this.driver);
+ });
+
+ it("should persuade reset password is initiated for unknown user", async function() {
+ await VisitPageAndWaitUrlIs(this.driver, "https://login.example.com:8080/");
+ await ClickOnLink(this.driver, "Forgot password\?");
+ await VerifyUrlIs(this.driver, "https://login.example.com:8080/forgot-password");
+ await FillField(this.driver, "username", "unknown");
+ await ClickOn(this.driver, SeleniumWebDriver.By.id('next-button'));
+
+ // The malicious user thinks the confirmation has been sent.
+ await VerifyUrlIs(this.driver, 'https://login.example.com:8080/confirmation-sent');
+ });
+
+ it("should notify passwords are different in reset form", async function() {
+ await VisitPageAndWaitUrlIs(this.driver, "https://login.example.com:8080/");
+ await ClickOnLink(this.driver, "Forgot password\?");
+ await VerifyUrlIs(this.driver, "https://login.example.com:8080/forgot-password");
+ await FillField(this.driver, "username", "john");
+ await ClickOn(this.driver, SeleniumWebDriver.By.id('next-button'));
+ await VerifyUrlIs(this.driver, 'https://login.example.com:8080/confirmation-sent');
+
+ await this.driver.sleep(500); // Simulate the time it takes to receive the e-mail.
+ const link = await GetLinkFromEmail();
+ await VisitPageAndWaitUrlIs(this.driver, link);
+ await FillField(this.driver, "password1", "newpass");
+ await FillField(this.driver, "password2", "badpass");
+ await ClickOn(this.driver, SeleniumWebDriver.By.id('reset-button'));
+ await VerifyNotificationDisplayed(this.driver, "The passwords are different.");
+ });
+}
diff --git a/test/suites/basic/scenarii/SimpleAuthentication.ts b/test/suites/basic/scenarii/SimpleAuthentication.ts
new file mode 100644
index 000000000..78331b8de
--- /dev/null
+++ b/test/suites/basic/scenarii/SimpleAuthentication.ts
@@ -0,0 +1,37 @@
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import RegisterAndLoginTwoFactor from "../../../helpers/behaviors/RegisterAndLoginTwoFactor";
+import VerifyUrlIs from "../../../helpers/assertions/VerifyUrlIs";
+import VisitPage from "../../../helpers/VisitPage";
+
+
+export default function() {
+ describe('The user is redirected to target url upon successful authentication', function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ await RegisterAndLoginTwoFactor(this.driver, 'john', "password", true, 'https://admin.example.com:8080/secret.html');
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it('should redirect the user', async function() {
+ await VerifyUrlIs(this.driver, 'https://admin.example.com:8080/secret.html');
+ });
+ });
+
+ describe('The target url is in "rd" parameter of the portal URL', function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ await VisitPage(this.driver, 'https://admin.example.com:8080/secret.html');
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it('should redirect the user', async function() {
+ await VerifyUrlIs(this.driver, 'https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html');
+ });
+ })
+}
\ No newline at end of file
diff --git a/test/suites/basic/scenarii/TOTPValidation.ts b/test/suites/basic/scenarii/TOTPValidation.ts
new file mode 100644
index 000000000..f5cbbbbda
--- /dev/null
+++ b/test/suites/basic/scenarii/TOTPValidation.ts
@@ -0,0 +1,65 @@
+import FillLoginPageWithUserAndPasswordAndClick from '../../../helpers/FillLoginPageAndClick';
+import ValidateTotp from '../../../helpers/ValidateTotp';
+import VerifySecretObserved from "../../../helpers/assertions/VerifySecretObserved";
+import LoginAndRegisterTotp from '../../../helpers/LoginAndRegisterTotp';
+import { AUTHENTICATION_TOTP_FAILED } from '../../../../shared/UserMessages';
+import VisitPageAndWaitUrlIs from '../../../helpers/behaviors/VisitPageAndWaitUrlIs';
+import VerifyNotificationDisplayed from '../../../helpers/assertions/VerifyNotificationDisplayed';
+import VerifyUrlIs from '../../../helpers/assertions/VerifyUrlIs';
+import { StartDriver, StopDriver } from '../../../helpers/context/WithDriver';
+
+export default function() {
+ /**
+ * Given john has registered a TOTP secret,
+ * When he validates the TOTP second factor,
+ * Then he has access to secret page.
+ */
+ describe('Successfully pass second factor with TOTP', function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ const secret = await LoginAndRegisterTotp(this.driver, "john", "password", true);
+ if (!secret) throw new Error('No secret!');
+
+ await VisitPageAndWaitUrlIs(this.driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+ await FillLoginPageWithUserAndPasswordAndClick(this.driver, 'john', 'password');
+ await ValidateTotp(this.driver, secret);
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it("should be automatically redirected to secret page", async function() {
+ await VerifyUrlIs(this.driver, "https://admin.example.com:8080/secret.html");
+ });
+
+ it("should access the secret", async function() {
+ await VerifySecretObserved(this.driver);
+ });
+ });
+
+ /**
+ * Given john has registered a TOTP secret,
+ * When he fails the TOTP challenge,
+ * Then he gets a notification message.
+ */
+ describe('Fail validation of second factor with TOTP', function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ await LoginAndRegisterTotp(this.driver, "john", "password", true);
+ const BAD_TOKEN = "125478";
+
+ await VisitPageAndWaitUrlIs(this.driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+ await FillLoginPageWithUserAndPasswordAndClick(this.driver, 'john', 'password');
+ await ValidateTotp(this.driver, BAD_TOKEN);
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it("get a notification message", async function() {
+ await VerifyNotificationDisplayed(this.driver, AUTHENTICATION_TOTP_FAILED);
+ });
+ });
+}
diff --git a/test/suites/basic/scenarii/VerifyEndpoint.ts b/test/suites/basic/scenarii/VerifyEndpoint.ts
new file mode 100644
index 000000000..1629d6792
--- /dev/null
+++ b/test/suites/basic/scenarii/VerifyEndpoint.ts
@@ -0,0 +1,16 @@
+import { GET_Expect401, GET_ExpectRedirect } from "../../../helpers/utils/Requests";
+
+export default function() {
+ describe('Query without authenticated cookie', function() {
+ it('should get a 401 on GET to https://authelia.example.com:8080/api/verify', async function() {
+ await GET_Expect401('https://login.example.com:8080/api/verify');
+ });
+
+ describe('Parameter `rd` required by Kubernetes ingress controller', async function() {
+ it('should redirect to https://login.example.com:8080', async function() {
+ await GET_ExpectRedirect('https://login.example.com:8080/api/verify?rd=https://login.example.com:8080',
+ 'https://login.example.com:8080');
+ });
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/basic/test.ts b/test/suites/basic/test.ts
new file mode 100644
index 000000000..fa432390f
--- /dev/null
+++ b/test/suites/basic/test.ts
@@ -0,0 +1,29 @@
+import AutheliaSuite from "../../helpers/context/AutheliaSuite";
+import BadPassword from "./scenarii/BadPassword";
+import RegisterTotp from './scenarii/RegisterTotp';
+import ResetPassword from './scenarii/ResetPassword';
+import TOTPValidation from './scenarii/TOTPValidation';
+import BackendProtection from './scenarii/BackendProtection';
+import VerifyEndpoint from './scenarii/VerifyEndpoint';
+import RequiredTwoFactor from './scenarii/RequiredTwoFactor';
+import LogoutRedirectToAlreadyLoggedIn from './scenarii/LogoutRedirectToAlreadyLoggedIn';
+import SimpleAuthentication from './scenarii/SimpleAuthentication';
+import { exec } from '../../helpers/utils/exec';
+
+AutheliaSuite(__dirname, function() {
+ this.timeout(10000);
+
+ beforeEach(async function() {
+ await exec(`cp ${__dirname}/users_database.yml ${__dirname}/users_database.test.yml`);
+ });
+
+ describe('Simple authentication', SimpleAuthentication);
+ describe('Backend protection', BackendProtection);
+ describe('Verify API endpoint', VerifyEndpoint);
+ describe('Bad password', BadPassword);
+ describe('Reset password', ResetPassword);
+ describe('TOTP Registration', RegisterTotp);
+ describe('TOTP Validation', TOTPValidation);
+ describe('Required two factor', RequiredTwoFactor);
+ describe('Logout endpoint redirect to already logged in page', LogoutRedirectToAlreadyLoggedIn);
+});
\ No newline at end of file
diff --git a/users_database.yml b/test/suites/basic/users_database.yml
similarity index 100%
rename from users_database.yml
rename to test/suites/basic/users_database.yml
diff --git a/test/suites/dockerhub/README.md b/test/suites/dockerhub/README.md
new file mode 100644
index 000000000..153268559
--- /dev/null
+++ b/test/suites/dockerhub/README.md
@@ -0,0 +1,13 @@
+# Dockerhub suite
+
+This suite is made to quickly test that the Docker image of Authelia runs properly when spawned.
+It can also be used for you to test Authelia without building it since the latest image will be
+pulled from Dockerhub.
+
+## Components
+
+This suite will spawn an highly-available setup with nginx, mongo, redis, OpenLDAP, etc...
+
+## Tests
+
+Check if the image runs and does not crash unexpectedly and do a simple authentication with 2FA.
\ No newline at end of file
diff --git a/test/suites/dockerhub/config.yml b/test/suites/dockerhub/config.yml
new file mode 100644
index 000000000..f88b207f2
--- /dev/null
+++ b/test/suites/dockerhub/config.yml
@@ -0,0 +1,262 @@
+###############################################################
+# Authelia configuration #
+###############################################################
+
+# The port to listen on
+port: 9091
+
+# Log level
+#
+# Level of verbosity for logs
+logs_level: debug
+
+# Default redirection URL
+#
+# If user tries to authenticate without any referer, Authelia
+# does not know where to redirect the user to at the end of the
+# authentication process.
+# This parameter allows you to specify the default redirection
+# URL Authelia will use in such a case.
+#
+# Note: this parameter is optional. If not provided, user won't
+# be redirected upon successful authentication.
+default_redirection_url: https://home.example.com:8080/
+
+# TOTP Issuer Name
+#
+# This will be the issuer name displayed in Google Authenticator
+# See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format for more info on issuer names
+totp:
+ issuer: authelia.com
+
+# The authentication backend to use for verifying user passwords
+# and retrieve information such as email address and groups
+# users belong to.
+#
+# There are two supported backends: `ldap` and `file`.
+authentication_backend:
+ # LDAP backend configuration.
+ #
+ # This backend allows Authelia to be scaled to more
+ # than one instance and therefore is recommended for
+ # production.
+ ldap:
+ # The url of the ldap server
+ url: ldap://openldap
+
+ # The base dn for every entries
+ base_dn: dc=example,dc=com
+
+ # An additional dn to define the scope to all users
+ additional_users_dn: ou=users
+
+ # The users filter used to find the user DN
+ # {0} is a matcher replaced by username.
+ # 'cn={0}' by default.
+ users_filter: cn={0}
+
+ # An additional dn to define the scope of groups
+ additional_groups_dn: ou=groups
+
+ # The groups filter used for retrieving groups of a given user.
+ # {0} is a matcher replaced by username.
+ # {dn} is a matcher replaced by user DN.
+ # 'member={dn}' by default.
+ groups_filter: (&(member={dn})(objectclass=groupOfNames))
+
+ # The attribute holding the name of the group
+ group_name_attribute: cn
+
+ # The attribute holding the mail address of the user
+ mail_attribute: mail
+
+ # The username and password of the admin user.
+ user: cn=admin,dc=example,dc=com
+ password: password
+
+ # File backend configuration.
+ #
+ # With this backend, the users database is stored in a file
+ # which is updated when users reset their passwords.
+ # Therefore, this backend is meant to be used in a dev environment
+ # and not in production since it prevents Authelia to be scaled to
+ # more than one instance.
+ #
+ ## file:
+ ## path: ./users_database.yml
+
+
+# Access Control
+#
+# Access control is a list of rules defining the authorizations applied for one
+# resource to users or group of users.
+#
+# If 'access_control' is not defined, ACL rules are disabled and the `bypass`
+# rule is applied, i.e., access is allowed to anyone. Otherwise restrictions follow
+# the rules defined.
+#
+# Note: One can use the wildcard * to match any subdomain.
+# It must stand at the beginning of the pattern. (example: *.mydomain.com)
+#
+# Note: You must put patterns containing wildcards between simple quotes for the YAML
+# to be syntaxically correct.
+#
+# Definition: A `rule` is an object with the following keys: `domain`, `subject`,
+# `policy` and `resources`.
+#
+# - `domain` defines which domain or set of domains the rule applies to.
+#
+# - `subject` defines the subject to apply authorizations to. This parameter is
+# optional and matching any user if not provided. If provided, the parameter
+# represents either a user or a group. It should be of the form 'user:'
+# or 'group:'.
+#
+# - `policy` is the policy to apply to resources. It must be either `bypass`,
+# `one_factor`, `two_factor` or `deny`.
+#
+# - `resources` is a list of regular expressions that matches a set of resources to
+# apply the policy to. This parameter is optional and matches any resource if not
+# provided.
+#
+# Note: the order of the rules is important. The first policy matching
+# (domain, resource, subject) applies.
+access_control:
+ # Default policy can either be `bypass`, `one_factor`, `two_factor` or `deny`.
+ # It is the policy applied to any resource if there is no policy to be applied
+ # to the user.
+ default_policy: deny
+
+ rules:
+ # Rules applied to everyone
+ - domain: public.example.com
+ policy: two_factor
+ - domain: single_factor.example.com
+ policy: one_factor
+
+ # Rules applied to 'admin' group
+ - domain: 'mx2.mail.example.com'
+ subject: 'group:admin'
+ policy: deny
+ - domain: '*.example.com'
+ subject: 'group:admin'
+ policy: two_factor
+
+ # Rules applied to 'dev' group
+ - domain: dev.example.com
+ resources:
+ - '^/groups/dev/.*$'
+ subject: 'group:dev'
+ policy: two_factor
+
+ # Rules applied to user 'john'
+ - domain: dev.example.com
+ resources:
+ - '^/users/john/.*$'
+ subject: 'user:john'
+ policy: two_factor
+
+
+ # Rules applied to user 'harry'
+ - domain: dev.example.com
+ resources:
+ - '^/users/harry/.*$'
+ subject: 'user:harry'
+ policy: two_factor
+
+ # Rules applied to user 'bob'
+ - domain: '*.mail.example.com'
+ subject: 'user:bob'
+ policy: two_factor
+ - domain: 'dev.example.com'
+ resources:
+ - '^/users/bob/.*$'
+ subject: 'user:bob'
+ policy: two_factor
+
+
+# Configuration of session cookies
+#
+# The session cookies identify the user once logged in.
+session:
+ # The name of the session cookie. (default: authelia_session).
+ name: authelia_session
+
+ # The secret to encrypt the session cookie.
+ secret: unsecure_session_secret
+
+ # The time in ms before the cookie expires and session is reset.
+ expiration: 3600000 # 1 hour
+
+ # The inactivity time in ms before the session is reset.
+ inactivity: 300000 # 5 minutes
+
+ # The domain to protect.
+ # Note: the authenticator must also be in that domain. If empty, the cookie
+ # is restricted to the subdomain of the issuer.
+ domain: example.com
+
+ # The redis connection details
+ redis:
+ host: redis
+ port: 6379
+ password: authelia
+
+# Configuration of the authentication regulation mechanism.
+#
+# This mechanism prevents attackers from brute forcing the first factor.
+# It bans the user if too many attempts are done in a short period of
+# time.
+regulation:
+ # The number of failed login attempts before user is banned.
+ # Set it to 0 to disable regulation.
+ max_retries: 3
+
+ # The time range during which the user can attempt login before being banned.
+ # The user is banned if the authenticaction failed `max_retries` times in a `find_time` seconds window.
+ find_time: 15
+
+ # The length of time before a banned user can login again.
+ ban_time: 5
+
+# Configuration of the storage backend used to store data and secrets.
+#
+# You must use only an available configuration: local, mongo
+storage:
+ # The directory where the DB files will be saved
+ ## local:
+ ## path: /var/lib/authelia/store
+
+ # Settings to connect to mongo server
+ mongo:
+ url: mongodb://mongo
+ database: authelia
+ auth:
+ username: authelia
+ password: authelia
+
+# Configuration of the notification system.
+#
+# Notifications are sent to users when they require a password reset, a u2f
+# registration or a TOTP registration.
+# Use only an available configuration: filesystem, gmail
+notifier:
+ # For testing purpose, notifications can be sent in a file
+ ## filesystem:
+ ## filename: /tmp/authelia/notification.txt
+
+ # Use your email account to send the notifications. You can use an app password.
+ # List of valid services can be found here: https://nodemailer.com/smtp/well-known/
+ ## email:
+ ## username: user@example.com
+ ## password: yourpassword
+ ## sender: admin@example.com
+ ## service: gmail
+
+ # Use a SMTP server for sending notifications
+ smtp:
+ username: test
+ password: password
+ secure: false
+ host: smtp
+ port: 1025
+ sender: admin@example.com
diff --git a/test/suites/dockerhub/environment.ts b/test/suites/dockerhub/environment.ts
new file mode 100644
index 000000000..b8213ef3d
--- /dev/null
+++ b/test/suites/dockerhub/environment.ts
@@ -0,0 +1,28 @@
+import DockerEnvironment from "../../helpers/context/DockerEnvironment";
+import { exec } from "../../helpers/utils/exec";
+
+const composeFiles = [
+ 'docker-compose.yml',
+ 'example/compose/authelia/docker-compose.dockerhub.yml',
+ 'example/compose/mongo/docker-compose.yml',
+ 'example/compose/redis/docker-compose.yml',
+ 'example/compose/nginx/backend/docker-compose.yml',
+ 'example/compose/nginx/portal/docker-compose.yml',
+ 'example/compose/smtp/docker-compose.yml',
+ 'example/compose/httpbin/docker-compose.yml',
+ 'example/compose/ldap/docker-compose.admin.yml', // This is just used for administration, not for testing.
+ 'example/compose/ldap/docker-compose.yml'
+]
+
+const dockerEnv = new DockerEnvironment(composeFiles);
+
+async function setup() {
+ await exec('./example/compose/nginx/portal/render.js --production http://authelia:9091');
+ await dockerEnv.start();
+}
+
+async function teardown() {
+ await dockerEnv.stop();
+}
+
+export { setup, teardown, composeFiles };
\ No newline at end of file
diff --git a/test/suites/dockerhub/scenarii/SimpleAuthentication.ts b/test/suites/dockerhub/scenarii/SimpleAuthentication.ts
new file mode 100644
index 000000000..7d42298ab
--- /dev/null
+++ b/test/suites/dockerhub/scenarii/SimpleAuthentication.ts
@@ -0,0 +1,20 @@
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import RegisterAndLoginTwoFactor from "../../../helpers/behaviors/RegisterAndLoginTwoFactor";
+import VerifyUrlIs from "../../../helpers/assertions/VerifyUrlIs";
+
+export default function () {
+ describe('The user is redirected to target url upon successful authentication', function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ await RegisterAndLoginTwoFactor(this.driver, 'john', "password", true, 'https://admin.example.com:8080/secret.html');
+ });
+
+ after(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it('should redirect the user', async function() {
+ await VerifyUrlIs(this.driver, 'https://admin.example.com:8080/secret.html');
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/dockerhub/test.ts b/test/suites/dockerhub/test.ts
new file mode 100644
index 000000000..5faed631f
--- /dev/null
+++ b/test/suites/dockerhub/test.ts
@@ -0,0 +1,25 @@
+import AutheliaSuite from '../../helpers/context/AutheliaSuite';
+import DockerCompose from '../../helpers/context/DockerCompose';
+import { composeFiles } from './environment';
+import Assert from 'assert';
+import SimpleAuthentication from './scenarii/SimpleAuthentication';
+
+AutheliaSuite(__dirname, function() {
+ this.timeout(15000);
+ const dockerCompose = new DockerCompose(composeFiles);
+
+ describe('Check the container', function() {
+ it('should be running', async function() {
+ const stdout = await dockerCompose.ps();
+ const lines = stdout.split("\n");
+ const autheliaLine = lines.filter(l => l.indexOf('authelia_1') > -1);
+ if (autheliaLine.length != 1) {
+ throw new Error('Authelia container not found...');
+ }
+ // check if the container is up.
+ Assert(autheliaLine[0].indexOf(' Up ') > -1);
+ });
+ });
+
+ describe('Simple authentication', SimpleAuthentication);
+});
\ No newline at end of file
diff --git a/test/suites/high-availability/README.md b/test/suites/high-availability/README.md
new file mode 100644
index 000000000..e2c34e022
--- /dev/null
+++ b/test/suites/high-availability/README.md
@@ -0,0 +1,15 @@
+# High-availability suite
+
+This suite is made to test Authelia in a *complete* environment, that is, with
+all components making Authelia highly available.
+
+## Components
+
+This suite will spawn nginx as the edge reverse proxy, redis and mongo for storing
+user sessions and configurations, LDAP for storing user accounts and authenticating,
+as well as a few helpers such as a fake webmail to receive e-mails sent by Authelia
+and httpbin to check headers forwarded by Authelia.
+
+## Tests
+
+There is broad range of tests in this suite. Check out in the *scenarii* directory.
\ No newline at end of file
diff --git a/test/suites/high-availability/config.yml b/test/suites/high-availability/config.yml
new file mode 100644
index 000000000..6cbf82a19
--- /dev/null
+++ b/test/suites/high-availability/config.yml
@@ -0,0 +1,262 @@
+###############################################################
+# Authelia configuration #
+###############################################################
+
+# The port to listen on
+port: 9091
+
+# Log level
+#
+# Level of verbosity for logs
+logs_level: debug
+
+# Default redirection URL
+#
+# If user tries to authenticate without any referer, Authelia
+# does not know where to redirect the user to at the end of the
+# authentication process.
+# This parameter allows you to specify the default redirection
+# URL Authelia will use in such a case.
+#
+# Note: this parameter is optional. If not provided, user won't
+# be redirected upon successful authentication.
+default_redirection_url: https://home.example.com:8080/
+
+# TOTP Issuer Name
+#
+# This will be the issuer name displayed in Google Authenticator
+# See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format for more info on issuer names
+totp:
+ issuer: authelia.com
+
+# The authentication backend to use for verifying user passwords
+# and retrieve information such as email address and groups
+# users belong to.
+#
+# There are two supported backends: `ldap` and `file`.
+authentication_backend:
+ # LDAP backend configuration.
+ #
+ # This backend allows Authelia to be scaled to more
+ # than one instance and therefore is recommended for
+ # production.
+ ldap:
+ # The url of the ldap server
+ url: ldap://127.0.0.1
+
+ # The base dn for every entries
+ base_dn: dc=example,dc=com
+
+ # An additional dn to define the scope to all users
+ additional_users_dn: ou=users
+
+ # The users filter used to find the user DN
+ # {0} is a matcher replaced by username.
+ # 'cn={0}' by default.
+ users_filter: cn={0}
+
+ # An additional dn to define the scope of groups
+ additional_groups_dn: ou=groups
+
+ # The groups filter used for retrieving groups of a given user.
+ # {0} is a matcher replaced by username.
+ # {dn} is a matcher replaced by user DN.
+ # 'member={dn}' by default.
+ groups_filter: (&(member={dn})(objectclass=groupOfNames))
+
+ # The attribute holding the name of the group
+ group_name_attribute: cn
+
+ # The attribute holding the mail address of the user
+ mail_attribute: mail
+
+ # The username and password of the admin user.
+ user: cn=admin,dc=example,dc=com
+ password: password
+
+ # File backend configuration.
+ #
+ # With this backend, the users database is stored in a file
+ # which is updated when users reset their passwords.
+ # Therefore, this backend is meant to be used in a dev environment
+ # and not in production since it prevents Authelia to be scaled to
+ # more than one instance.
+ #
+ ## file:
+ ## path: ./users_database.yml
+
+
+# Access Control
+#
+# Access control is a list of rules defining the authorizations applied for one
+# resource to users or group of users.
+#
+# If 'access_control' is not defined, ACL rules are disabled and the `bypass`
+# rule is applied, i.e., access is allowed to anyone. Otherwise restrictions follow
+# the rules defined.
+#
+# Note: One can use the wildcard * to match any subdomain.
+# It must stand at the beginning of the pattern. (example: *.mydomain.com)
+#
+# Note: You must put patterns containing wildcards between simple quotes for the YAML
+# to be syntaxically correct.
+#
+# Definition: A `rule` is an object with the following keys: `domain`, `subject`,
+# `policy` and `resources`.
+#
+# - `domain` defines which domain or set of domains the rule applies to.
+#
+# - `subject` defines the subject to apply authorizations to. This parameter is
+# optional and matching any user if not provided. If provided, the parameter
+# represents either a user or a group. It should be of the form 'user:'
+# or 'group:'.
+#
+# - `policy` is the policy to apply to resources. It must be either `bypass`,
+# `one_factor`, `two_factor` or `deny`.
+#
+# - `resources` is a list of regular expressions that matches a set of resources to
+# apply the policy to. This parameter is optional and matches any resource if not
+# provided.
+#
+# Note: the order of the rules is important. The first policy matching
+# (domain, resource, subject) applies.
+access_control:
+ # Default policy can either be `bypass`, `one_factor`, `two_factor` or `deny`.
+ # It is the policy applied to any resource if there is no policy to be applied
+ # to the user.
+ default_policy: deny
+
+ rules:
+ # Rules applied to everyone
+ - domain: public.example.com
+ policy: two_factor
+ - domain: single_factor.example.com
+ policy: one_factor
+
+ # Rules applied to 'admin' group
+ - domain: 'mx2.mail.example.com'
+ subject: 'group:admin'
+ policy: deny
+ - domain: '*.example.com'
+ subject: 'group:admin'
+ policy: two_factor
+
+ # Rules applied to 'dev' group
+ - domain: dev.example.com
+ resources:
+ - '^/groups/dev/.*$'
+ subject: 'group:dev'
+ policy: two_factor
+
+ # Rules applied to user 'john'
+ - domain: dev.example.com
+ resources:
+ - '^/users/john/.*$'
+ subject: 'user:john'
+ policy: two_factor
+
+
+ # Rules applied to user 'harry'
+ - domain: dev.example.com
+ resources:
+ - '^/users/harry/.*$'
+ subject: 'user:harry'
+ policy: two_factor
+
+ # Rules applied to user 'bob'
+ - domain: '*.mail.example.com'
+ subject: 'user:bob'
+ policy: two_factor
+ - domain: 'dev.example.com'
+ resources:
+ - '^/users/bob/.*$'
+ subject: 'user:bob'
+ policy: two_factor
+
+
+# Configuration of session cookies
+#
+# The session cookies identify the user once logged in.
+session:
+ # The name of the session cookie. (default: authelia_session).
+ name: authelia_session
+
+ # The secret to encrypt the session cookie.
+ secret: unsecure_session_secret
+
+ # The time in ms before the cookie expires and session is reset.
+ expiration: 3600000 # 1 hour
+
+ # The inactivity time in ms before the session is reset.
+ inactivity: 300000 # 5 minutes
+
+ # The domain to protect.
+ # Note: the authenticator must also be in that domain. If empty, the cookie
+ # is restricted to the subdomain of the issuer.
+ domain: example.com
+
+ # The redis connection details
+ redis:
+ host: 127.0.0.1
+ port: 6379
+ password: authelia
+
+# Configuration of the authentication regulation mechanism.
+#
+# This mechanism prevents attackers from brute forcing the first factor.
+# It bans the user if too many attempts are done in a short period of
+# time.
+regulation:
+ # The number of failed login attempts before user is banned.
+ # Set it to 0 to disable regulation.
+ max_retries: 3
+
+ # The time range during which the user can attempt login before being banned.
+ # The user is banned if the authenticaction failed `max_retries` times in a `find_time` seconds window.
+ find_time: 15
+
+ # The length of time before a banned user can login again.
+ ban_time: 5
+
+# Configuration of the storage backend used to store data and secrets.
+#
+# You must use only an available configuration: local, mongo
+storage:
+ # The directory where the DB files will be saved
+ ## local:
+ ## path: /var/lib/authelia/store
+
+ # Settings to connect to mongo server
+ mongo:
+ url: mongodb://127.0.0.1
+ database: authelia
+ auth:
+ username: authelia
+ password: authelia
+
+# Configuration of the notification system.
+#
+# Notifications are sent to users when they require a password reset, a u2f
+# registration or a TOTP registration.
+# Use only an available configuration: filesystem, gmail
+notifier:
+ # For testing purpose, notifications can be sent in a file
+ ## filesystem:
+ ## filename: /tmp/authelia/notification.txt
+
+ # Use your email account to send the notifications. You can use an app password.
+ # List of valid services can be found here: https://nodemailer.com/smtp/well-known/
+ ## email:
+ ## username: user@example.com
+ ## password: yourpassword
+ ## sender: admin@example.com
+ ## service: gmail
+
+ # Use a SMTP server for sending notifications
+ smtp:
+ username: test
+ password: password
+ secure: false
+ host: 127.0.0.1
+ port: 1025
+ sender: admin@example.com
diff --git a/test/suites/high-availability/environment.ts b/test/suites/high-availability/environment.ts
new file mode 100644
index 000000000..de25d2f20
--- /dev/null
+++ b/test/suites/high-availability/environment.ts
@@ -0,0 +1,40 @@
+import DockerEnvironment from "../../helpers/context/DockerEnvironment";
+import AutheliaServer from "../../helpers/context/AutheliaServer";
+import { exec } from "../../helpers/utils/exec";
+import fs from 'fs';
+
+const composeFiles = [
+ 'docker-compose.yml',
+ 'example/compose/mongo/docker-compose.yml',
+ 'example/compose/redis/docker-compose.yml',
+ 'example/compose/nginx/backend/docker-compose.yml',
+ 'example/compose/nginx/portal/docker-compose.yml',
+ 'example/compose/smtp/docker-compose.yml',
+ 'example/compose/httpbin/docker-compose.yml',
+ 'example/compose/ldap/docker-compose.admin.yml', // This is just used for administration, not for testing.
+ 'example/compose/ldap/docker-compose.yml'
+]
+
+const dockerEnv = new DockerEnvironment(composeFiles);
+const autheliaServer = new AutheliaServer(__dirname + '/config.yml');
+
+async function setup() {
+ // In dev mode Authelia has the server served on one port and the frontend on another port.
+ await exec('./example/compose/nginx/portal/render.js ' + (fs.existsSync('.suite') ? '': '--production'));
+
+ console.log(`Prepare environment with docker-compose...`);
+ await dockerEnv.start();
+
+ console.log('Start Authelia server.');
+ await autheliaServer.start();
+}
+
+async function teardown() {
+ console.log('Stop Authelia server.');
+ await autheliaServer.stop();
+
+ console.log(`Cleanup environment with docker-compose...`);
+ await dockerEnv.stop();
+}
+
+export { setup, teardown, composeFiles };
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/AccessControl.ts b/test/suites/high-availability/scenarii/AccessControl.ts
new file mode 100644
index 000000000..225cb436e
--- /dev/null
+++ b/test/suites/high-availability/scenarii/AccessControl.ts
@@ -0,0 +1,108 @@
+import LoginAndRegisterTotp from "../../../helpers/LoginAndRegisterTotp";
+import VisitPage from "../../../helpers/VisitPage";
+import VerifySecretObserved from "../../../helpers/assertions/VerifySecretObserved";
+import WithDriver from "../../../helpers/context/WithDriver";
+import FillLoginPageAndClick from "../../../helpers/FillLoginPageAndClick";
+import ValidateTotp from "../../../helpers/ValidateTotp";
+import VerifyUrlIs from "../../../helpers/assertions/VerifyUrlIs";
+import Logout from "../../../helpers/Logout";
+import VisitPageAndWaitUrlIs from "../../../helpers/behaviors/VisitPageAndWaitUrlIs";
+
+async function ShouldHaveAccessTo(url: string) {
+ it('should have access to ' + url, async function() {
+ await VisitPageAndWaitUrlIs(this.driver, url);
+ await VerifySecretObserved(this.driver);
+ })
+}
+
+async function ShouldNotHaveAccessTo(url: string) {
+ it('should not have access to ' + url, async function() {
+ await VisitPage(this.driver, url);
+ await VerifyUrlIs(this.driver, 'https://login.example.com:8080/');
+ })
+}
+
+// we verify that the user has only access to want he is granted to.
+export default function() {
+
+ // We ensure that bob has access to what he is granted to
+ describe('Permissions of user john', function() {
+ after(async function() {
+ await Logout(this.driver);
+ })
+
+ WithDriver();
+
+ before(async function() {
+ const secret = await LoginAndRegisterTotp(this.driver, "john", "password", true);
+ await VisitPageAndWaitUrlIs(this.driver, 'https://login.example.com:8080/');
+ await FillLoginPageAndClick(this.driver, 'john', 'password', false);
+ await ValidateTotp(this.driver, secret);
+ })
+
+ ShouldHaveAccessTo('https://public.example.com:8080/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/groups/admin/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/groups/dev/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/users/john/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/users/harry/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/users/bob/secret.html');
+ ShouldHaveAccessTo('https://admin.example.com:8080/secret.html');
+ ShouldHaveAccessTo('https://mx1.mail.example.com:8080/secret.html');
+ ShouldHaveAccessTo('https://single_factor.example.com:8080/secret.html');
+ ShouldNotHaveAccessTo('https://mx2.mail.example.com:8080/secret.html');
+ })
+
+ // We ensure that bob has access to what he is granted to
+ describe('Permissions of user bob', function() {
+ after(async function() {
+ await Logout(this.driver);
+ })
+
+ WithDriver();
+
+ before(async function() {
+ const secret = await LoginAndRegisterTotp(this.driver, "bob", "password", true);
+ await VisitPageAndWaitUrlIs(this.driver, 'https://login.example.com:8080/');
+ await FillLoginPageAndClick(this.driver, 'bob', 'password', false);
+ await ValidateTotp(this.driver, secret);
+ })
+
+ ShouldHaveAccessTo('https://public.example.com:8080/secret.html');
+ ShouldNotHaveAccessTo('https://dev.example.com:8080/groups/admin/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/groups/dev/secret.html');
+ ShouldNotHaveAccessTo('https://dev.example.com:8080/users/john/secret.html');
+ ShouldNotHaveAccessTo('https://dev.example.com:8080/users/harry/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/users/bob/secret.html');
+ ShouldNotHaveAccessTo('https://admin.example.com:8080/secret.html');
+ ShouldHaveAccessTo('https://mx1.mail.example.com:8080/secret.html');
+ ShouldHaveAccessTo('https://single_factor.example.com:8080/secret.html');
+ ShouldHaveAccessTo('https://mx2.mail.example.com:8080/secret.html');
+ })
+
+ // We ensure that harry has access to what he is granted to
+ describe('Permissions of user harry', function() {
+ after(async function() {
+ await Logout(this.driver);
+ })
+
+ WithDriver();
+
+ before(async function() {
+ const secret = await LoginAndRegisterTotp(this.driver, "harry", "password", true);
+ await VisitPageAndWaitUrlIs(this.driver, 'https://login.example.com:8080/');
+ await FillLoginPageAndClick(this.driver, 'harry', 'password', false);
+ await ValidateTotp(this.driver, secret);
+ })
+
+ ShouldHaveAccessTo('https://public.example.com:8080/secret.html');
+ ShouldNotHaveAccessTo('https://dev.example.com:8080/groups/admin/secret.html');
+ ShouldNotHaveAccessTo('https://dev.example.com:8080/groups/dev/secret.html');
+ ShouldNotHaveAccessTo('https://dev.example.com:8080/users/john/secret.html');
+ ShouldHaveAccessTo('https://dev.example.com:8080/users/harry/secret.html');
+ ShouldNotHaveAccessTo('https://dev.example.com:8080/users/bob/secret.html');
+ ShouldNotHaveAccessTo('https://admin.example.com:8080/secret.html');
+ ShouldNotHaveAccessTo('https://mx1.mail.example.com:8080/secret.html');
+ ShouldHaveAccessTo('https://single_factor.example.com:8080/secret.html');
+ ShouldNotHaveAccessTo('https://mx2.mail.example.com:8080/secret.html');
+ })
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/AutheliaRestart.ts b/test/suites/high-availability/scenarii/AutheliaRestart.ts
new file mode 100644
index 000000000..c2cad8cbb
--- /dev/null
+++ b/test/suites/high-availability/scenarii/AutheliaRestart.ts
@@ -0,0 +1,71 @@
+import Logout from "../../../helpers/Logout";
+import ChildProcess from 'child_process';
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import VerifySecretObserved from "../../../helpers/assertions/VerifySecretObserved";
+import RegisterAndLoginTwoFactor from "../../../helpers/behaviors/RegisterAndLoginTwoFactor";
+import VisitPageAndWaitUrlIs from "../../../helpers/behaviors/VisitPageAndWaitUrlIs";
+import { GET_Expect502 } from "../../../helpers/utils/Requests";
+import LoginAndRegisterTotp from "../../../helpers/LoginAndRegisterTotp";
+import FullLogin from "../../../helpers/FullLogin";
+
+export default function() {
+ describe('Session is still valid after Authelia restarts', function() {
+ before(async function() {
+ // Be sure to start fresh
+ ChildProcess.execSync('rm -f .authelia-interrupt');
+
+ this.driver = await StartDriver();
+ await RegisterAndLoginTwoFactor(this.driver, 'john', "password", true, 'https://admin.example.com:8080/secret.html');
+ await VisitPageAndWaitUrlIs(this.driver, 'https://home.example.com:8080/');
+ });
+
+ after(async function() {
+ await Logout(this.driver);
+ await StopDriver(this.driver);
+
+ // Be sure to cleanup
+ ChildProcess.execSync('rm -f .authelia-interrupt');
+ });
+
+ it("should still access the secret after Authelia restarted", async function() {
+ ChildProcess.execSync('touch .authelia-interrupt');
+ await GET_Expect502('https://login.example.com:8080/api/state');
+ await this.driver.sleep(1000);
+ ChildProcess.execSync('rm .authelia-interrupt');
+ await this.driver.sleep(4000);
+
+ await VisitPageAndWaitUrlIs(this.driver, 'https://admin.example.com:8080/secret.html');
+ await VerifySecretObserved(this.driver);
+ });
+ });
+
+ describe('Secrets are persisted even if Authelia restarts', function() {
+ before(async function() {
+ // Be sure to start fresh
+ ChildProcess.execSync('rm -f .authelia-interrupt');
+
+ this.driver = await StartDriver();
+ this.secret = await LoginAndRegisterTotp(this.driver, 'john', "password", true);
+ await Logout(this.driver);
+ });
+
+ after(async function() {
+ await Logout(this.driver);
+ await StopDriver(this.driver);
+
+ // Be sure to cleanup
+ ChildProcess.execSync('rm -f .authelia-interrupt');
+ });
+
+ it("should still access the secret after Authelia restarted", async function() {
+ ChildProcess.execSync('touch .authelia-interrupt');
+ await GET_Expect502('https://login.example.com:8080/api/state');
+ await this.driver.sleep(1000);
+ ChildProcess.execSync('rm .authelia-interrupt');
+ await this.driver.sleep(4000);
+
+ // The user can re-authenticate with the secret.
+ await FullLogin(this.driver, 'john', this.secret, 'https://admin.example.com:8080/secret.html')
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/AuthenticationRegulation.ts b/test/suites/high-availability/scenarii/AuthenticationRegulation.ts
new file mode 100644
index 000000000..99a092fc3
--- /dev/null
+++ b/test/suites/high-availability/scenarii/AuthenticationRegulation.ts
@@ -0,0 +1,36 @@
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import LoginAs from "../../../helpers/LoginAs";
+import VerifyNotificationDisplayed from "../../../helpers/assertions/VerifyNotificationDisplayed";
+import VerifyIsSecondFactorStage from "../../../helpers/assertions/VerifyIsSecondFactorStage";
+
+export default function() {
+ describe('Authelia regulates authentications when a hacker is brute forcing', function() {
+ this.timeout(15000);
+ beforeEach(async function() {
+ this.driver = await StartDriver();
+ });
+
+ afterEach(async function() {
+ await StopDriver(this.driver);
+ });
+
+ it("should return an error message when providing correct credentials the 4th time.", async function() {
+ await LoginAs(this.driver, "blackhat", "bad-password");
+ await VerifyNotificationDisplayed(this.driver, "Authentication failed. Please check your credentials.");
+ await LoginAs(this.driver, "blackhat", "bad-password");
+ await VerifyNotificationDisplayed(this.driver, "Authentication failed. Please check your credentials.");
+ await LoginAs(this.driver, "blackhat", "bad-password");
+ await VerifyNotificationDisplayed(this.driver, "Authentication failed. Please check your credentials.");
+
+ // when providing good credentials, the hacker is regulated and see same message as previously.
+ await LoginAs(this.driver, "blackhat", "password");
+ await VerifyNotificationDisplayed(this.driver, "Authentication failed. Please check your credentials.");
+
+ // Wait the regulation ban time before retrying with correct credentials.
+ // It should authenticate normally.
+ await this.driver.sleep(6000);
+ await LoginAs(this.driver, "blackhat", "password");
+ await VerifyIsSecondFactorStage(this.driver);
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/BasicAuthentication.ts b/test/suites/high-availability/scenarii/BasicAuthentication.ts
new file mode 100644
index 000000000..941abfa69
--- /dev/null
+++ b/test/suites/high-availability/scenarii/BasicAuthentication.ts
@@ -0,0 +1,34 @@
+import Request from 'request-promise';
+
+async function GetSecret(username: string, password: string) {
+ return await Request('https://single_factor.example.com:8080/secret.html', {
+ auth: {
+ username,
+ password
+ },
+ rejectUnauthorized: false,
+ });
+}
+
+export default function() {
+ it("should retrieve secret when Authorization header is provided", async function() {
+ const res = await GetSecret('john', 'password');
+ if (res.indexOf('This is a very important secret!') < 0) {
+ throw new Error('Cannot access secret.');
+ }
+ });
+
+ it("should not retrieve secret when providing bad password", async function() {
+ const res = await GetSecret('john', 'bad-password');
+ if (res.indexOf('This is a very important secret!') >= 0) {
+ throw new Error('Cannot access secret.');
+ }
+ });
+
+ it("should not retrieve secret when authenticating with unexisting user", async function() {
+ const res = await GetSecret('dontexist', 'password');
+ if (res.indexOf('This is a very important secret!') >= 0) {
+ throw new Error('Cannot access secret.');
+ }
+ });
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/CustomHeadersForwarded.ts b/test/suites/high-availability/scenarii/CustomHeadersForwarded.ts
new file mode 100644
index 000000000..2fdc8d045
--- /dev/null
+++ b/test/suites/high-availability/scenarii/CustomHeadersForwarded.ts
@@ -0,0 +1,52 @@
+import Logout from "../../../helpers/Logout";
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import RegisterAndLoginWith2FA from "../../../helpers/behaviors/RegisterAndLoginTwoFactor";
+import VerifyForwardedHeaderIs from "../../../helpers/assertions/VerifyForwardedHeaderIs";
+import LoginOneFactor from "../../../helpers/behaviors/LoginOneFactor";
+import VerifyUrlIs from "../../../helpers/assertions/VerifyUrlIs";
+
+export default function() {
+ describe("Custom-Forwarded-User and Custom-Forwarded-Groups are correctly forwarded to protected backend", function() {
+ this.timeout(10000);
+
+ describe("With single factor", function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ await LoginOneFactor(this.driver, "john", "password", "https://single_factor.example.com:8080/headers");
+ });
+
+ after(async function() {
+ await Logout(this.driver);
+ await StopDriver(this.driver);
+ });
+
+ it("should see header 'Custom-Forwarded-User' set to 'john'", async function() {
+ await VerifyForwardedHeaderIs(this.driver, 'Custom-Forwarded-User', 'john');
+ });
+
+ it("should see header 'Custom-Forwarded-Groups' set to 'dev,admin'", async function() {
+ await VerifyForwardedHeaderIs(this.driver, 'Custom-Forwarded-Groups', 'dev,admin');
+ });
+ });
+
+ describe("With two factors", function() {
+ before(async function() {
+ this.driver = await StartDriver();
+ await RegisterAndLoginWith2FA(this.driver, "john", "password", true, "https://public.example.com:8080/headers");
+ });
+
+ after(async function() {
+ await Logout(this.driver);
+ await StopDriver(this.driver);
+ });
+
+ it("should see header 'Custom-Forwarded-User' set to 'john'", async function() {
+ await VerifyForwardedHeaderIs(this.driver, 'Custom-Forwarded-User', 'john');
+ });
+
+ it("should see header 'Custom-Forwarded-Groups' set to 'dev,admin'", async function() {
+ await VerifyForwardedHeaderIs(this.driver, 'Custom-Forwarded-Groups', 'dev,admin');
+ });
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/EnforceInternalRedirectionsOnly.ts b/test/suites/high-availability/scenarii/EnforceInternalRedirectionsOnly.ts
new file mode 100644
index 000000000..a8e01565d
--- /dev/null
+++ b/test/suites/high-availability/scenarii/EnforceInternalRedirectionsOnly.ts
@@ -0,0 +1,70 @@
+import LoginAndRegisterTotp from "../../../helpers/LoginAndRegisterTotp";
+import FillLoginPageWithUserAndPasswordAndClick from '../../../helpers/FillLoginPageAndClick';
+import ValidateTotp from "../../../helpers/ValidateTotp";
+import Logout from "../../../helpers/Logout";
+import VerifyIsAlreadyAuthenticatedStage from "../../../helpers/assertions/VerifyIsAlreadyAuthenticatedStage";
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import VisitPageAndWaitUrlIs from "../../../helpers/behaviors/VisitPageAndWaitUrlIs";
+import VerifyUrlIs from "../../../helpers/assertions/VerifyUrlIs";
+
+/*
+ * Authelia should not be vulnerable to open redirection. Otherwise it would aid an
+ * attacker in conducting a phishing attack.
+ *
+ * To avoid the issue, Authelia's client scans the URL and prevent any redirection if
+ * the URL is pointing to an external domain.
+ */
+export default function() {
+ describe("Only redirection to a subdomain of the protected domain should be allowed", function() {
+ this.timeout(10000);
+ let secret: string;
+
+ beforeEach(async function() {
+ this.driver = await StartDriver();
+ secret = await LoginAndRegisterTotp(this.driver, "john", "password", true)
+ });
+
+ afterEach(async function() {
+ await Logout(this.driver);
+ await StopDriver(this.driver);
+ })
+
+ function CannotRedirectTo(url: string) {
+ it(`should redirect to already authenticated page when requesting ${url}`, async function() {
+ await VisitPageAndWaitUrlIs(this.driver, `https://login.example.com:8080/?rd=${url}`);
+ await FillLoginPageWithUserAndPasswordAndClick(this.driver, 'john', 'password');
+ await ValidateTotp(this.driver, secret);
+ await VerifyIsAlreadyAuthenticatedStage(this.driver);
+ });
+ }
+
+ function CanRedirectTo(url: string) {
+ it(`should redirect to ${url}`, async function() {
+ await VisitPageAndWaitUrlIs(this.driver, `https://login.example.com:8080/?rd=${url}`);
+ await FillLoginPageWithUserAndPasswordAndClick(this.driver, 'john', 'password');
+ await ValidateTotp(this.driver, secret);
+ await VerifyUrlIs(this.driver, url);
+ });
+ }
+
+ describe('Cannot redirect to https://www.google.fr', function() {
+ // Do not redirect to another domain than example.com
+ CannotRedirectTo("https://www.google.fr");
+ });
+
+ describe('Cannot redirect to https://public.example.com.a:8080', function() {
+ // Do not redirect to another domain than example.com
+ CannotRedirectTo("https://public.example.com.a:8080");
+ });
+
+ describe('Cannot redirect to http://public.example.com:8080', function() {
+ // Do not redirect to http website
+ CannotRedirectTo("http://public.example.com:8080");
+ });
+
+ describe('Can redirect to https://public.example.com:8080/', function() {
+ // Can redirect to any subdomain of the domain protected by Authelia.
+ CanRedirectTo("https://public.example.com:8080/");
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/MongoConnectionRecovery.ts b/test/suites/high-availability/scenarii/MongoConnectionRecovery.ts
new file mode 100644
index 000000000..db72213dd
--- /dev/null
+++ b/test/suites/high-availability/scenarii/MongoConnectionRecovery.ts
@@ -0,0 +1,24 @@
+import LoginAndRegisterTotp from "../../../helpers/LoginAndRegisterTotp";
+import FullLogin from "../../../helpers/FullLogin";
+import child_process from 'child_process';
+import WithDriver from "../../../helpers/context/WithDriver";
+import Logout from "../../../helpers/Logout";
+import { composeFiles } from '../environment';
+import DockerCompose from "../../../helpers/context/DockerCompose";
+
+export default function() {
+ after(async function() {
+ await Logout(this.driver);
+ })
+
+ WithDriver();
+
+ it("should be able to login after mongo restarts", async function() {
+ this.timeout(30000);
+
+ const secret = await LoginAndRegisterTotp(this.driver, "john", "password", true);
+ const dockerCompose = new DockerCompose(composeFiles);
+ await dockerCompose.restart('mongo');
+ await FullLogin(this.driver, "john", secret, "https://admin.example.com:8080/secret.html");
+ });
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/scenarii/SingleFactorAuthentication.ts b/test/suites/high-availability/scenarii/SingleFactorAuthentication.ts
new file mode 100644
index 000000000..a31887a5e
--- /dev/null
+++ b/test/suites/high-availability/scenarii/SingleFactorAuthentication.ts
@@ -0,0 +1,37 @@
+import Logout from "../../../helpers/Logout";
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+import LoginOneFactor from "../../../helpers/behaviors/LoginOneFactor";
+import VerifySecretObserved from "../../../helpers/assertions/VerifySecretObserved";
+import VisitPage from "../../../helpers/VisitPage";
+import VerifyUrlIs from "../../../helpers/assertions/VerifyUrlIs";
+import VerifyIsSecondFactorStage from "../../../helpers/assertions/VerifyIsSecondFactorStage";
+
+/*
+ * Those tests are related to single factor protected resources.
+ */
+export default function() {
+ beforeEach(async function() {
+ this.driver = await StartDriver();
+ });
+
+ afterEach(async function() {
+ await Logout(this.driver);
+ await StopDriver(this.driver);
+ });
+
+ it("should redirect user after first stage", async function() {
+ await LoginOneFactor(this.driver, "john", "password", "https://single_factor.example.com:8080/secret.html");
+ await VerifySecretObserved(this.driver);
+ });
+
+ it("should redirect to portal if not enough authorized", async function() {
+ await LoginOneFactor(this.driver, "john", "password", "https://single_factor.example.com:8080/secret.html");
+ await VisitPage(this.driver, "https://admin.example.com:8080/secret.html");
+
+ // the url should be the one from the portal.
+ await VerifyUrlIs(this.driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+
+ // And the user should end up on the second factor page.
+ await VerifyIsSecondFactorStage(this.driver);
+ });
+}
\ No newline at end of file
diff --git a/test/suites/high-availability/test.ts b/test/suites/high-availability/test.ts
new file mode 100644
index 000000000..25d5c951c
--- /dev/null
+++ b/test/suites/high-availability/test.ts
@@ -0,0 +1,23 @@
+import AutheliaSuite from "../../helpers/context/AutheliaSuite";
+import MongoConnectionRecovery from "./scenarii/MongoConnectionRecovery";
+import EnforceInternalRedirectionsOnly from "./scenarii/EnforceInternalRedirectionsOnly";
+import AccessControl from "./scenarii/AccessControl";
+import CustomHeadersForwarded from "./scenarii/CustomHeadersForwarded";
+import SingleFactorAuthentication from "./scenarii/SingleFactorAuthentication";
+import BasicAuthentication from "./scenarii/BasicAuthentication";
+import AutheliaRestart from "./scenarii/AutheliaRestart";
+import AuthenticationRegulation from "./scenarii/AuthenticationRegulation";
+
+AutheliaSuite(__dirname, function() {
+ this.timeout(10000);
+
+ describe('Custom headers forwarded to backend', CustomHeadersForwarded);
+ describe('Access control', AccessControl);
+
+ describe('Mongo broken connection recovery', MongoConnectionRecovery);
+ describe('Enforce internal redirections only', EnforceInternalRedirectionsOnly);
+ describe('Single factor authentication', SingleFactorAuthentication);
+ describe('Basic authentication', BasicAuthentication);
+ describe('Authelia restart', AutheliaRestart);
+ describe('Authentication regulation', AuthenticationRegulation);
+});
\ No newline at end of file
diff --git a/test/suites/short-timeouts/README.md b/test/suites/short-timeouts/README.md
new file mode 100644
index 000000000..049cd5745
--- /dev/null
+++ b/test/suites/short-timeouts/README.md
@@ -0,0 +1,12 @@
+# Short timeouts suite
+
+This suite has been created to configure Authelia with short timeouts for sessions expiration
+in order to test the inactivity feature and the remember me feature.
+
+## Components
+
+Authelia, nginx and a fake webmail for registering a device.
+
+## Tests
+
+Related to user inactivity.
\ No newline at end of file
diff --git a/config.minimal.yml b/test/suites/short-timeouts/config.yml
similarity index 90%
rename from config.minimal.yml
rename to test/suites/short-timeouts/config.yml
index 8da7bc5e1..992f5b903 100644
--- a/config.minimal.yml
+++ b/test/suites/short-timeouts/config.yml
@@ -2,18 +2,26 @@
# Authelia minimal configuration #
###############################################################
+port: 9091
+
+logs_level: debug
+
+default_redirection_url: https://home.example.com:8080/
+
authentication_backend:
file:
- path: /etc/authelia/users_database.yml
+ path: ./test/suites/short-timeouts/users_database.test.yml
session:
secret: unsecure_session_secret
domain: example.com
+ inactivity: 5000
+ expiration: 8000
# Configuration of the storage backend used to store data and secrets. i.e. totp data
storage:
local:
- path: /etc/authelia/storage
+ path: /tmp/authelia/db
# TOTP Issuer Name
#
@@ -67,10 +75,10 @@ regulation:
max_retries: 3
# The user is banned if the authenticaction failed `max_retries` times in a `find_time` seconds window.
- find_time: 120
+ find_time: 10
# The length of time before a banned user can login again.
- ban_time: 300
+ ban_time: 5
# Default redirection URL
#
@@ -96,7 +104,7 @@ notifier:
username: test
password: password
secure: false
- host: 'smtp'
+ host: 127.0.0.1
port: 1025
sender: admin@example.com
diff --git a/test/suites/short-timeouts/environment.ts b/test/suites/short-timeouts/environment.ts
new file mode 100644
index 000000000..6d865c6a9
--- /dev/null
+++ b/test/suites/short-timeouts/environment.ts
@@ -0,0 +1,28 @@
+import fs from 'fs';
+import { exec } from "../../helpers/utils/exec";
+import AutheliaServer from "../../helpers/context/AutheliaServer";
+import DockerEnvironment from "../../helpers/context/DockerEnvironment";
+
+const autheliaServer = new AutheliaServer(__dirname + '/config.yml');
+const dockerEnv = new DockerEnvironment([
+ 'docker-compose.yml',
+ 'example/compose/nginx/backend/docker-compose.yml',
+ 'example/compose/nginx/portal/docker-compose.yml',
+ 'example/compose/smtp/docker-compose.yml',
+])
+
+async function setup() {
+ await exec(`cp ${__dirname}/users_database.yml ${__dirname}/users_database.test.yml`);
+ await exec('mkdir -p /tmp/authelia/db');
+ await exec('./example/compose/nginx/portal/render.js ' + (fs.existsSync('.suite') ? '': '--production'));
+ await dockerEnv.start();
+ await autheliaServer.start();
+}
+
+async function teardown() {
+ await dockerEnv.stop();
+ await autheliaServer.stop();
+ await exec('rm -r /tmp/authelia/db');
+}
+
+export { setup, teardown };
\ No newline at end of file
diff --git a/test/suites/short-timeouts/scenarii/Inactivity.ts b/test/suites/short-timeouts/scenarii/Inactivity.ts
new file mode 100644
index 000000000..a3a9172c5
--- /dev/null
+++ b/test/suites/short-timeouts/scenarii/Inactivity.ts
@@ -0,0 +1,66 @@
+import LoginAndRegisterTotp from "../../../helpers/LoginAndRegisterTotp";
+import FillLoginPageWithUserAndPasswordAndClick from "../../../helpers/FillLoginPageAndClick";
+import ValidateTotp from "../../../helpers/ValidateTotp";
+import { WebDriver } from "selenium-webdriver";
+import VisitPageAndWaitUrlIs from "../../../helpers/behaviors/VisitPageAndWaitUrlIs";
+import VisitPage from "../../../helpers/VisitPage";
+import VerifyUrlIs from "../../../helpers/assertions/VerifyUrlIs";
+import { StartDriver, StopDriver } from "../../../helpers/context/WithDriver";
+
+export default function(this: Mocha.ISuiteCallbackContext) {
+ this.timeout(20000);
+
+ beforeEach(async function() {
+ this.driver = await StartDriver();
+ this.secret = await LoginAndRegisterTotp(this.driver, "john", "password", true);
+ });
+
+ afterEach(async function() {
+ await StopDriver(this.driver);
+ })
+
+ it("should disconnect user after inactivity period", async function() {
+ const driver = this.driver as WebDriver;
+ await VisitPageAndWaitUrlIs(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+ await FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password', false);
+ await ValidateTotp(driver, this.secret);
+ await VerifyUrlIs(driver, "https://admin.example.com:8080/secret.html");
+ await VisitPageAndWaitUrlIs(driver, "https://home.example.com:8080/");
+ await driver.sleep(6000);
+ await driver.get("https://admin.example.com:8080/secret.html");
+ await VerifyUrlIs(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+ });
+
+ it('should disconnect user after cookie expiration', async function() {
+ const driver = this.driver as WebDriver;
+ await VisitPageAndWaitUrlIs(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+ await FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password', false);
+ await ValidateTotp(driver, this.secret);
+ await VerifyUrlIs(driver, "https://admin.example.com:8080/secret.html");
+ await VisitPageAndWaitUrlIs(driver, "https://home.example.com:8080/");
+
+ await driver.sleep(4000);
+ await driver.get("https://admin.example.com:8080/secret.html");
+ await driver.sleep(2000);
+ await driver.get("https://admin.example.com:8080/secret.html");
+
+ await driver.sleep(2000);
+ await driver.get("https://admin.example.com:8080/secret.html");
+ await VerifyUrlIs(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+
+ });
+
+ describe('With remember me checkbox checked', function() {
+ it("should keep user logged in after inactivity period", async function() {
+ const driver = this.driver as WebDriver;
+ await VisitPageAndWaitUrlIs(driver, "https://login.example.com:8080/?rd=https://admin.example.com:8080/secret.html");
+ await FillLoginPageWithUserAndPasswordAndClick(driver, 'john', 'password', true);
+ await ValidateTotp(driver, this.secret);
+ await VerifyUrlIs(driver, "https://admin.example.com:8080/secret.html");
+ await VisitPageAndWaitUrlIs(driver, "https://home.example.com:8080/");
+ await driver.sleep(6000);
+ await VisitPage(driver, "https://admin.example.com:8080/secret.html");
+ await VerifyUrlIs(driver, "https://admin.example.com:8080/secret.html");
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/suites/short-timeouts/test.ts b/test/suites/short-timeouts/test.ts
new file mode 100644
index 000000000..a12d72a14
--- /dev/null
+++ b/test/suites/short-timeouts/test.ts
@@ -0,0 +1,7 @@
+import AutheliaSuite from "../../helpers/context/AutheliaSuite";
+import Inactivity from './scenarii/Inactivity';
+
+AutheliaSuite(__dirname, function() {
+ this.timeout(10000);
+ describe('Inactivity period', Inactivity);
+});
\ No newline at end of file
diff --git a/test/suites/short-timeouts/users_database.yml b/test/suites/short-timeouts/users_database.yml
new file mode 100644
index 000000000..7832e85b3
--- /dev/null
+++ b/test/suites/short-timeouts/users_database.yml
@@ -0,0 +1,29 @@
+###############################################################
+# Users Database #
+###############################################################
+
+# This file can be used if you do not have an LDAP set up.
+
+# List of users
+users:
+ john:
+ password: "{CRYPT}$6$rounds=500000$jgiCMRyGXzoqpxS3$w2pJeZnnH8bwW3zzvoMWtTRfQYsHbWbD/hquuQ5vUeIyl9gdwBIt6RWk2S6afBA0DPakbeWgD/4SZPiS0hYtU/"
+ email: john.doe@authelia.com
+ groups:
+ - admins
+ - dev
+
+ harry:
+ password: "{CRYPT}$6$rounds=500000$jgiCMRyGXzoqpxS3$w2pJeZnnH8bwW3zzvoMWtTRfQYsHbWbD/hquuQ5vUeIyl9gdwBIt6RWk2S6afBA0DPakbeWgD/4SZPiS0hYtU/"
+ emails: harry.potter@authelia.com
+ groups: []
+
+ bob:
+ password: "{CRYPT}$6$rounds=500000$jgiCMRyGXzoqpxS3$w2pJeZnnH8bwW3zzvoMWtTRfQYsHbWbD/hquuQ5vUeIyl9gdwBIt6RWk2S6afBA0DPakbeWgD/4SZPiS0hYtU/"
+ email: bob.dylan@authelia.com
+ groups:
+ - dev
+
+ james:
+ password: "{CRYPT}$6$rounds=500000$jgiCMRyGXzoqpxS3$w2pJeZnnH8bwW3zzvoMWtTRfQYsHbWbD/hquuQ5vUeIyl9gdwBIt6RWk2S6afBA0DPakbeWgD/4SZPiS0hYtU/"
+ email: james.dean@authelia.com
\ No newline at end of file
diff --git a/test/tsconfig.json b/test/tsconfig.json
new file mode 100644
index 000000000..66fabf625
--- /dev/null
+++ b/test/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "target": "es6",
+ "allowJs": true,
+ "skipLibCheck": false,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "commonjs",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": false,
+ "noEmit": true,
+ "lib": [
+ "esnext"
+ ]
+ }
+}
diff --git a/themes/README b/themes/README
deleted file mode 100644
index 86bb0c1d5..000000000
--- a/themes/README
+++ /dev/null
@@ -1,17 +0,0 @@
-In order to build a specific Theme you need to run:
-
-grunt --theme=
-
-Available themes are: default, black, matrix, squares, triangles
-
-Ex. grunt --theme=black
-
-By default the original theme will be built.
-
-If you want to create a new theme:
-- Use the themes/default as source material
-- Make a copy in themes folder with a new name
-- Add your theme folder name on line 237,239 and 242
-- And then build as above, with your theme folder/name.
-
-That's it!
diff --git a/themes/black/client/src/css/.directory b/themes/black/client/src/css/.directory
deleted file mode 100644
index 6e4b3f639..000000000
--- a/themes/black/client/src/css/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,56,41
-Version=3
-ViewMode=1
diff --git a/themes/black/client/src/css/00-bootstrap.min.css b/themes/black/client/src/css/00-bootstrap.min.css
deleted file mode 100644
index dfeacbb88..000000000
--- a/themes/black/client/src/css/00-bootstrap.min.css
+++ /dev/null
@@ -1,5768 +0,0 @@
-/*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html{
- font-family:sans-serif;
- -webkit-text-size-adjust:100%;
- -ms-text-size-adjust:100%
-}
-body{
- margin:0
-}
-article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{
- display:block
-}
-audio,canvas,progress,video{
- display:inline-block;
- vertical-align:baseline
-}
-audio:not([controls]){
- display:none;
- height:0
-}
-[hidden],template{
- display:none
-}
-a{
- background-color:transparent
-}
-a:active,a:hover{
- outline:0
-}
-abbr[title]{
- border-bottom:1px dotted
-}
-b,strong{
- font-weight:700
-}
-dfn{
- font-style:italic
-}
-h1{
- margin:.67em 0;
- font-size:2em
-}
-mark{
- color:#000;
- background:#ff0
-}
-small{
- font-size:80%
-}
-sub,sup{
- position:relative;
- font-size:75%;
- line-height:0;
- vertical-align:baseline
-}
-sup{
- top:-.5em
-}
-sub{
- bottom:-.25em
-}
-img{
- border:0
-}
-svg:not(:root){
- overflow:hidden
-}
-figure{
- margin:1em 40px
-}
-hr{
- height:0;
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box
-}
-pre{
- overflow:auto
-}
-code,kbd,pre,samp{
- font-family:monospace,monospace;
- font-size:1em
-}
-button,input,optgroup,select,textarea{
- margin:0;
- font:inherit;
- color:inherit
-}
-button{
- overflow:visible
-}
-button,select{
- text-transform:none
-}
-button,html input[type=button],input[type=reset],input[type=submit]{
- -webkit-appearance:button;
- cursor:pointer
-}
-button[disabled],html input[disabled]{
- cursor:default
-}
-button::-moz-focus-inner,input::-moz-focus-inner{
- padding:0;
- border:0
-}
-input{
- line-height:normal
-}
-input[type=checkbox],input[type=radio]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box;
- padding:0
-}
-input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{
- height:auto
-}
-input[type=search]{
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box;
- -webkit-appearance:textfield
-}
-input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{
- -webkit-appearance:none
-}
-fieldset{
- padding:.35em .625em .75em;
- margin:0 2px;
- border:1px solid silver
-}
-legend{
- padding:0;
- border:0
-}
-textarea{
- overflow:auto
-}
-optgroup{
- font-weight:700
-}
-table{
- border-spacing:0;
- border-collapse:collapse
-}
-td,th{
- padding:0
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print{
- *,:after,:before{
- color:#000!important;
- text-shadow:none!important;
- background:0 0!important;
- -webkit-box-shadow:none!important;
- box-shadow:none!important
- }
- a,a:visited{
- text-decoration:underline
- }
- a[href]:after{
- content:" (" attr(href) ")"
- }
- abbr[title]:after{
- content:" (" attr(title) ")"
- }
- a[href^="javascript:"]:after,a[href^="#"]:after{
- content:""
- }
- blockquote,pre{
- border:1px solid #999;
- page-break-inside:avoid
- }
- thead{
- display:table-header-group
- }
- img,tr{
- page-break-inside:avoid
- }
- img{
- max-width:100%!important
- }
- h2,h3,p{
- orphans:3;
- widows:3
- }
- h2,h3{
- page-break-after:avoid
- }
- .navbar{
- display:none
- }
- .btn>.caret,.dropup>.btn>.caret{
- border-top-color:#000!important
- }
- .label{
- border:1px solid #000
- }
- .table{
- border-collapse:collapse!important
- }
- .table td,.table th{
- background-color:#fff!important
- }
- .table-bordered td,.table-bordered th{
- border:1px solid #ddd!important
- }
-}
-@font-face{
- font-family:'Glyphicons Halflings';
- src:url(../fonts/glyphicons-halflings-regular.eot);
- src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')
-}
-.glyphicon{
- position:relative;
- top:1px;
- display:inline-block;
- font-family:'Glyphicons Halflings';
- font-style:normal;
- font-weight:400;
- line-height:1;
- -webkit-font-smoothing:antialiased;
- -moz-osx-font-smoothing:grayscale
-}
-.glyphicon-asterisk:before{
- content:"\002a"
-}
-.glyphicon-plus:before{
- content:"\002b"
-}
-.glyphicon-eur:before,.glyphicon-euro:before{
- content:"\20ac"
-}
-.glyphicon-minus:before{
- content:"\2212"
-}
-.glyphicon-cloud:before{
- content:"\2601"
-}
-.glyphicon-envelope:before{
- content:"\2709"
-}
-.glyphicon-pencil:before{
- content:"\270f"
-}
-.glyphicon-glass:before{
- content:"\e001"
-}
-.glyphicon-music:before{
- content:"\e002"
-}
-.glyphicon-search:before{
- content:"\e003"
-}
-.glyphicon-heart:before{
- content:"\e005"
-}
-.glyphicon-star:before{
- content:"\e006"
-}
-.glyphicon-star-empty:before{
- content:"\e007"
-}
-.glyphicon-user:before{
- content:"\e008"
-}
-.glyphicon-film:before{
- content:"\e009"
-}
-.glyphicon-th-large:before{
- content:"\e010"
-}
-.glyphicon-th:before{
- content:"\e011"
-}
-.glyphicon-th-list:before{
- content:"\e012"
-}
-.glyphicon-ok:before{
- content:"\e013"
-}
-.glyphicon-remove:before{
- content:"\e014"
-}
-.glyphicon-zoom-in:before{
- content:"\e015"
-}
-.glyphicon-zoom-out:before{
- content:"\e016"
-}
-.glyphicon-off:before{
- content:"\e017"
-}
-.glyphicon-signal:before{
- content:"\e018"
-}
-.glyphicon-cog:before{
- content:"\e019"
-}
-.glyphicon-trash:before{
- content:"\e020"
-}
-.glyphicon-home:before{
- content:"\e021"
-}
-.glyphicon-file:before{
- content:"\e022"
-}
-.glyphicon-time:before{
- content:"\e023"
-}
-.glyphicon-road:before{
- content:"\e024"
-}
-.glyphicon-download-alt:before{
- content:"\e025"
-}
-.glyphicon-download:before{
- content:"\e026"
-}
-.glyphicon-upload:before{
- content:"\e027"
-}
-.glyphicon-inbox:before{
- content:"\e028"
-}
-.glyphicon-play-circle:before{
- content:"\e029"
-}
-.glyphicon-repeat:before{
- content:"\e030"
-}
-.glyphicon-refresh:before{
- content:"\e031"
-}
-.glyphicon-list-alt:before{
- content:"\e032"
-}
-.glyphicon-lock:before{
- content:"\e033"
-}
-.glyphicon-flag:before{
- content:"\e034"
-}
-.glyphicon-headphones:before{
- content:"\e035"
-}
-.glyphicon-volume-off:before{
- content:"\e036"
-}
-.glyphicon-volume-down:before{
- content:"\e037"
-}
-.glyphicon-volume-up:before{
- content:"\e038"
-}
-.glyphicon-qrcode:before{
- content:"\e039"
-}
-.glyphicon-barcode:before{
- content:"\e040"
-}
-.glyphicon-tag:before{
- content:"\e041"
-}
-.glyphicon-tags:before{
- content:"\e042"
-}
-.glyphicon-book:before{
- content:"\e043"
-}
-.glyphicon-bookmark:before{
- content:"\e044"
-}
-.glyphicon-print:before{
- content:"\e045"
-}
-.glyphicon-camera:before{
- content:"\e046"
-}
-.glyphicon-font:before{
- content:"\e047"
-}
-.glyphicon-bold:before{
- content:"\e048"
-}
-.glyphicon-italic:before{
- content:"\e049"
-}
-.glyphicon-text-height:before{
- content:"\e050"
-}
-.glyphicon-text-width:before{
- content:"\e051"
-}
-.glyphicon-align-left:before{
- content:"\e052"
-}
-.glyphicon-align-center:before{
- content:"\e053"
-}
-.glyphicon-align-right:before{
- content:"\e054"
-}
-.glyphicon-align-justify:before{
- content:"\e055"
-}
-.glyphicon-list:before{
- content:"\e056"
-}
-.glyphicon-indent-left:before{
- content:"\e057"
-}
-.glyphicon-indent-right:before{
- content:"\e058"
-}
-.glyphicon-facetime-video:before{
- content:"\e059"
-}
-.glyphicon-picture:before{
- content:"\e060"
-}
-.glyphicon-map-marker:before{
- content:"\e062"
-}
-.glyphicon-adjust:before{
- content:"\e063"
-}
-.glyphicon-tint:before{
- content:"\e064"
-}
-.glyphicon-edit:before{
- content:"\e065"
-}
-.glyphicon-share:before{
- content:"\e066"
-}
-.glyphicon-check:before{
- content:"\e067"
-}
-.glyphicon-move:before{
- content:"\e068"
-}
-.glyphicon-step-backward:before{
- content:"\e069"
-}
-.glyphicon-fast-backward:before{
- content:"\e070"
-}
-.glyphicon-backward:before{
- content:"\e071"
-}
-.glyphicon-play:before{
- content:"\e072"
-}
-.glyphicon-pause:before{
- content:"\e073"
-}
-.glyphicon-stop:before{
- content:"\e074"
-}
-.glyphicon-forward:before{
- content:"\e075"
-}
-.glyphicon-fast-forward:before{
- content:"\e076"
-}
-.glyphicon-step-forward:before{
- content:"\e077"
-}
-.glyphicon-eject:before{
- content:"\e078"
-}
-.glyphicon-chevron-left:before{
- content:"\e079"
-}
-.glyphicon-chevron-right:before{
- content:"\e080"
-}
-.glyphicon-plus-sign:before{
- content:"\e081"
-}
-.glyphicon-minus-sign:before{
- content:"\e082"
-}
-.glyphicon-remove-sign:before{
- content:"\e083"
-}
-.glyphicon-ok-sign:before{
- content:"\e084"
-}
-.glyphicon-question-sign:before{
- content:"\e085"
-}
-.glyphicon-info-sign:before{
- content:"\e086"
-}
-.glyphicon-screenshot:before{
- content:"\e087"
-}
-.glyphicon-remove-circle:before{
- content:"\e088"
-}
-.glyphicon-ok-circle:before{
- content:"\e089"
-}
-.glyphicon-ban-circle:before{
- content:"\e090"
-}
-.glyphicon-arrow-left:before{
- content:"\e091"
-}
-.glyphicon-arrow-right:before{
- content:"\e092"
-}
-.glyphicon-arrow-up:before{
- content:"\e093"
-}
-.glyphicon-arrow-down:before{
- content:"\e094"
-}
-.glyphicon-share-alt:before{
- content:"\e095"
-}
-.glyphicon-resize-full:before{
- content:"\e096"
-}
-.glyphicon-resize-small:before{
- content:"\e097"
-}
-.glyphicon-exclamation-sign:before{
- content:"\e101"
-}
-.glyphicon-gift:before{
- content:"\e102"
-}
-.glyphicon-leaf:before{
- content:"\e103"
-}
-.glyphicon-fire:before{
- content:"\e104"
-}
-.glyphicon-eye-open:before{
- content:"\e105"
-}
-.glyphicon-eye-close:before{
- content:"\e106"
-}
-.glyphicon-warning-sign:before{
- content:"\e107"
-}
-.glyphicon-plane:before{
- content:"\e108"
-}
-.glyphicon-calendar:before{
- content:"\e109"
-}
-.glyphicon-random:before{
- content:"\e110"
-}
-.glyphicon-comment:before{
- content:"\e111"
-}
-.glyphicon-magnet:before{
- content:"\e112"
-}
-.glyphicon-chevron-up:before{
- content:"\e113"
-}
-.glyphicon-chevron-down:before{
- content:"\e114"
-}
-.glyphicon-retweet:before{
- content:"\e115"
-}
-.glyphicon-shopping-cart:before{
- content:"\e116"
-}
-.glyphicon-folder-close:before{
- content:"\e117"
-}
-.glyphicon-folder-open:before{
- content:"\e118"
-}
-.glyphicon-resize-vertical:before{
- content:"\e119"
-}
-.glyphicon-resize-horizontal:before{
- content:"\e120"
-}
-.glyphicon-hdd:before{
- content:"\e121"
-}
-.glyphicon-bullhorn:before{
- content:"\e122"
-}
-.glyphicon-bell:before{
- content:"\e123"
-}
-.glyphicon-certificate:before{
- content:"\e124"
-}
-.glyphicon-thumbs-up:before{
- content:"\e125"
-}
-.glyphicon-thumbs-down:before{
- content:"\e126"
-}
-.glyphicon-hand-right:before{
- content:"\e127"
-}
-.glyphicon-hand-left:before{
- content:"\e128"
-}
-.glyphicon-hand-up:before{
- content:"\e129"
-}
-.glyphicon-hand-down:before{
- content:"\e130"
-}
-.glyphicon-circle-arrow-right:before{
- content:"\e131"
-}
-.glyphicon-circle-arrow-left:before{
- content:"\e132"
-}
-.glyphicon-circle-arrow-up:before{
- content:"\e133"
-}
-.glyphicon-circle-arrow-down:before{
- content:"\e134"
-}
-.glyphicon-globe:before{
- content:"\e135"
-}
-.glyphicon-wrench:before{
- content:"\e136"
-}
-.glyphicon-tasks:before{
- content:"\e137"
-}
-.glyphicon-filter:before{
- content:"\e138"
-}
-.glyphicon-briefcase:before{
- content:"\e139"
-}
-.glyphicon-fullscreen:before{
- content:"\e140"
-}
-.glyphicon-dashboard:before{
- content:"\e141"
-}
-.glyphicon-paperclip:before{
- content:"\e142"
-}
-.glyphicon-heart-empty:before{
- content:"\e143"
-}
-.glyphicon-link:before{
- content:"\e144"
-}
-.glyphicon-phone:before{
- content:"\e145"
-}
-.glyphicon-pushpin:before{
- content:"\e146"
-}
-.glyphicon-usd:before{
- content:"\e148"
-}
-.glyphicon-gbp:before{
- content:"\e149"
-}
-.glyphicon-sort:before{
- content:"\e150"
-}
-.glyphicon-sort-by-alphabet:before{
- content:"\e151"
-}
-.glyphicon-sort-by-alphabet-alt:before{
- content:"\e152"
-}
-.glyphicon-sort-by-order:before{
- content:"\e153"
-}
-.glyphicon-sort-by-order-alt:before{
- content:"\e154"
-}
-.glyphicon-sort-by-attributes:before{
- content:"\e155"
-}
-.glyphicon-sort-by-attributes-alt:before{
- content:"\e156"
-}
-.glyphicon-unchecked:before{
- content:"\e157"
-}
-.glyphicon-expand:before{
- content:"\e158"
-}
-.glyphicon-collapse-down:before{
- content:"\e159"
-}
-.glyphicon-collapse-up:before{
- content:"\e160"
-}
-.glyphicon-log-in:before{
- content:"\e161"
-}
-.glyphicon-flash:before{
- content:"\e162"
-}
-.glyphicon-log-out:before{
- content:"\e163"
-}
-.glyphicon-new-window:before{
- content:"\e164"
-}
-.glyphicon-record:before{
- content:"\e165"
-}
-.glyphicon-save:before{
- content:"\e166"
-}
-.glyphicon-open:before{
- content:"\e167"
-}
-.glyphicon-saved:before{
- content:"\e168"
-}
-.glyphicon-import:before{
- content:"\e169"
-}
-.glyphicon-export:before{
- content:"\e170"
-}
-.glyphicon-send:before{
- content:"\e171"
-}
-.glyphicon-floppy-disk:before{
- content:"\e172"
-}
-.glyphicon-floppy-saved:before{
- content:"\e173"
-}
-.glyphicon-floppy-remove:before{
- content:"\e174"
-}
-.glyphicon-floppy-save:before{
- content:"\e175"
-}
-.glyphicon-floppy-open:before{
- content:"\e176"
-}
-.glyphicon-credit-card:before{
- content:"\e177"
-}
-.glyphicon-transfer:before{
- content:"\e178"
-}
-.glyphicon-cutlery:before{
- content:"\e179"
-}
-.glyphicon-header:before{
- content:"\e180"
-}
-.glyphicon-compressed:before{
- content:"\e181"
-}
-.glyphicon-earphone:before{
- content:"\e182"
-}
-.glyphicon-phone-alt:before{
- content:"\e183"
-}
-.glyphicon-tower:before{
- content:"\e184"
-}
-.glyphicon-stats:before{
- content:"\e185"
-}
-.glyphicon-sd-video:before{
- content:"\e186"
-}
-.glyphicon-hd-video:before{
- content:"\e187"
-}
-.glyphicon-subtitles:before{
- content:"\e188"
-}
-.glyphicon-sound-stereo:before{
- content:"\e189"
-}
-.glyphicon-sound-dolby:before{
- content:"\e190"
-}
-.glyphicon-sound-5-1:before{
- content:"\e191"
-}
-.glyphicon-sound-6-1:before{
- content:"\e192"
-}
-.glyphicon-sound-7-1:before{
- content:"\e193"
-}
-.glyphicon-copyright-mark:before{
- content:"\e194"
-}
-.glyphicon-registration-mark:before{
- content:"\e195"
-}
-.glyphicon-cloud-download:before{
- content:"\e197"
-}
-.glyphicon-cloud-upload:before{
- content:"\e198"
-}
-.glyphicon-tree-conifer:before{
- content:"\e199"
-}
-.glyphicon-tree-deciduous:before{
- content:"\e200"
-}
-.glyphicon-cd:before{
- content:"\e201"
-}
-.glyphicon-save-file:before{
- content:"\e202"
-}
-.glyphicon-open-file:before{
- content:"\e203"
-}
-.glyphicon-level-up:before{
- content:"\e204"
-}
-.glyphicon-copy:before{
- content:"\e205"
-}
-.glyphicon-paste:before{
- content:"\e206"
-}
-.glyphicon-alert:before{
- content:"\e209"
-}
-.glyphicon-equalizer:before{
- content:"\e210"
-}
-.glyphicon-king:before{
- content:"\e211"
-}
-.glyphicon-queen:before{
- content:"\e212"
-}
-.glyphicon-pawn:before{
- content:"\e213"
-}
-.glyphicon-bishop:before{
- content:"\e214"
-}
-.glyphicon-knight:before{
- content:"\e215"
-}
-.glyphicon-baby-formula:before{
- content:"\e216"
-}
-.glyphicon-tent:before{
- content:"\26fa"
-}
-.glyphicon-blackboard:before{
- content:"\e218"
-}
-.glyphicon-bed:before{
- content:"\e219"
-}
-.glyphicon-apple:before{
- content:"\f8ff"
-}
-.glyphicon-erase:before{
- content:"\e221"
-}
-.glyphicon-hourglass:before{
- content:"\231b"
-}
-.glyphicon-lamp:before{
- content:"\e223"
-}
-.glyphicon-duplicate:before{
- content:"\e224"
-}
-.glyphicon-piggy-bank:before{
- content:"\e225"
-}
-.glyphicon-scissors:before{
- content:"\e226"
-}
-.glyphicon-bitcoin:before{
- content:"\e227"
-}
-.glyphicon-btc:before{
- content:"\e227"
-}
-.glyphicon-xbt:before{
- content:"\e227"
-}
-.glyphicon-yen:before{
- content:"\00a5"
-}
-.glyphicon-jpy:before{
- content:"\00a5"
-}
-.glyphicon-ruble:before{
- content:"\20bd"
-}
-.glyphicon-rub:before{
- content:"\20bd"
-}
-.glyphicon-scale:before{
- content:"\e230"
-}
-.glyphicon-ice-lolly:before{
- content:"\e231"
-}
-.glyphicon-ice-lolly-tasted:before{
- content:"\e232"
-}
-.glyphicon-education:before{
- content:"\e233"
-}
-.glyphicon-option-horizontal:before{
- content:"\e234"
-}
-.glyphicon-option-vertical:before{
- content:"\e235"
-}
-.glyphicon-menu-hamburger:before{
- content:"\e236"
-}
-.glyphicon-modal-window:before{
- content:"\e237"
-}
-.glyphicon-oil:before{
- content:"\e238"
-}
-.glyphicon-grain:before{
- content:"\e239"
-}
-.glyphicon-sunglasses:before{
- content:"\e240"
-}
-.glyphicon-text-size:before{
- content:"\e241"
-}
-.glyphicon-text-color:before{
- content:"\e242"
-}
-.glyphicon-text-background:before{
- content:"\e243"
-}
-.glyphicon-object-align-top:before{
- content:"\e244"
-}
-.glyphicon-object-align-bottom:before{
- content:"\e245"
-}
-.glyphicon-object-align-horizontal:before{
- content:"\e246"
-}
-.glyphicon-object-align-left:before{
- content:"\e247"
-}
-.glyphicon-object-align-vertical:before{
- content:"\e248"
-}
-.glyphicon-object-align-right:before{
- content:"\e249"
-}
-.glyphicon-triangle-right:before{
- content:"\e250"
-}
-.glyphicon-triangle-left:before{
- content:"\e251"
-}
-.glyphicon-triangle-bottom:before{
- content:"\e252"
-}
-.glyphicon-triangle-top:before{
- content:"\e253"
-}
-.glyphicon-console:before{
- content:"\e254"
-}
-.glyphicon-superscript:before{
- content:"\e255"
-}
-.glyphicon-subscript:before{
- content:"\e256"
-}
-.glyphicon-menu-left:before{
- content:"\e257"
-}
-.glyphicon-menu-right:before{
- content:"\e258"
-}
-.glyphicon-menu-down:before{
- content:"\e259"
-}
-.glyphicon-menu-up:before{
- content:"\e260"
-}
-*{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-:after,:before{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-html{
- font-size:10px;
- -webkit-tap-highlight-color:rgba(0,0,0,0)
-}
-body{
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- line-height:1.42857143;
- color:#333;
- background-color:#fff
-}
-button,input,select,textarea{
- font-family:inherit;
- font-size:inherit;
- line-height:inherit
-}
-a{
- color:#337ab7;
- text-decoration:none
-}
-a:focus,a:hover{
- color:#23527c;
- text-decoration:underline
-}
-a:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-figure{
- margin:0
-}
-img{
- vertical-align:middle
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{
- display:block;
- max-width:100%;
- height:auto
-}
-.img-rounded{
- border-radius:6px
-}
-.img-thumbnail{
- display:inline-block;
- max-width:100%;
- height:auto;
- padding:4px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:all .2s ease-in-out;
- -o-transition:all .2s ease-in-out;
- transition:all .2s ease-in-out
-}
-.img-circle{
- border-radius:50%
-}
-hr{
- margin-top:20px;
- margin-bottom:20px;
- border:0;
- border-top:1px solid #eee
-}
-.sr-only{
- position:absolute;
- width:1px;
- height:1px;
- padding:0;
- margin:-1px;
- overflow:hidden;
- clip:rect(0,0,0,0);
- border:0
-}
-.sr-only-focusable:active,.sr-only-focusable:focus{
- position:static;
- width:auto;
- height:auto;
- margin:0;
- overflow:visible;
- clip:auto
-}
-[role=button]{
- cursor:pointer
-}
-.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{
- font-family:inherit;
- font-weight:500;
- line-height:1.1;
- color:inherit
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-weight:400;
- line-height:1;
- color:#777
-}
-.h1,.h2,.h3,h1,h2,h3{
- margin-top:20px;
- margin-bottom:10px
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{
- font-size:65%
-}
-.h4,.h5,.h6,h4,h5,h6{
- margin-top:10px;
- margin-bottom:10px
-}
-.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-size:75%
-}
-.h1,h1{
- font-size:36px
-}
-.h2,h2{
- font-size:30px
-}
-.h3,h3{
- font-size:24px
-}
-.h4,h4{
- font-size:18px
-}
-.h5,h5{
- font-size:14px
-}
-.h6,h6{
- font-size:12px
-}
-p{
- margin:0 0 10px
-}
-.lead{
- margin-bottom:20px;
- font-size:16px;
- font-weight:300;
- line-height:1.4
-}
-@media (min-width:768px){
- .lead{
- font-size:21px
- }
-}
-.small,small{
- font-size:85%
-}
-.mark,mark{
- padding:.2em;
- background-color:#fcf8e3
-}
-.text-left{
- text-align:left
-}
-.text-right{
- text-align:right
-}
-.text-center{
- text-align:center
-}
-.text-justify{
- text-align:justify
-}
-.text-nowrap{
- white-space:nowrap
-}
-.text-lowercase{
- text-transform:lowercase
-}
-.text-uppercase{
- text-transform:uppercase
-}
-.text-capitalize{
- text-transform:capitalize
-}
-.text-muted{
- color:#777
-}
-.text-primary{
- color:#337ab7
-}
-a.text-primary:focus,a.text-primary:hover{
- color:#286090
-}
-.text-success{
- color:#3c763d
-}
-a.text-success:focus,a.text-success:hover{
- color:#2b542c
-}
-.text-info{
- color:#31708f
-}
-a.text-info:focus,a.text-info:hover{
- color:#245269
-}
-.text-warning{
- color:#8a6d3b
-}
-a.text-warning:focus,a.text-warning:hover{
- color:#66512c
-}
-.text-danger{
- color:#a94442
-}
-a.text-danger:focus,a.text-danger:hover{
- color:#843534
-}
-.bg-primary{
- color:#fff;
- background-color:#337ab7
-}
-a.bg-primary:focus,a.bg-primary:hover{
- background-color:#286090
-}
-.bg-success{
- background-color:#dff0d8
-}
-a.bg-success:focus,a.bg-success:hover{
- background-color:#c1e2b3
-}
-.bg-info{
- background-color:#d9edf7
-}
-a.bg-info:focus,a.bg-info:hover{
- background-color:#afd9ee
-}
-.bg-warning{
- background-color:#fcf8e3
-}
-a.bg-warning:focus,a.bg-warning:hover{
- background-color:#f7ecb5
-}
-.bg-danger{
- background-color:#f2dede
-}
-a.bg-danger:focus,a.bg-danger:hover{
- background-color:#e4b9b9
-}
-.page-header{
- padding-bottom:9px;
- margin:40px 0 20px;
- border-bottom:1px solid #eee
-}
-ol,ul{
- margin-top:0;
- margin-bottom:10px
-}
-ol ol,ol ul,ul ol,ul ul{
- margin-bottom:0
-}
-.list-unstyled{
- padding-left:0;
- list-style:none
-}
-.list-inline{
- padding-left:0;
- margin-left:-5px;
- list-style:none
-}
-.list-inline>li{
- display:inline-block;
- padding-right:5px;
- padding-left:5px
-}
-dl{
- margin-top:0;
- margin-bottom:20px
-}
-dd,dt{
- line-height:1.42857143
-}
-dt{
- font-weight:700
-}
-dd{
- margin-left:0
-}
-@media (min-width:768px){
- .dl-horizontal dt{
- float:left;
- width:160px;
- overflow:hidden;
- clear:left;
- text-align:right;
- text-overflow:ellipsis;
- white-space:nowrap
- }
- .dl-horizontal dd{
- margin-left:180px
- }
-}
-abbr[data-original-title],abbr[title]{
- cursor:help;
- border-bottom:1px dotted #777
-}
-.initialism{
- font-size:90%;
- text-transform:uppercase
-}
-blockquote{
- padding:10px 20px;
- margin:0 0 20px;
- font-size:17.5px;
- border-left:5px solid #eee
-}
-blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{
- margin-bottom:0
-}
-blockquote .small,blockquote footer,blockquote small{
- display:block;
- font-size:80%;
- line-height:1.42857143;
- color:#777
-}
-blockquote .small:before,blockquote footer:before,blockquote small:before{
- content:'\2014 \00A0'
-}
-.blockquote-reverse,blockquote.pull-right{
- padding-right:15px;
- padding-left:0;
- text-align:right;
- border-right:5px solid #eee;
- border-left:0
-}
-.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{
- content:''
-}
-.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{
- content:'\00A0 \2014'
-}
-address{
- margin-bottom:20px;
- font-style:normal;
- line-height:1.42857143
-}
-code,kbd,pre,samp{
- font-family:Menlo,Monaco,Consolas,"Courier New",monospace
-}
-code{
- padding:2px 4px;
- font-size:90%;
- color:#c7254e;
- background-color:#f9f2f4;
- border-radius:4px
-}
-kbd{
- padding:2px 4px;
- font-size:90%;
- color:#fff;
- background-color:#333;
- border-radius:3px;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)
-}
-kbd kbd{
- padding:0;
- font-size:100%;
- font-weight:700;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-pre{
- display:block;
- padding:9.5px;
- margin:0 0 10px;
- font-size:13px;
- line-height:1.42857143;
- color:#333;
- word-break:break-all;
- word-wrap:break-word;
- background-color:#f5f5f5;
- border:1px solid #ccc;
- border-radius:4px
-}
-pre code{
- padding:0;
- font-size:inherit;
- color:inherit;
- white-space:pre-wrap;
- background-color:transparent;
- border-radius:0
-}
-.pre-scrollable{
- max-height:340px;
- overflow-y:scroll
-}
-.container{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-@media (min-width:768px){
- .container{
- width:750px
- }
-}
-@media (min-width:992px){
- .container{
- width:970px
- }
-}
-@media (min-width:1200px){
- .container{
- width:1170px
- }
-}
-.container-fluid{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-.row{
- margin-right:-15px;
- margin-left:-15px
-}
-.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- position:relative;
- min-height:1px;
- padding-right:15px;
- padding-left:15px
-}
-.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- float:left
-}
-.col-xs-12{
- width:100%
-}
-.col-xs-11{
- width:91.66666667%
-}
-.col-xs-10{
- width:83.33333333%
-}
-.col-xs-9{
- width:75%
-}
-.col-xs-8{
- width:66.66666667%
-}
-.col-xs-7{
- width:58.33333333%
-}
-.col-xs-6{
- width:50%
-}
-.col-xs-5{
- width:41.66666667%
-}
-.col-xs-4{
- width:33.33333333%
-}
-.col-xs-3{
- width:25%
-}
-.col-xs-2{
- width:16.66666667%
-}
-.col-xs-1{
- width:8.33333333%
-}
-.col-xs-pull-12{
- right:100%
-}
-.col-xs-pull-11{
- right:91.66666667%
-}
-.col-xs-pull-10{
- right:83.33333333%
-}
-.col-xs-pull-9{
- right:75%
-}
-.col-xs-pull-8{
- right:66.66666667%
-}
-.col-xs-pull-7{
- right:58.33333333%
-}
-.col-xs-pull-6{
- right:50%
-}
-.col-xs-pull-5{
- right:41.66666667%
-}
-.col-xs-pull-4{
- right:33.33333333%
-}
-.col-xs-pull-3{
- right:25%
-}
-.col-xs-pull-2{
- right:16.66666667%
-}
-.col-xs-pull-1{
- right:8.33333333%
-}
-.col-xs-pull-0{
- right:auto
-}
-.col-xs-push-12{
- left:100%
-}
-.col-xs-push-11{
- left:91.66666667%
-}
-.col-xs-push-10{
- left:83.33333333%
-}
-.col-xs-push-9{
- left:75%
-}
-.col-xs-push-8{
- left:66.66666667%
-}
-.col-xs-push-7{
- left:58.33333333%
-}
-.col-xs-push-6{
- left:50%
-}
-.col-xs-push-5{
- left:41.66666667%
-}
-.col-xs-push-4{
- left:33.33333333%
-}
-.col-xs-push-3{
- left:25%
-}
-.col-xs-push-2{
- left:16.66666667%
-}
-.col-xs-push-1{
- left:8.33333333%
-}
-.col-xs-push-0{
- left:auto
-}
-.col-xs-offset-12{
- margin-left:100%
-}
-.col-xs-offset-11{
- margin-left:91.66666667%
-}
-.col-xs-offset-10{
- margin-left:83.33333333%
-}
-.col-xs-offset-9{
- margin-left:75%
-}
-.col-xs-offset-8{
- margin-left:66.66666667%
-}
-.col-xs-offset-7{
- margin-left:58.33333333%
-}
-.col-xs-offset-6{
- margin-left:50%
-}
-.col-xs-offset-5{
- margin-left:41.66666667%
-}
-.col-xs-offset-4{
- margin-left:33.33333333%
-}
-.col-xs-offset-3{
- margin-left:25%
-}
-.col-xs-offset-2{
- margin-left:16.66666667%
-}
-.col-xs-offset-1{
- margin-left:8.33333333%
-}
-.col-xs-offset-0{
- margin-left:0
-}
-@media (min-width:768px){
- .col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{
- float:left
- }
- .col-sm-12{
- width:100%
- }
- .col-sm-11{
- width:91.66666667%
- }
- .col-sm-10{
- width:83.33333333%
- }
- .col-sm-9{
- width:75%
- }
- .col-sm-8{
- width:66.66666667%
- }
- .col-sm-7{
- width:58.33333333%
- }
- .col-sm-6{
- width:50%
- }
- .col-sm-5{
- width:41.66666667%
- }
- .col-sm-4{
- width:33.33333333%
- }
- .col-sm-3{
- width:25%
- }
- .col-sm-2{
- width:16.66666667%
- }
- .col-sm-1{
- width:8.33333333%
- }
- .col-sm-pull-12{
- right:100%
- }
- .col-sm-pull-11{
- right:91.66666667%
- }
- .col-sm-pull-10{
- right:83.33333333%
- }
- .col-sm-pull-9{
- right:75%
- }
- .col-sm-pull-8{
- right:66.66666667%
- }
- .col-sm-pull-7{
- right:58.33333333%
- }
- .col-sm-pull-6{
- right:50%
- }
- .col-sm-pull-5{
- right:41.66666667%
- }
- .col-sm-pull-4{
- right:33.33333333%
- }
- .col-sm-pull-3{
- right:25%
- }
- .col-sm-pull-2{
- right:16.66666667%
- }
- .col-sm-pull-1{
- right:8.33333333%
- }
- .col-sm-pull-0{
- right:auto
- }
- .col-sm-push-12{
- left:100%
- }
- .col-sm-push-11{
- left:91.66666667%
- }
- .col-sm-push-10{
- left:83.33333333%
- }
- .col-sm-push-9{
- left:75%
- }
- .col-sm-push-8{
- left:66.66666667%
- }
- .col-sm-push-7{
- left:58.33333333%
- }
- .col-sm-push-6{
- left:50%
- }
- .col-sm-push-5{
- left:41.66666667%
- }
- .col-sm-push-4{
- left:33.33333333%
- }
- .col-sm-push-3{
- left:25%
- }
- .col-sm-push-2{
- left:16.66666667%
- }
- .col-sm-push-1{
- left:8.33333333%
- }
- .col-sm-push-0{
- left:auto
- }
- .col-sm-offset-12{
- margin-left:100%
- }
- .col-sm-offset-11{
- margin-left:91.66666667%
- }
- .col-sm-offset-10{
- margin-left:83.33333333%
- }
- .col-sm-offset-9{
- margin-left:75%
- }
- .col-sm-offset-8{
- margin-left:66.66666667%
- }
- .col-sm-offset-7{
- margin-left:58.33333333%
- }
- .col-sm-offset-6{
- margin-left:50%
- }
- .col-sm-offset-5{
- margin-left:41.66666667%
- }
- .col-sm-offset-4{
- margin-left:33.33333333%
- }
- .col-sm-offset-3{
- margin-left:25%
- }
- .col-sm-offset-2{
- margin-left:16.66666667%
- }
- .col-sm-offset-1{
- margin-left:8.33333333%
- }
- .col-sm-offset-0{
- margin-left:0
- }
-}
-@media (min-width:992px){
- .col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{
- float:left
- }
- .col-md-12{
- width:100%
- }
- .col-md-11{
- width:91.66666667%
- }
- .col-md-10{
- width:83.33333333%
- }
- .col-md-9{
- width:75%
- }
- .col-md-8{
- width:66.66666667%
- }
- .col-md-7{
- width:58.33333333%
- }
- .col-md-6{
- width:50%
- }
- .col-md-5{
- width:41.66666667%
- }
- .col-md-4{
- width:33.33333333%
- }
- .col-md-3{
- width:25%
- }
- .col-md-2{
- width:16.66666667%
- }
- .col-md-1{
- width:8.33333333%
- }
- .col-md-pull-12{
- right:100%
- }
- .col-md-pull-11{
- right:91.66666667%
- }
- .col-md-pull-10{
- right:83.33333333%
- }
- .col-md-pull-9{
- right:75%
- }
- .col-md-pull-8{
- right:66.66666667%
- }
- .col-md-pull-7{
- right:58.33333333%
- }
- .col-md-pull-6{
- right:50%
- }
- .col-md-pull-5{
- right:41.66666667%
- }
- .col-md-pull-4{
- right:33.33333333%
- }
- .col-md-pull-3{
- right:25%
- }
- .col-md-pull-2{
- right:16.66666667%
- }
- .col-md-pull-1{
- right:8.33333333%
- }
- .col-md-pull-0{
- right:auto
- }
- .col-md-push-12{
- left:100%
- }
- .col-md-push-11{
- left:91.66666667%
- }
- .col-md-push-10{
- left:83.33333333%
- }
- .col-md-push-9{
- left:75%
- }
- .col-md-push-8{
- left:66.66666667%
- }
- .col-md-push-7{
- left:58.33333333%
- }
- .col-md-push-6{
- left:50%
- }
- .col-md-push-5{
- left:41.66666667%
- }
- .col-md-push-4{
- left:33.33333333%
- }
- .col-md-push-3{
- left:25%
- }
- .col-md-push-2{
- left:16.66666667%
- }
- .col-md-push-1{
- left:8.33333333%
- }
- .col-md-push-0{
- left:auto
- }
- .col-md-offset-12{
- margin-left:100%
- }
- .col-md-offset-11{
- margin-left:91.66666667%
- }
- .col-md-offset-10{
- margin-left:83.33333333%
- }
- .col-md-offset-9{
- margin-left:75%
- }
- .col-md-offset-8{
- margin-left:66.66666667%
- }
- .col-md-offset-7{
- margin-left:58.33333333%
- }
- .col-md-offset-6{
- margin-left:50%
- }
- .col-md-offset-5{
- margin-left:41.66666667%
- }
- .col-md-offset-4{
- margin-left:33.33333333%
- }
- .col-md-offset-3{
- margin-left:25%
- }
- .col-md-offset-2{
- margin-left:16.66666667%
- }
- .col-md-offset-1{
- margin-left:8.33333333%
- }
- .col-md-offset-0{
- margin-left:0
- }
-}
-@media (min-width:1200px){
- .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{
- float:left
- }
- .col-lg-12{
- width:100%
- }
- .col-lg-11{
- width:91.66666667%
- }
- .col-lg-10{
- width:83.33333333%
- }
- .col-lg-9{
- width:75%
- }
- .col-lg-8{
- width:66.66666667%
- }
- .col-lg-7{
- width:58.33333333%
- }
- .col-lg-6{
- width:50%
- }
- .col-lg-5{
- width:41.66666667%
- }
- .col-lg-4{
- width:33.33333333%
- }
- .col-lg-3{
- width:25%
- }
- .col-lg-2{
- width:16.66666667%
- }
- .col-lg-1{
- width:8.33333333%
- }
- .col-lg-pull-12{
- right:100%
- }
- .col-lg-pull-11{
- right:91.66666667%
- }
- .col-lg-pull-10{
- right:83.33333333%
- }
- .col-lg-pull-9{
- right:75%
- }
- .col-lg-pull-8{
- right:66.66666667%
- }
- .col-lg-pull-7{
- right:58.33333333%
- }
- .col-lg-pull-6{
- right:50%
- }
- .col-lg-pull-5{
- right:41.66666667%
- }
- .col-lg-pull-4{
- right:33.33333333%
- }
- .col-lg-pull-3{
- right:25%
- }
- .col-lg-pull-2{
- right:16.66666667%
- }
- .col-lg-pull-1{
- right:8.33333333%
- }
- .col-lg-pull-0{
- right:auto
- }
- .col-lg-push-12{
- left:100%
- }
- .col-lg-push-11{
- left:91.66666667%
- }
- .col-lg-push-10{
- left:83.33333333%
- }
- .col-lg-push-9{
- left:75%
- }
- .col-lg-push-8{
- left:66.66666667%
- }
- .col-lg-push-7{
- left:58.33333333%
- }
- .col-lg-push-6{
- left:50%
- }
- .col-lg-push-5{
- left:41.66666667%
- }
- .col-lg-push-4{
- left:33.33333333%
- }
- .col-lg-push-3{
- left:25%
- }
- .col-lg-push-2{
- left:16.66666667%
- }
- .col-lg-push-1{
- left:8.33333333%
- }
- .col-lg-push-0{
- left:auto
- }
- .col-lg-offset-12{
- margin-left:100%
- }
- .col-lg-offset-11{
- margin-left:91.66666667%
- }
- .col-lg-offset-10{
- margin-left:83.33333333%
- }
- .col-lg-offset-9{
- margin-left:75%
- }
- .col-lg-offset-8{
- margin-left:66.66666667%
- }
- .col-lg-offset-7{
- margin-left:58.33333333%
- }
- .col-lg-offset-6{
- margin-left:50%
- }
- .col-lg-offset-5{
- margin-left:41.66666667%
- }
- .col-lg-offset-4{
- margin-left:33.33333333%
- }
- .col-lg-offset-3{
- margin-left:25%
- }
- .col-lg-offset-2{
- margin-left:16.66666667%
- }
- .col-lg-offset-1{
- margin-left:8.33333333%
- }
- .col-lg-offset-0{
- margin-left:0
- }
-}
-table{
- background-color:transparent
-}
-caption{
- padding-top:8px;
- padding-bottom:8px;
- color:#777;
- text-align:left
-}
-th{
- text-align:left
-}
-.table{
- width:100%;
- max-width:100%;
- margin-bottom:20px
-}
-.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{
- padding:8px;
- line-height:1.42857143;
- vertical-align:top;
- border-top:1px solid #ddd
-}
-.table>thead>tr>th{
- vertical-align:bottom;
- border-bottom:2px solid #ddd
-}
-.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{
- border-top:0
-}
-.table>tbody+tbody{
- border-top:2px solid #ddd
-}
-.table .table{
- background-color:#fff
-}
-.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{
- padding:5px
-}
-.table-bordered{
- border:1px solid #ddd
-}
-.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border:1px solid #ddd
-}
-.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border-bottom-width:2px
-}
-.table-striped>tbody>tr:nth-of-type(odd){
- background-color:#f9f9f9
-}
-.table-hover>tbody>tr:hover{
- background-color:#f5f5f5
-}
-table col[class*=col-]{
- position:static;
- display:table-column;
- float:none
-}
-table td[class*=col-],table th[class*=col-]{
- position:static;
- display:table-cell;
- float:none
-}
-.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{
- background-color:#f5f5f5
-}
-.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{
- background-color:#e8e8e8
-}
-.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{
- background-color:#dff0d8
-}
-.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{
- background-color:#d0e9c6
-}
-.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{
- background-color:#d9edf7
-}
-.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{
- background-color:#c4e3f3
-}
-.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{
- background-color:#fcf8e3
-}
-.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{
- background-color:#faf2cc
-}
-.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{
- background-color:#f2dede
-}
-.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{
- background-color:#ebcccc
-}
-.table-responsive{
- min-height:.01%;
- overflow-x:auto
-}
-@media screen and (max-width:767px){
- .table-responsive{
- width:100%;
- margin-bottom:15px;
- overflow-y:hidden;
- -ms-overflow-style:-ms-autohiding-scrollbar;
- border:1px solid #ddd
- }
- .table-responsive>.table{
- margin-bottom:0
- }
- .table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{
- white-space:nowrap
- }
- .table-responsive>.table-bordered{
- border:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
- }
- .table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
- }
-}
-fieldset{
- min-width:0;
- padding:0;
- margin:0;
- border:0
-}
-legend{
- display:block;
- width:100%;
- padding:0;
- margin-bottom:20px;
- font-size:21px;
- line-height:inherit;
- color:#333;
- border:0;
- border-bottom:1px solid #e5e5e5
-}
-label{
- display:inline-block;
- max-width:100%;
- margin-bottom:5px;
- font-weight:700
-}
-input[type=search]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-input[type=checkbox],input[type=radio]{
- margin:4px 0 0;
- margin-top:1px\9;
- line-height:normal
-}
-input[type=file]{
- display:block
-}
-input[type=range]{
- display:block;
- width:100%
-}
-select[multiple],select[size]{
- height:auto
-}
-input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-output{
- display:block;
- padding-top:7px;
- font-size:14px;
- line-height:1.42857143;
- color:#555
-}
-.form-control{
- display:block;
- width:100%;
- height:34px;
- padding:6px 12px;
- font-size:14px;
- line-height:1.42857143;
- color:#555;
- background-color:#fff;
- background-image:none;
- border:1px solid #ccc;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- -webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
- -o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;
- transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s
-}
-.form-control:focus{
- border-color:#66afe9;
- outline:0;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)
-}
-.form-control::-moz-placeholder{
- color:#999;
- opacity:1
-}
-.form-control:-ms-input-placeholder{
- color:#999
-}
-.form-control::-webkit-input-placeholder{
- color:#999
-}
-.form-control::-ms-expand{
- background-color:transparent;
- border:0
-}
-.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{
- background-color:#eee;
- opacity:1
-}
-.form-control[disabled],fieldset[disabled] .form-control{
- cursor:not-allowed
-}
-textarea.form-control{
- height:auto
-}
-input[type=search]{
- -webkit-appearance:none
-}
-@media screen and (-webkit-min-device-pixel-ratio:0){
- input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{
- line-height:34px
- }
- .input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{
- line-height:30px
- }
- .input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{
- line-height:46px
- }
-}
-.form-group{
- margin-bottom:15px
-}
-.checkbox,.radio{
- position:relative;
- display:block;
- margin-top:10px;
- margin-bottom:10px
-}
-.checkbox label,.radio label{
- min-height:20px;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- cursor:pointer
-}
-.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{
- position:absolute;
- margin-top:4px\9;
- margin-left:-20px
-}
-.checkbox+.checkbox,.radio+.radio{
- margin-top:-5px
-}
-.checkbox-inline,.radio-inline{
- position:relative;
- display:inline-block;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- vertical-align:middle;
- cursor:pointer
-}
-.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{
- margin-top:0;
- margin-left:10px
-}
-fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{
- cursor:not-allowed
-}
-.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{
- cursor:not-allowed
-}
-.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{
- cursor:not-allowed
-}
-.form-control-static{
- min-height:34px;
- padding-top:7px;
- padding-bottom:7px;
- margin-bottom:0
-}
-.form-control-static.input-lg,.form-control-static.input-sm{
- padding-right:0;
- padding-left:0
-}
-.input-sm{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-sm{
- height:30px;
- line-height:30px
-}
-select[multiple].input-sm,textarea.input-sm{
- height:auto
-}
-.form-group-sm .form-control{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.form-group-sm select.form-control{
- height:30px;
- line-height:30px
-}
-.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{
- height:auto
-}
-.form-group-sm .form-control-static{
- height:30px;
- min-height:32px;
- padding:6px 10px;
- font-size:12px;
- line-height:1.5
-}
-.input-lg{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-lg{
- height:46px;
- line-height:46px
-}
-select[multiple].input-lg,textarea.input-lg{
- height:auto
-}
-.form-group-lg .form-control{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.form-group-lg select.form-control{
- height:46px;
- line-height:46px
-}
-.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{
- height:auto
-}
-.form-group-lg .form-control-static{
- height:46px;
- min-height:38px;
- padding:11px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.has-feedback{
- position:relative
-}
-.has-feedback .form-control{
- padding-right:42.5px
-}
-.form-control-feedback{
- position:absolute;
- top:0;
- right:0;
- z-index:2;
- display:block;
- width:34px;
- height:34px;
- line-height:34px;
- text-align:center;
- pointer-events:none
-}
-.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{
- width:46px;
- height:46px;
- line-height:46px
-}
-.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{
- width:30px;
- height:30px;
- line-height:30px
-}
-.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{
- color:#3c763d
-}
-.has-success .form-control{
- border-color:#3c763d;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-success .form-control:focus{
- border-color:#2b542c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168
-}
-.has-success .input-group-addon{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#3c763d
-}
-.has-success .form-control-feedback{
- color:#3c763d
-}
-.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{
- color:#8a6d3b
-}
-.has-warning .form-control{
- border-color:#8a6d3b;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-warning .form-control:focus{
- border-color:#66512c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b
-}
-.has-warning .input-group-addon{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#8a6d3b
-}
-.has-warning .form-control-feedback{
- color:#8a6d3b
-}
-.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{
- color:#a94442
-}
-.has-error .form-control{
- border-color:#a94442;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-error .form-control:focus{
- border-color:#843534;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483
-}
-.has-error .input-group-addon{
- color:#a94442;
- background-color:#f2dede;
- border-color:#a94442
-}
-.has-error .form-control-feedback{
- color:#a94442
-}
-.has-feedback label~.form-control-feedback{
- top:25px
-}
-.has-feedback label.sr-only~.form-control-feedback{
- top:0
-}
-.help-block{
- display:block;
- margin-top:5px;
- margin-bottom:10px;
- color:#737373
-}
-@media (min-width:768px){
- .form-inline .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .form-inline .form-control-static{
- display:inline-block
- }
- .form-inline .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{
- width:auto
- }
- .form-inline .input-group>.form-control{
- width:100%
- }
- .form-inline .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox,.form-inline .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox label,.form-inline .radio label{
- padding-left:0
- }
- .form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .form-inline .has-feedback .form-control-feedback{
- top:0
- }
-}
-.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{
- padding-top:7px;
- margin-top:0;
- margin-bottom:0
-}
-.form-horizontal .checkbox,.form-horizontal .radio{
- min-height:27px
-}
-.form-horizontal .form-group{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .form-horizontal .control-label{
- padding-top:7px;
- margin-bottom:0;
- text-align:right
- }
-}
-.form-horizontal .has-feedback .form-control-feedback{
- right:15px
-}
-@media (min-width:768px){
- .form-horizontal .form-group-lg .control-label{
- padding-top:11px;
- font-size:18px
- }
-}
-@media (min-width:768px){
- .form-horizontal .form-group-sm .control-label{
- padding-top:6px;
- font-size:12px
- }
-}
-.btn{
- display:inline-block;
- padding:6px 12px;
- margin-bottom:0;
- font-size:14px;
- font-weight:400;
- line-height:1.42857143;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- -ms-touch-action:manipulation;
- touch-action:manipulation;
- cursor:pointer;
- -webkit-user-select:none;
- -moz-user-select:none;
- -ms-user-select:none;
- user-select:none;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-.btn.focus,.btn:focus,.btn:hover{
- color:#333;
- text-decoration:none
-}
-.btn.active,.btn:active{
- background-image:none;
- outline:0;
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn.disabled,.btn[disabled],fieldset[disabled] .btn{
- cursor:not-allowed;
- filter:alpha(opacity=65);
- -webkit-box-shadow:none;
- box-shadow:none;
- opacity:.65
-}
-a.btn.disabled,fieldset[disabled] a.btn{
- pointer-events:none
-}
-.btn-default{
- color:#333;
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default.focus,.btn-default:focus{
- color:#333;
- background-color:#e6e6e6;
- border-color:#8c8c8c
-}
-.btn-default:hover{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{
- color:#333;
- background-color:#d4d4d4;
- border-color:#8c8c8c
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- background-image:none
-}
-.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default .badge{
- color:#fff;
- background-color:#333
-}
-.btn-primary{
- color:#fff;
- background-color:#d11010;
- border-color:#c40f0f
-}
-.btn-primary.focus,.btn-primary:focus{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary:hover{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- background-image:none
-}
-.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary .badge{
- color:#337ab7;
- background-color:#fff
-}
-.btn-success{
- color:#fff;
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success.focus,.btn-success:focus{
- color:#fff;
- background-color:#449d44;
- border-color:#255625
-}
-.btn-success:hover{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{
- color:#fff;
- background-color:#398439;
- border-color:#255625
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- background-image:none
-}
-.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success .badge{
- color:#5cb85c;
- background-color:#fff
-}
-.btn-info{
- color:#fff;
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info.focus,.btn-info:focus{
- color:#fff;
- background-color:#31b0d5;
- border-color:#1b6d85
-}
-.btn-info:hover{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{
- color:#fff;
- background-color:#269abc;
- border-color:#1b6d85
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- background-image:none
-}
-.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info .badge{
- color:#5bc0de;
- background-color:#fff
-}
-.btn-warning{
- color:#fff;
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning.focus,.btn-warning:focus{
- color:#fff;
- background-color:#ec971f;
- border-color:#985f0d
-}
-.btn-warning:hover{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{
- color:#fff;
- background-color:#d58512;
- border-color:#985f0d
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- background-image:none
-}
-.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning .badge{
- color:#f0ad4e;
- background-color:#fff
-}
-.btn-danger{
- color:#fff;
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger.focus,.btn-danger:focus{
- color:#fff;
- background-color:#c9302c;
- border-color:#761c19
-}
-.btn-danger:hover{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{
- color:#fff;
- background-color:#ac2925;
- border-color:#761c19
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- background-image:none
-}
-.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger .badge{
- color:#d9534f;
- background-color:#fff
-}
-.btn-link{
- font-weight:400;
- color:#337ab7;
- border-radius:0
-}
-.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{
- background-color:transparent;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{
- border-color:transparent
-}
-.btn-link:focus,.btn-link:hover{
- color:#23527c;
- text-decoration:underline;
- background-color:transparent
-}
-.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{
- color:#777;
- text-decoration:none
-}
-.btn-group-lg>.btn,.btn-lg{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.btn-group-sm>.btn,.btn-sm{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-group-xs>.btn,.btn-xs{
- padding:1px 5px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-block{
- display:block;
- width:100%
-}
-.btn-block+.btn-block{
- margin-top:5px
-}
-input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{
- width:100%
-}
-.fade{
- opacity:0;
- -webkit-transition:opacity .15s linear;
- -o-transition:opacity .15s linear;
- transition:opacity .15s linear
-}
-.fade.in{
- opacity:1
-}
-.collapse{
- display:none
-}
-.collapse.in{
- display:block
-}
-tr.collapse.in{
- display:table-row
-}
-tbody.collapse.in{
- display:table-row-group
-}
-.collapsing{
- position:relative;
- height:0;
- overflow:hidden;
- -webkit-transition-timing-function:ease;
- -o-transition-timing-function:ease;
- transition-timing-function:ease;
- -webkit-transition-duration:.35s;
- -o-transition-duration:.35s;
- transition-duration:.35s;
- -webkit-transition-property:height,visibility;
- -o-transition-property:height,visibility;
- transition-property:height,visibility
-}
-.caret{
- display:inline-block;
- width:0;
- height:0;
- margin-left:2px;
- vertical-align:middle;
- border-top:4px dashed;
- border-top:4px solid\9;
- border-right:4px solid transparent;
- border-left:4px solid transparent
-}
-.dropdown,.dropup{
- position:relative
-}
-.dropdown-toggle:focus{
- outline:0
-}
-.dropdown-menu{
- position:absolute;
- top:100%;
- left:0;
- z-index:1000;
- display:none;
- float:left;
- min-width:160px;
- padding:5px 0;
- margin:2px 0 0;
- font-size:14px;
- text-align:left;
- list-style:none;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.15);
- border-radius:4px;
- -webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);
- box-shadow:0 6px 12px rgba(0,0,0,.175)
-}
-.dropdown-menu.pull-right{
- right:0;
- left:auto
-}
-.dropdown-menu .divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.dropdown-menu>li>a{
- display:block;
- padding:3px 20px;
- clear:both;
- font-weight:400;
- line-height:1.42857143;
- color:#333;
- white-space:nowrap
-}
-.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{
- color:#262626;
- text-decoration:none;
- background-color:#f5f5f5
-}
-.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{
- color:#fff;
- text-decoration:none;
- background-color:#337ab7;
- outline:0
-}
-.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- color:#777
-}
-.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent;
- background-image:none;
- filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)
-}
-.open>.dropdown-menu{
- display:block
-}
-.open>a{
- outline:0
-}
-.dropdown-menu-right{
- right:0;
- left:auto
-}
-.dropdown-menu-left{
- right:auto;
- left:0
-}
-.dropdown-header{
- display:block;
- padding:3px 20px;
- font-size:12px;
- line-height:1.42857143;
- color:#777;
- white-space:nowrap
-}
-.dropdown-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:990
-}
-.pull-right>.dropdown-menu{
- right:0;
- left:auto
-}
-.dropup .caret,.navbar-fixed-bottom .dropdown .caret{
- content:"";
- border-top:0;
- border-bottom:4px dashed;
- border-bottom:4px solid\9
-}
-.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{
- top:auto;
- bottom:100%;
- margin-bottom:2px
-}
-@media (min-width:768px){
- .navbar-right .dropdown-menu{
- right:0;
- left:auto
- }
- .navbar-right .dropdown-menu-left{
- right:auto;
- left:0
- }
-}
-.btn-group,.btn-group-vertical{
- position:relative;
- display:inline-block;
- vertical-align:middle
-}
-.btn-group-vertical>.btn,.btn-group>.btn{
- position:relative;
- float:left
-}
-.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{
- z-index:2
-}
-.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{
- margin-left:-1px
-}
-.btn-toolbar{
- margin-left:-5px
-}
-.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{
- float:left
-}
-.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{
- margin-left:5px
-}
-.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){
- border-radius:0
-}
-.btn-group>.btn:first-child{
- margin-left:0
-}
-.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group>.btn-group{
- float:left
-}
-.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{
- outline:0
-}
-.btn-group>.btn+.dropdown-toggle{
- padding-right:8px;
- padding-left:8px
-}
-.btn-group>.btn-lg+.dropdown-toggle{
- padding-right:12px;
- padding-left:12px
-}
-.btn-group.open .dropdown-toggle{
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn-group.open .dropdown-toggle.btn-link{
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn .caret{
- margin-left:0
-}
-.btn-lg .caret{
- border-width:5px 5px 0;
- border-bottom-width:0
-}
-.dropup .btn-lg .caret{
- border-width:0 5px 5px
-}
-.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{
- display:block;
- float:none;
- width:100%;
- max-width:100%
-}
-.btn-group-vertical>.btn-group>.btn{
- float:none
-}
-.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{
- margin-top:-1px;
- margin-left:0
-}
-.btn-group-vertical>.btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.btn-group-vertical>.btn:first-child:not(:last-child){
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn:last-child:not(:first-child){
- border-top-left-radius:0;
- border-top-right-radius:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.btn-group-justified{
- display:table;
- width:100%;
- table-layout:fixed;
- border-collapse:separate
-}
-.btn-group-justified>.btn,.btn-group-justified>.btn-group{
- display:table-cell;
- float:none;
- width:1%
-}
-.btn-group-justified>.btn-group .btn{
- width:100%
-}
-.btn-group-justified>.btn-group .dropdown-menu{
- left:auto
-}
-[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{
- position:absolute;
- clip:rect(0,0,0,0);
- pointer-events:none
-}
-.input-group{
- position:relative;
- display:table;
- border-collapse:separate
-}
-.input-group[class*=col-]{
- float:none;
- padding-right:0;
- padding-left:0
-}
-.input-group .form-control{
- position:relative;
- z-index:2;
- float:left;
- width:100%;
- margin-bottom:0
-}
-.input-group .form-control:focus{
- z-index:3
-}
-.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{
- height:46px;
- line-height:46px
-}
-select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{
- height:auto
-}
-.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{
- height:30px;
- line-height:30px
-}
-select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{
- height:auto
-}
-.input-group .form-control,.input-group-addon,.input-group-btn{
- display:table-cell
-}
-.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.input-group-addon,.input-group-btn{
- width:1%;
- white-space:nowrap;
- vertical-align:middle
-}
-.input-group-addon{
- padding:6px 12px;
- font-size:14px;
- font-weight:400;
- line-height:1;
- color:#555;
- text-align:center;
- background-color:#eee;
- border:1px solid #ccc;
- border-radius:4px
-}
-.input-group-addon.input-sm{
- padding:5px 10px;
- font-size:12px;
- border-radius:3px
-}
-.input-group-addon.input-lg{
- padding:10px 16px;
- font-size:18px;
- border-radius:6px
-}
-.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{
- margin-top:0
-}
-.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.input-group-addon:first-child{
- border-right:0
-}
-.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.input-group-addon:last-child{
- border-left:0
-}
-.input-group-btn{
- position:relative;
- font-size:0;
- white-space:nowrap
-}
-.input-group-btn>.btn{
- position:relative
-}
-.input-group-btn>.btn+.btn{
- margin-left:-1px
-}
-.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{
- z-index:2
-}
-.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{
- margin-right:-1px
-}
-.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{
- z-index:2;
- margin-left:-1px
-}
-.nav{
- padding-left:0;
- margin-bottom:0;
- list-style:none
-}
-.nav>li{
- position:relative;
- display:block
-}
-.nav>li>a{
- position:relative;
- display:block;
- padding:10px 15px
-}
-.nav>li>a:focus,.nav>li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.nav>li.disabled>a{
- color:#777
-}
-.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{
- color:#777;
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent
-}
-.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{
- background-color:#eee;
- border-color:#337ab7
-}
-.nav .nav-divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.nav>li>a>img{
- max-width:none
-}
-.nav-tabs{
- border-bottom:1px solid #ddd
-}
-.nav-tabs>li{
- float:left;
- margin-bottom:-1px
-}
-.nav-tabs>li>a{
- margin-right:2px;
- line-height:1.42857143;
- border:1px solid transparent;
- border-radius:4px 4px 0 0
-}
-.nav-tabs>li>a:hover{
- border-color:#eee #eee #ddd
-}
-.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{
- color:#555;
- cursor:default;
- background-color:#fff;
- border:1px solid #ddd;
- border-bottom-color:transparent
-}
-.nav-tabs.nav-justified{
- width:100%;
- border-bottom:0
-}
-.nav-tabs.nav-justified>li{
- float:none
-}
-.nav-tabs.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-tabs.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-tabs.nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs.nav-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.nav-pills>li{
- float:left
-}
-.nav-pills>li>a{
- border-radius:4px
-}
-.nav-pills>li+li{
- margin-left:2px
-}
-.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{
- color:#fff;
- background-color:#337ab7
-}
-.nav-stacked>li{
- float:none
-}
-.nav-stacked>li+li{
- margin-top:2px;
- margin-left:0
-}
-.nav-justified{
- width:100%
-}
-.nav-justified>li{
- float:none
-}
-.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs-justified{
- border-bottom:0
-}
-.nav-tabs-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.tab-content>.tab-pane{
- display:none
-}
-.tab-content>.active{
- display:block
-}
-.nav-tabs .dropdown-menu{
- margin-top:-1px;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar{
- position:relative;
- min-height:50px;
- margin-bottom:20px;
- border:1px solid transparent
-}
-@media (min-width:768px){
- .navbar{
- border-radius:4px
- }
-}
-@media (min-width:768px){
- .navbar-header{
- float:left
- }
-}
-.navbar-collapse{
- padding-right:15px;
- padding-left:15px;
- overflow-x:visible;
- -webkit-overflow-scrolling:touch;
- border-top:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1)
-}
-.navbar-collapse.in{
- overflow-y:auto
-}
-@media (min-width:768px){
- .navbar-collapse{
- width:auto;
- border-top:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-collapse.collapse{
- display:block!important;
- height:auto!important;
- padding-bottom:0;
- overflow:visible!important
- }
- .navbar-collapse.in{
- overflow-y:visible
- }
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{
- padding-right:0;
- padding-left:0
- }
-}
-.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:340px
-}
-@media (max-device-width:480px) and (orientation:landscape){
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:200px
- }
-}
-.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:0;
- margin-left:0
- }
-}
-.navbar-static-top{
- z-index:1000;
- border-width:0 0 1px
-}
-@media (min-width:768px){
- .navbar-static-top{
- border-radius:0
- }
-}
-.navbar-fixed-bottom,.navbar-fixed-top{
- position:fixed;
- right:0;
- left:0;
- z-index:1030
-}
-@media (min-width:768px){
- .navbar-fixed-bottom,.navbar-fixed-top{
- border-radius:0
- }
-}
-.navbar-fixed-top{
- top:0;
- border-width:0 0 1px
-}
-.navbar-fixed-bottom{
- bottom:0;
- margin-bottom:0;
- border-width:1px 0 0
-}
-.navbar-brand{
- float:left;
- height:50px;
- padding:15px 15px;
- font-size:18px;
- line-height:20px
-}
-.navbar-brand:focus,.navbar-brand:hover{
- text-decoration:none
-}
-.navbar-brand>img{
- display:block
-}
-@media (min-width:768px){
- .navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{
- margin-left:-15px
- }
-}
-.navbar-toggle{
- position:relative;
- float:right;
- padding:9px 10px;
- margin-top:8px;
- margin-right:15px;
- margin-bottom:8px;
- background-color:transparent;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.navbar-toggle:focus{
- outline:0
-}
-.navbar-toggle .icon-bar{
- display:block;
- width:22px;
- height:2px;
- border-radius:1px
-}
-.navbar-toggle .icon-bar+.icon-bar{
- margin-top:4px
-}
-@media (min-width:768px){
- .navbar-toggle{
- display:none
- }
-}
-.navbar-nav{
- margin:7.5px -15px
-}
-.navbar-nav>li>a{
- padding-top:10px;
- padding-bottom:10px;
- line-height:20px
-}
-@media (max-width:767px){
- .navbar-nav .open .dropdown-menu{
- position:static;
- float:none;
- width:auto;
- margin-top:0;
- background-color:transparent;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{
- padding:5px 15px 5px 25px
- }
- .navbar-nav .open .dropdown-menu>li>a{
- line-height:20px
- }
- .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{
- background-image:none
- }
-}
-@media (min-width:768px){
- .navbar-nav{
- float:left;
- margin:0
- }
- .navbar-nav>li{
- float:left
- }
- .navbar-nav>li>a{
- padding-top:15px;
- padding-bottom:15px
- }
-}
-.navbar-form{
- padding:10px 15px;
- margin-top:8px;
- margin-right:-15px;
- margin-bottom:8px;
- margin-left:-15px;
- border-top:1px solid transparent;
- border-bottom:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)
-}
-@media (min-width:768px){
- .navbar-form .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .navbar-form .form-control-static{
- display:inline-block
- }
- .navbar-form .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{
- width:auto
- }
- .navbar-form .input-group>.form-control{
- width:100%
- }
- .navbar-form .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox,.navbar-form .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox label,.navbar-form .radio label{
- padding-left:0
- }
- .navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .navbar-form .has-feedback .form-control-feedback{
- top:0
- }
-}
-@media (max-width:767px){
- .navbar-form .form-group{
- margin-bottom:5px
- }
- .navbar-form .form-group:last-child{
- margin-bottom:0
- }
-}
-@media (min-width:768px){
- .navbar-form{
- width:auto;
- padding-top:0;
- padding-bottom:0;
- margin-right:0;
- margin-left:0;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
-}
-.navbar-nav>li>.dropdown-menu{
- margin-top:0;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{
- margin-bottom:0;
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.navbar-btn{
- margin-top:8px;
- margin-bottom:8px
-}
-.navbar-btn.btn-sm{
- margin-top:10px;
- margin-bottom:10px
-}
-.navbar-btn.btn-xs{
- margin-top:14px;
- margin-bottom:14px
-}
-.navbar-text{
- margin-top:15px;
- margin-bottom:15px
-}
-@media (min-width:768px){
- .navbar-text{
- float:left;
- margin-right:15px;
- margin-left:15px
- }
-}
-@media (min-width:768px){
- .navbar-left{
- float:left!important
- }
- .navbar-right{
- float:right!important;
- margin-right:-15px
- }
- .navbar-right~.navbar-right{
- margin-right:0
- }
-}
-.navbar-default{
- background-color:#f8f8f8;
- border-color:#e7e7e7
-}
-.navbar-default .navbar-brand{
- color:#777
-}
-.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{
- color:#5e5e5e;
- background-color:transparent
-}
-.navbar-default .navbar-text{
- color:#777
-}
-.navbar-default .navbar-nav>li>a{
- color:#777
-}
-.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{
- color:#333;
- background-color:transparent
-}
-.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
-}
-.navbar-default .navbar-toggle{
- border-color:#ddd
-}
-.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{
- background-color:#ddd
-}
-.navbar-default .navbar-toggle .icon-bar{
- background-color:#888
-}
-.navbar-default .navbar-collapse,.navbar-default .navbar-form{
- border-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-@media (max-width:767px){
- .navbar-default .navbar-nav .open .dropdown-menu>li>a{
- color:#777
- }
- .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#333;
- background-color:transparent
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
- }
-}
-.navbar-default .navbar-link{
- color:#777
-}
-.navbar-default .navbar-link:hover{
- color:#333
-}
-.navbar-default .btn-link{
- color:#777
-}
-.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{
- color:#333
-}
-.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{
- color:#ccc
-}
-.navbar-inverse{
- background-color:#222;
- border-color:#080808
-}
-.navbar-inverse .navbar-brand{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-text{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{
- color:#fff;
- background-color:#080808
-}
-.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{
- color:#444;
- background-color:transparent
-}
-.navbar-inverse .navbar-toggle{
- border-color:#333
-}
-.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{
- background-color:#333
-}
-.navbar-inverse .navbar-toggle .icon-bar{
- background-color:#fff
-}
-.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{
- border-color:#101010
-}
-.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{
- color:#fff;
- background-color:#080808
-}
-@media (max-width:767px){
- .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{
- border-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider{
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{
- color:#9d9d9d
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#fff;
- background-color:transparent
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#fff;
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#444;
- background-color:transparent
- }
-}
-.navbar-inverse .navbar-link{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link{
- color:#9d9d9d
-}
-.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{
- color:#444
-}
-.breadcrumb{
- padding:8px 15px;
- margin-bottom:20px;
- list-style:none;
- background-color:#f5f5f5;
- border-radius:4px
-}
-.breadcrumb>li{
- display:inline-block
-}
-.breadcrumb>li+li:before{
- padding:0 5px;
- color:#ccc;
- content:"/\00a0"
-}
-.breadcrumb>.active{
- color:#777
-}
-.pagination{
- display:inline-block;
- padding-left:0;
- margin:20px 0;
- border-radius:4px
-}
-.pagination>li{
- display:inline
-}
-.pagination>li>a,.pagination>li>span{
- position:relative;
- float:left;
- padding:6px 12px;
- margin-left:-1px;
- line-height:1.42857143;
- color:#337ab7;
- text-decoration:none;
- background-color:#fff;
- border:1px solid #ddd
-}
-.pagination>li:first-child>a,.pagination>li:first-child>span{
- margin-left:0;
- border-top-left-radius:4px;
- border-bottom-left-radius:4px
-}
-.pagination>li:last-child>a,.pagination>li:last-child>span{
- border-top-right-radius:4px;
- border-bottom-right-radius:4px
-}
-.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{
- z-index:2;
- color:#23527c;
- background-color:#eee;
- border-color:#ddd
-}
-.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{
- z-index:3;
- color:#fff;
- cursor:default;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#fff;
- border-color:#ddd
-}
-.pagination-lg>li>a,.pagination-lg>li>span{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{
- border-top-left-radius:6px;
- border-bottom-left-radius:6px
-}
-.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{
- border-top-right-radius:6px;
- border-bottom-right-radius:6px
-}
-.pagination-sm>li>a,.pagination-sm>li>span{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5
-}
-.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{
- border-top-left-radius:3px;
- border-bottom-left-radius:3px
-}
-.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{
- border-top-right-radius:3px;
- border-bottom-right-radius:3px
-}
-.pager{
- padding-left:0;
- margin:20px 0;
- text-align:center;
- list-style:none
-}
-.pager li{
- display:inline
-}
-.pager li>a,.pager li>span{
- display:inline-block;
- padding:5px 14px;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:15px
-}
-.pager li>a:focus,.pager li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.pager .next>a,.pager .next>span{
- float:right
-}
-.pager .previous>a,.pager .previous>span{
- float:left
-}
-.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{
- color:#777;
- cursor:not-allowed;
- background-color:#fff
-}
-.label{
- display:inline;
- padding:.2em .6em .3em;
- font-size:75%;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:baseline;
- border-radius:.25em
-}
-a.label:focus,a.label:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.label:empty{
- display:none
-}
-.btn .label{
- position:relative;
- top:-1px
-}
-.label-default{
- background-color:#777
-}
-.label-default[href]:focus,.label-default[href]:hover{
- background-color:#5e5e5e
-}
-.label-primary{
- background-color:#337ab7
-}
-.label-primary[href]:focus,.label-primary[href]:hover{
- background-color:#286090
-}
-.label-success{
- background-color:#5cb85c
-}
-.label-success[href]:focus,.label-success[href]:hover{
- background-color:#449d44
-}
-.label-info{
- background-color:#5bc0de
-}
-.label-info[href]:focus,.label-info[href]:hover{
- background-color:#31b0d5
-}
-.label-warning{
- background-color:#f0ad4e
-}
-.label-warning[href]:focus,.label-warning[href]:hover{
- background-color:#ec971f
-}
-.label-danger{
- background-color:#d9534f
-}
-.label-danger[href]:focus,.label-danger[href]:hover{
- background-color:#c9302c
-}
-.badge{
- display:inline-block;
- min-width:10px;
- padding:3px 7px;
- font-size:12px;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- background-color:#777;
- border-radius:10px
-}
-.badge:empty{
- display:none
-}
-.btn .badge{
- position:relative;
- top:-1px
-}
-.btn-group-xs>.btn .badge,.btn-xs .badge{
- top:0;
- padding:1px 5px
-}
-a.badge:focus,a.badge:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.list-group-item.active>.badge,.nav-pills>.active>a>.badge{
- color:#337ab7;
- background-color:#fff
-}
-.list-group-item>.badge{
- float:right
-}
-.list-group-item>.badge+.badge{
- margin-right:5px
-}
-.nav-pills>li>a>.badge{
- margin-left:3px
-}
-.jumbotron{
- padding-top:30px;
- padding-bottom:30px;
- margin-bottom:30px;
- color:inherit;
- background-color:#eee
-}
-.jumbotron .h1,.jumbotron h1{
- color:inherit
-}
-.jumbotron p{
- margin-bottom:15px;
- font-size:21px;
- font-weight:200
-}
-.jumbotron>hr{
- border-top-color:#d5d5d5
-}
-.container .jumbotron,.container-fluid .jumbotron{
- padding-right:15px;
- padding-left:15px;
- border-radius:6px
-}
-.jumbotron .container{
- max-width:100%
-}
-@media screen and (min-width:768px){
- .jumbotron{
- padding-top:48px;
- padding-bottom:48px
- }
- .container .jumbotron,.container-fluid .jumbotron{
- padding-right:60px;
- padding-left:60px
- }
- .jumbotron .h1,.jumbotron h1{
- font-size:63px
- }
-}
-.thumbnail{
- display:block;
- padding:4px;
- margin-bottom:20px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:border .2s ease-in-out;
- -o-transition:border .2s ease-in-out;
- transition:border .2s ease-in-out
-}
-.thumbnail a>img,.thumbnail>img{
- margin-right:auto;
- margin-left:auto
-}
-a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{
- border-color:#337ab7
-}
-.thumbnail .caption{
- padding:9px;
- color:#333
-}
-.alert{
- padding:15px;
- margin-bottom:20px;
- border:1px solid transparent;
- border-radius:4px
-}
-.alert h4{
- margin-top:0;
- color:inherit
-}
-.alert .alert-link{
- font-weight:700
-}
-.alert>p,.alert>ul{
- margin-bottom:0
-}
-.alert>p+p{
- margin-top:5px
-}
-.alert-dismissable,.alert-dismissible{
- padding-right:35px
-}
-.alert-dismissable .close,.alert-dismissible .close{
- position:relative;
- top:-2px;
- right:-21px;
- color:inherit
-}
-.alert-success{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.alert-success hr{
- border-top-color:#c9e2b3
-}
-.alert-success .alert-link{
- color:#2b542c
-}
-.alert-info{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.alert-info hr{
- border-top-color:#a6e1ec
-}
-.alert-info .alert-link{
- color:#245269
-}
-.alert-warning{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.alert-warning hr{
- border-top-color:#f7e1b5
-}
-.alert-warning .alert-link{
- color:#66512c
-}
-.alert-danger{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.alert-danger hr{
- border-top-color:#e4b9c0
-}
-.alert-danger .alert-link{
- color:#843534
-}
-@-webkit-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@-o-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-.progress{
- height:20px;
- margin-bottom:20px;
- overflow:hidden;
- background-color:#f5f5f5;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
- box-shadow:inset 0 1px 2px rgba(0,0,0,.1)
-}
-.progress-bar{
- float:left;
- width:0;
- height:100%;
- font-size:12px;
- line-height:20px;
- color:#fff;
- text-align:center;
- background-color:#337ab7;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- -webkit-transition:width .6s ease;
- -o-transition:width .6s ease;
- transition:width .6s ease
-}
-.progress-bar-striped,.progress-striped .progress-bar{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- -webkit-background-size:40px 40px;
- background-size:40px 40px
-}
-.progress-bar.active,.progress.active .progress-bar{
- -webkit-animation:progress-bar-stripes 2s linear infinite;
- -o-animation:progress-bar-stripes 2s linear infinite;
- animation:progress-bar-stripes 2s linear infinite
-}
-.progress-bar-success{
- background-color:#5cb85c
-}
-.progress-striped .progress-bar-success{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-info{
- background-color:#5bc0de
-}
-.progress-striped .progress-bar-info{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-warning{
- background-color:#f0ad4e
-}
-.progress-striped .progress-bar-warning{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-danger{
- background-color:#d9534f
-}
-.progress-striped .progress-bar-danger{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.media{
- margin-top:15px
-}
-.media:first-child{
- margin-top:0
-}
-.media,.media-body{
- overflow:hidden;
- zoom:1
-}
-.media-body{
- width:10000px
-}
-.media-object{
- display:block
-}
-.media-object.img-thumbnail{
- max-width:none
-}
-.media-right,.media>.pull-right{
- padding-left:10px
-}
-.media-left,.media>.pull-left{
- padding-right:10px
-}
-.media-body,.media-left,.media-right{
- display:table-cell;
- vertical-align:top
-}
-.media-middle{
- vertical-align:middle
-}
-.media-bottom{
- vertical-align:bottom
-}
-.media-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.media-list{
- padding-left:0;
- list-style:none
-}
-.list-group{
- padding-left:0;
- margin-bottom:20px
-}
-.list-group-item{
- position:relative;
- display:block;
- padding:10px 15px;
- margin-bottom:-1px;
- background-color:#fff;
- border:1px solid #ddd
-}
-.list-group-item:first-child{
- border-top-left-radius:4px;
- border-top-right-radius:4px
-}
-.list-group-item:last-child{
- margin-bottom:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-a.list-group-item,button.list-group-item{
- color:#555
-}
-a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{
- color:#333
-}
-a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{
- color:#555;
- text-decoration:none;
- background-color:#f5f5f5
-}
-button.list-group-item{
- width:100%;
- text-align:left
-}
-.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#eee
-}
-.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{
- color:inherit
-}
-.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{
- color:#777
-}
-.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{
- z-index:2;
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{
- color:inherit
-}
-.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{
- color:#c7ddef
-}
-.list-group-item-success{
- color:#3c763d;
- background-color:#dff0d8
-}
-a.list-group-item-success,button.list-group-item-success{
- color:#3c763d
-}
-a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{
- color:#3c763d;
- background-color:#d0e9c6
-}
-a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{
- color:#fff;
- background-color:#3c763d;
- border-color:#3c763d
-}
-.list-group-item-info{
- color:#31708f;
- background-color:#d9edf7
-}
-a.list-group-item-info,button.list-group-item-info{
- color:#31708f
-}
-a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{
- color:#31708f;
- background-color:#c4e3f3
-}
-a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{
- color:#fff;
- background-color:#31708f;
- border-color:#31708f
-}
-.list-group-item-warning{
- color:#8a6d3b;
- background-color:#fcf8e3
-}
-a.list-group-item-warning,button.list-group-item-warning{
- color:#8a6d3b
-}
-a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{
- color:#8a6d3b;
- background-color:#faf2cc
-}
-a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{
- color:#fff;
- background-color:#8a6d3b;
- border-color:#8a6d3b
-}
-.list-group-item-danger{
- color:#a94442;
- background-color:#f2dede
-}
-a.list-group-item-danger,button.list-group-item-danger{
- color:#a94442
-}
-a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{
- color:#a94442;
- background-color:#ebcccc
-}
-a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{
- color:#fff;
- background-color:#a94442;
- border-color:#a94442
-}
-.list-group-item-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.list-group-item-text{
- margin-bottom:0;
- line-height:1.3
-}
-.panel{
- margin-bottom:20px;
- background-color:#fff;
- border:1px solid transparent;
- border-radius:4px;
- -webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);
- box-shadow:0 1px 1px rgba(0,0,0,.05)
-}
-.panel-body{
- padding:15px
-}
-.panel-heading{
- padding:10px 15px;
- border-bottom:1px solid transparent;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel-heading>.dropdown .dropdown-toggle{
- color:inherit
-}
-.panel-title{
- margin-top:0;
- margin-bottom:0;
- font-size:16px;
- color:inherit
-}
-.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{
- color:inherit
-}
-.panel-footer{
- padding:10px 15px;
- background-color:#f5f5f5;
- border-top:1px solid #ddd;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.list-group,.panel>.panel-collapse>.list-group{
- margin-bottom:0
-}
-.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{
- border-width:1px 0;
- border-radius:0
-}
-.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{
- border-top:0;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{
- border-bottom:0;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.panel-heading+.list-group .list-group-item:first-child{
- border-top-width:0
-}
-.list-group+.panel-footer{
- border-top-width:0
-}
-.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{
- margin-bottom:0
-}
-.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{
- padding-right:15px;
- padding-left:15px
-}
-.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{
- border-top-left-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{
- border-top-right-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{
- border-bottom-right-radius:3px
-}
-.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{
- border-top:1px solid #ddd
-}
-.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{
- border-top:0
-}
-.panel>.table-bordered,.panel>.table-responsive>.table-bordered{
- border:0
-}
-.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
-}
-.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
-}
-.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{
- border-bottom:0
-}
-.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
-}
-.panel>.table-responsive{
- margin-bottom:0;
- border:0
-}
-.panel-group{
- margin-bottom:20px
-}
-.panel-group .panel{
- margin-bottom:0;
- border-radius:4px
-}
-.panel-group .panel+.panel{
- margin-top:5px
-}
-.panel-group .panel-heading{
- border-bottom:0
-}
-.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{
- border-top:1px solid #ddd
-}
-.panel-group .panel-footer{
- border-top:0
-}
-.panel-group .panel-footer+.panel-collapse .panel-body{
- border-bottom:1px solid #ddd
-}
-.panel-default{
- border-color:#ddd
-}
-.panel-default>.panel-heading{
- color:#333;
- background-color:#f5f5f5;
- border-color:#ddd
-}
-.panel-default>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ddd
-}
-.panel-default>.panel-heading .badge{
- color:#f5f5f5;
- background-color:#333
-}
-.panel-default>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ddd
-}
-.panel-primary{
- border-color:#337ab7
-}
-.panel-primary>.panel-heading{
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.panel-primary>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#337ab7
-}
-.panel-primary>.panel-heading .badge{
- color:#337ab7;
- background-color:#fff
-}
-.panel-primary>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#337ab7
-}
-.panel-success{
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#d6e9c6
-}
-.panel-success>.panel-heading .badge{
- color:#dff0d8;
- background-color:#3c763d
-}
-.panel-success>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#d6e9c6
-}
-.panel-info{
- border-color:#bce8f1
-}
-.panel-info>.panel-heading{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.panel-info>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#bce8f1
-}
-.panel-info>.panel-heading .badge{
- color:#d9edf7;
- background-color:#31708f
-}
-.panel-info>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#bce8f1
-}
-.panel-warning{
- border-color:#faebcc
-}
-.panel-warning>.panel-heading{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.panel-warning>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#faebcc
-}
-.panel-warning>.panel-heading .badge{
- color:#fcf8e3;
- background-color:#8a6d3b
-}
-.panel-warning>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#faebcc
-}
-.panel-danger{
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ebccd1
-}
-.panel-danger>.panel-heading .badge{
- color:#f2dede;
- background-color:#a94442
-}
-.panel-danger>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ebccd1
-}
-.embed-responsive{
- position:relative;
- display:block;
- height:0;
- padding:0;
- overflow:hidden
-}
-.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:100%;
- height:100%;
- border:0
-}
-.embed-responsive-16by9{
- padding-bottom:56.25%
-}
-.embed-responsive-4by3{
- padding-bottom:75%
-}
-.well{
- min-height:20px;
- padding:19px;
- margin-bottom:20px;
- background-color:#f5f5f5;
- border:1px solid #e3e3e3;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.05)
-}
-.well blockquote{
- border-color:#ddd;
- border-color:rgba(0,0,0,.15)
-}
-.well-lg{
- padding:24px;
- border-radius:6px
-}
-.well-sm{
- padding:9px;
- border-radius:3px
-}
-.close{
- float:right;
- font-size:21px;
- font-weight:700;
- line-height:1;
- color:#000;
- text-shadow:0 1px 0 #fff;
- filter:alpha(opacity=20);
- opacity:.2
-}
-.close:focus,.close:hover{
- color:#000;
- text-decoration:none;
- cursor:pointer;
- filter:alpha(opacity=50);
- opacity:.5
-}
-button.close{
- -webkit-appearance:none;
- padding:0;
- cursor:pointer;
- background:0 0;
- border:0
-}
-.modal-open{
- overflow:hidden
-}
-.modal{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1050;
- display:none;
- overflow:hidden;
- -webkit-overflow-scrolling:touch;
- outline:0
-}
-.modal.fade .modal-dialog{
- -webkit-transition:-webkit-transform .3s ease-out;
- -o-transition:-o-transform .3s ease-out;
- transition:transform .3s ease-out;
- -webkit-transform:translate(0,-25%);
- -ms-transform:translate(0,-25%);
- -o-transform:translate(0,-25%);
- transform:translate(0,-25%)
-}
-.modal.in .modal-dialog{
- -webkit-transform:translate(0,0);
- -ms-transform:translate(0,0);
- -o-transform:translate(0,0);
- transform:translate(0,0)
-}
-.modal-open .modal{
- overflow-x:hidden;
- overflow-y:auto
-}
-.modal-dialog{
- position:relative;
- width:auto;
- margin:10px
-}
-.modal-content{
- position:relative;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #999;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- outline:0;
- -webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);
- box-shadow:0 3px 9px rgba(0,0,0,.5)
-}
-.modal-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1040;
- background-color:#000
-}
-.modal-backdrop.fade{
- filter:alpha(opacity=0);
- opacity:0
-}
-.modal-backdrop.in{
- filter:alpha(opacity=50);
- opacity:.5
-}
-.modal-header{
- padding:15px;
- border-bottom:1px solid #e5e5e5
-}
-.modal-header .close{
- margin-top:-2px
-}
-.modal-title{
- margin:0;
- line-height:1.42857143
-}
-.modal-body{
- position:relative;
- padding:15px
-}
-.modal-footer{
- padding:15px;
- text-align:right;
- border-top:1px solid #e5e5e5
-}
-.modal-footer .btn+.btn{
- margin-bottom:0;
- margin-left:5px
-}
-.modal-footer .btn-group .btn+.btn{
- margin-left:-1px
-}
-.modal-footer .btn-block+.btn-block{
- margin-left:0
-}
-.modal-scrollbar-measure{
- position:absolute;
- top:-9999px;
- width:50px;
- height:50px;
- overflow:scroll
-}
-@media (min-width:768px){
- .modal-dialog{
- width:600px;
- margin:30px auto
- }
- .modal-content{
- -webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);
- box-shadow:0 5px 15px rgba(0,0,0,.5)
- }
- .modal-sm{
- width:300px
- }
-}
-@media (min-width:992px){
- .modal-lg{
- width:900px
- }
-}
-.tooltip{
- position:absolute;
- z-index:1070;
- display:block;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:12px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- filter:alpha(opacity=0);
- opacity:0;
- line-break:auto
-}
-.tooltip.in{
- filter:alpha(opacity=90);
- opacity:.9
-}
-.tooltip.top{
- padding:5px 0;
- margin-top:-3px
-}
-.tooltip.right{
- padding:0 5px;
- margin-left:3px
-}
-.tooltip.bottom{
- padding:5px 0;
- margin-top:3px
-}
-.tooltip.left{
- padding:0 5px;
- margin-left:-3px
-}
-.tooltip-inner{
- max-width:200px;
- padding:3px 8px;
- color:#fff;
- text-align:center;
- background-color:#000;
- border-radius:4px
-}
-.tooltip-arrow{
- position:absolute;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.tooltip.top .tooltip-arrow{
- bottom:0;
- left:50%;
- margin-left:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-left .tooltip-arrow{
- right:5px;
- bottom:0;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-right .tooltip-arrow{
- bottom:0;
- left:5px;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.right .tooltip-arrow{
- top:50%;
- left:0;
- margin-top:-5px;
- border-width:5px 5px 5px 0;
- border-right-color:#000
-}
-.tooltip.left .tooltip-arrow{
- top:50%;
- right:0;
- margin-top:-5px;
- border-width:5px 0 5px 5px;
- border-left-color:#000
-}
-.tooltip.bottom .tooltip-arrow{
- top:0;
- left:50%;
- margin-left:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-left .tooltip-arrow{
- top:0;
- right:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-right .tooltip-arrow{
- top:0;
- left:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.popover{
- position:absolute;
- top:0;
- left:0;
- z-index:1060;
- display:none;
- max-width:276px;
- padding:1px;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- -webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);
- box-shadow:0 5px 10px rgba(0,0,0,.2);
- line-break:auto
-}
-.popover.top{
- margin-top:-10px
-}
-.popover.right{
- margin-left:10px
-}
-.popover.bottom{
- margin-top:10px
-}
-.popover.left{
- margin-left:-10px
-}
-.popover-title{
- padding:8px 14px;
- margin:0;
- font-size:14px;
- background-color:#f7f7f7;
- border-bottom:1px solid #ebebeb;
- border-radius:5px 5px 0 0
-}
-.popover-content{
- padding:9px 14px
-}
-.popover>.arrow,.popover>.arrow:after{
- position:absolute;
- display:block;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.popover>.arrow{
- border-width:11px
-}
-.popover>.arrow:after{
- content:"";
- border-width:10px
-}
-.popover.top>.arrow{
- bottom:-11px;
- left:50%;
- margin-left:-11px;
- border-top-color:#999;
- border-top-color:rgba(0,0,0,.25);
- border-bottom-width:0
-}
-.popover.top>.arrow:after{
- bottom:1px;
- margin-left:-10px;
- content:" ";
- border-top-color:#fff;
- border-bottom-width:0
-}
-.popover.right>.arrow{
- top:50%;
- left:-11px;
- margin-top:-11px;
- border-right-color:#999;
- border-right-color:rgba(0,0,0,.25);
- border-left-width:0
-}
-.popover.right>.arrow:after{
- bottom:-10px;
- left:1px;
- content:" ";
- border-right-color:#fff;
- border-left-width:0
-}
-.popover.bottom>.arrow{
- top:-11px;
- left:50%;
- margin-left:-11px;
- border-top-width:0;
- border-bottom-color:#999;
- border-bottom-color:rgba(0,0,0,.25)
-}
-.popover.bottom>.arrow:after{
- top:1px;
- margin-left:-10px;
- content:" ";
- border-top-width:0;
- border-bottom-color:#fff
-}
-.popover.left>.arrow{
- top:50%;
- right:-11px;
- margin-top:-11px;
- border-right-width:0;
- border-left-color:#999;
- border-left-color:rgba(0,0,0,.25)
-}
-.popover.left>.arrow:after{
- right:1px;
- bottom:-10px;
- content:" ";
- border-right-width:0;
- border-left-color:#fff
-}
-.carousel{
- position:relative
-}
-.carousel-inner{
- position:relative;
- width:100%;
- overflow:hidden
-}
-.carousel-inner>.item{
- position:relative;
- display:none;
- -webkit-transition:.6s ease-in-out left;
- -o-transition:.6s ease-in-out left;
- transition:.6s ease-in-out left
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img{
- line-height:1
-}
-@media all and (transform-3d),(-webkit-transform-3d){
- .carousel-inner>.item{
- -webkit-transition:-webkit-transform .6s ease-in-out;
- -o-transition:-o-transform .6s ease-in-out;
- transition:transform .6s ease-in-out;
- -webkit-backface-visibility:hidden;
- backface-visibility:hidden;
- -webkit-perspective:1000px;
- perspective:1000px
- }
- .carousel-inner>.item.active.right,.carousel-inner>.item.next{
- left:0;
- -webkit-transform:translate3d(100%,0,0);
- transform:translate3d(100%,0,0)
- }
- .carousel-inner>.item.active.left,.carousel-inner>.item.prev{
- left:0;
- -webkit-transform:translate3d(-100%,0,0);
- transform:translate3d(-100%,0,0)
- }
- .carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{
- left:0;
- -webkit-transform:translate3d(0,0,0);
- transform:translate3d(0,0,0)
- }
-}
-.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{
- display:block
-}
-.carousel-inner>.active{
- left:0
-}
-.carousel-inner>.next,.carousel-inner>.prev{
- position:absolute;
- top:0;
- width:100%
-}
-.carousel-inner>.next{
- left:100%
-}
-.carousel-inner>.prev{
- left:-100%
-}
-.carousel-inner>.next.left,.carousel-inner>.prev.right{
- left:0
-}
-.carousel-inner>.active.left{
- left:-100%
-}
-.carousel-inner>.active.right{
- left:100%
-}
-.carousel-control{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:15%;
- font-size:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6);
- background-color:rgba(0,0,0,0);
- filter:alpha(opacity=50);
- opacity:.5
-}
-.carousel-control.left{
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));
- background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control.right{
- right:0;
- left:auto;
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));
- background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control:focus,.carousel-control:hover{
- color:#fff;
- text-decoration:none;
- filter:alpha(opacity=90);
- outline:0;
- opacity:.9
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- position:absolute;
- top:50%;
- z-index:5;
- display:inline-block;
- margin-top:-10px
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- left:50%;
- margin-left:-10px
-}
-.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- right:50%;
- margin-right:-10px
-}
-.carousel-control .icon-next,.carousel-control .icon-prev{
- width:20px;
- height:20px;
- font-family:serif;
- line-height:1
-}
-.carousel-control .icon-prev:before{
- content:'\2039'
-}
-.carousel-control .icon-next:before{
- content:'\203a'
-}
-.carousel-indicators{
- position:absolute;
- bottom:10px;
- left:50%;
- z-index:15;
- width:60%;
- padding-left:0;
- margin-left:-30%;
- text-align:center;
- list-style:none
-}
-.carousel-indicators li{
- display:inline-block;
- width:10px;
- height:10px;
- margin:1px;
- text-indent:-999px;
- cursor:pointer;
- background-color:#000\9;
- background-color:rgba(0,0,0,0);
- border:1px solid #fff;
- border-radius:10px
-}
-.carousel-indicators .active{
- width:12px;
- height:12px;
- margin:0;
- background-color:#fff
-}
-.carousel-caption{
- position:absolute;
- right:15%;
- bottom:20px;
- left:15%;
- z-index:10;
- padding-top:20px;
- padding-bottom:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6)
-}
-.carousel-caption .btn{
- text-shadow:none
-}
-@media screen and (min-width:768px){
- .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- width:30px;
- height:30px;
- margin-top:-10px;
- font-size:30px
- }
- .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- margin-left:-10px
- }
- .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- margin-right:-10px
- }
- .carousel-caption{
- right:20%;
- left:20%;
- padding-bottom:30px
- }
- .carousel-indicators{
- bottom:20px
- }
-}
-.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{
- display:table;
- content:" "
-}
-.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{
- clear:both
-}
-.center-block{
- display:block;
- margin-right:auto;
- margin-left:auto
-}
-.pull-right{
- float:right!important
-}
-.pull-left{
- float:left!important
-}
-.hide{
- display:none!important
-}
-.show{
- display:block!important
-}
-.invisible{
- visibility:hidden
-}
-.text-hide{
- font:0/0 a;
- color:transparent;
- text-shadow:none;
- background-color:transparent;
- border:0
-}
-.hidden{
- display:none!important
-}
-.affix{
- position:fixed
-}
-@-ms-viewport{
- width:device-width
-}
-.visible-lg,.visible-md,.visible-sm,.visible-xs{
- display:none!important
-}
-.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{
- display:none!important
-}
-@media (max-width:767px){
- .visible-xs{
- display:block!important
- }
- table.visible-xs{
- display:table!important
- }
- tr.visible-xs{
- display:table-row!important
- }
- td.visible-xs,th.visible-xs{
- display:table-cell!important
- }
-}
-@media (max-width:767px){
- .visible-xs-block{
- display:block!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline{
- display:inline!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm{
- display:block!important
- }
- table.visible-sm{
- display:table!important
- }
- tr.visible-sm{
- display:table-row!important
- }
- td.visible-sm,th.visible-sm{
- display:table-cell!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-block{
- display:block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline{
- display:inline!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md{
- display:block!important
- }
- table.visible-md{
- display:table!important
- }
- tr.visible-md{
- display:table-row!important
- }
- td.visible-md,th.visible-md{
- display:table-cell!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-block{
- display:block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline{
- display:inline!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg{
- display:block!important
- }
- table.visible-lg{
- display:table!important
- }
- tr.visible-lg{
- display:table-row!important
- }
- td.visible-lg,th.visible-lg{
- display:table-cell!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-block{
- display:block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline{
- display:inline!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline-block{
- display:inline-block!important
- }
-}
-@media (max-width:767px){
- .hidden-xs{
- display:none!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .hidden-sm{
- display:none!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .hidden-md{
- display:none!important
- }
-}
-@media (min-width:1200px){
- .hidden-lg{
- display:none!important
- }
-}
-.visible-print{
- display:none!important
-}
-@media print{
- .visible-print{
- display:block!important
- }
- table.visible-print{
- display:table!important
- }
- tr.visible-print{
- display:table-row!important
- }
- td.visible-print,th.visible-print{
- display:table-cell!important
- }
-}
-.visible-print-block{
- display:none!important
-}
-@media print{
- .visible-print-block{
- display:block!important
- }
-}
-.visible-print-inline{
- display:none!important
-}
-@media print{
- .visible-print-inline{
- display:inline!important
- }
-}
-.visible-print-inline-block{
- display:none!important
-}
-@media print{
- .visible-print-inline-block{
- display:inline-block!important
- }
-}
-@media print{
- .hidden-print{
- display:none!important
- }
-}
-/*# sourceMappingURL=bootstrap.min.css.map */
-
diff --git a/themes/black/client/src/css/01-main.css b/themes/black/client/src/css/01-main.css
deleted file mode 100644
index e62ff8dd0..000000000
--- a/themes/black/client/src/css/01-main.css
+++ /dev/null
@@ -1,77 +0,0 @@
-body {
- /*background-image: url("//*img//*LargeTriangles.svg");*/
- /*background-image: url("//*img//*RandomizedPattern.svg");*/
- /*background-image: url("//*img//*background.svg");*/
- background-color:#000000;
-}
-canvas{
- position:absolute;
- top:0;
- left:0;
-}
-.authelia-brand {
- font-weight: bold;
- font-style: italic;
- color: #ffffff
-}
-.poweredby-block {
- margin: 0px 30px;
- margin-top: 10px;
- padding-top: 15px;
- border-top: 1px solid rgba(0, 0, 0, 0.15);
-
-}
-.poweredby {
- font-size: 0.7em;
- color: white;
-}
-/* notifications */
-.notification {
- padding: 10px;
- margin: 15px 0px;
- border-radius: 6px;
- display: none;
- position: absolute;
-}
-.notification img {
- width: 24px;
- margin-right: 10px;
-}
-.notification i,
-.notification span {
- display:table-cell;
- vertical-align:middle;
-}
-.info {
- border: 1px solid #9cb1ff;
- background-color: rgb(192, 220, 255);
-}
-.success {
- border: 1px solid #65ec7c;
- background-color: rgb(163, 255, 157);
-}
-.error {
- border: 1px solid #ffa3a3;
- background-color: rgb(255, 175, 175);
-}
-.warning {
- border: 1px solid #ffd743;
- background-color: rgb(255, 230, 143);
-}
-.bottom-right-links {
- text-align: right;
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-.header {
- background-color: #000000;
- color: white;
- margin: 0px;
-}
-.body {
- padding: 10px;
-}
-h1 {
- font-size: 25px;
-}
diff --git a/themes/black/client/src/css/02-login.css b/themes/black/client/src/css/02-login.css
deleted file mode 100644
index a6984267b..000000000
--- a/themes/black/client/src/css/02-login.css
+++ /dev/null
@@ -1,136 +0,0 @@
-.form-signin
-{
- margin: 0 auto;
-}
-
-.form-signin .form-signin-heading, .form-signin .checkbox
-{
- margin-bottom: 10px;
-}
-
-.form-signin .checkbox
-{
- font-weight: normal;
-}
-
-.form-signin .form-control
-{
- position: relative;
- font-size: 16px;
- height: auto;
- padding: 10px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.form-signin .form-control:focus
-{
- z-index: 2;
-}
-.form-signin input[type="text"]
-{
- margin-bottom: -1px;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-.form-signin input[type="password"]
-{
- /* margin-bottom: 10px; */
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.account-wall
-{
- border: 1px solid #000;
- margin-top: 20px;
- padding-bottom: 20px;
- background-color: #000000;
- -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
-}
-.account-wall h1
-{
- margin-bottom: 15px;
- margin-top: 15px;
- font-weight: 800;
- display: block;
- text-align: center;
-}
-.account-wall h3
-{
- display: block;
- text-align: center;
-}
-.account-wall p
-{
- text-align: center;
- margin: 10px;
- color: white;
-}
-.account-wall .form-inputs
-{
- margin-bottom: 10px;
- border-color: #b20c0c;
-}
-.account-wall hr {
- border-color: #c5c5c5;
-}
-
-.header-img
-{
- width: 96px;
- height: 96px;
- margin: 0 auto 10px;
- display: block;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
- border-radius: 50%;
-}
-
-.link
-{
- margin-top: 10px;
- color: white;
-}
-
-.btn-primary.totp
-{
- background-color: rgb(102, 135, 162);
-}
-
-.btn-primary.u2f
-{
- background-color: rgb(83, 149, 204);
-}
-
-.u2f-token {
- text-align: center;
-}
-
-.u2f-token img {
- width: 70px;
-}
-
-.keep-me-logged-in {
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-
-.keep-me-logged-in input[type=checkbox] {
- transform: scale(0.8);
- margin: 0;
- margin-right: 4px;
-}
-
-.keep-me-logged-in label {
- font-weight: 300;
-}
-
-.keep-me-logged-in input,
-.keep-me-logged-in label {
- display: inline-block;
- margin-bottom: 0; /* I added this after I posted my reply */
- vertical-align: middle; /* Fixes any weird issues in Firefox and IE */
-}
diff --git a/themes/black/client/src/css/03-errors.css b/themes/black/client/src/css/03-errors.css
deleted file mode 100644
index e9f97f33b..000000000
--- a/themes/black/client/src/css/03-errors.css
+++ /dev/null
@@ -1,12 +0,0 @@
-
-.error-401 .header-img {
- border-radius: 0%;
-}
-
-.error-403 .header-img {
- border-radius: 0%;
-}
-
-.error-404 .header-img {
- border-radius: 0%;
-}
\ No newline at end of file
diff --git a/themes/black/client/src/css/03-password-reset-form.css b/themes/black/client/src/css/03-password-reset-form.css
deleted file mode 100644
index 34066bc24..000000000
--- a/themes/black/client/src/css/03-password-reset-form.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-form .header-img {
- border-radius: 0%;
-}
diff --git a/themes/black/client/src/css/03-password-reset-request.css b/themes/black/client/src/css/03-password-reset-request.css
deleted file mode 100644
index 1a2ad4df8..000000000
--- a/themes/black/client/src/css/03-password-reset-request.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-request .header-img {
- border-radius: 0%;
-}
diff --git a/themes/black/client/src/css/03-totp-register.css b/themes/black/client/src/css/03-totp-register.css
deleted file mode 100644
index cb76720ad..000000000
--- a/themes/black/client/src/css/03-totp-register.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.totp-register #secret {
- background-color: white;
- font-size: 0.9em;
- font-weight: bold;
- padding: 5px;
- border: 1px solid #c7c7c7;
- word-wrap: break-word;
-}
-.totp-register #qrcode img {
- margin: 10px auto;
-}
-.totp-register .need-google-authenticator {
- text-align: center;
- margin-top: 20px;
-}
-.totp-register .store-badges {
- margin-top: 5px;
-}
-.totp-register .store-badge {
- width: 110px;
- height: 30px;
-}
\ No newline at end of file
diff --git a/themes/black/client/src/css/03-u2f-register.css b/themes/black/client/src/css/03-u2f-register.css
deleted file mode 100644
index e54cddf89..000000000
--- a/themes/black/client/src/css/03-u2f-register.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
-.u2f-register img {
- display: block;
- margin: 20px auto;
-}
\ No newline at end of file
diff --git a/themes/black/client/src/img/RandomizedPattern.svg b/themes/black/client/src/img/RandomizedPattern.svg
deleted file mode 100644
index 51afee6d6..000000000
--- a/themes/black/client/src/img/RandomizedPattern.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/themes/black/client/src/img/background.jpg b/themes/black/client/src/img/background.jpg
deleted file mode 100644
index 974ea273f..000000000
Binary files a/themes/black/client/src/img/background.jpg and /dev/null differ
diff --git a/themes/black/client/src/img/icon.png b/themes/black/client/src/img/icon.png
deleted file mode 100644
index 040d10c1a..000000000
Binary files a/themes/black/client/src/img/icon.png and /dev/null differ
diff --git a/themes/black/client/src/img/mail.png b/themes/black/client/src/img/mail.png
deleted file mode 100644
index 834bfce91..000000000
Binary files a/themes/black/client/src/img/mail.png and /dev/null differ
diff --git a/themes/black/client/src/img/notifications/.directory b/themes/black/client/src/img/notifications/.directory
deleted file mode 100644
index 7c8b80541..000000000
--- a/themes/black/client/src/img/notifications/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,35
-Version=3
-ViewMode=1
diff --git a/themes/black/client/src/img/notifications/error.png b/themes/black/client/src/img/notifications/error.png
deleted file mode 100644
index bf64d28f7..000000000
Binary files a/themes/black/client/src/img/notifications/error.png and /dev/null differ
diff --git a/themes/black/client/src/img/notifications/info.png b/themes/black/client/src/img/notifications/info.png
deleted file mode 100644
index 67928e88c..000000000
Binary files a/themes/black/client/src/img/notifications/info.png and /dev/null differ
diff --git a/themes/black/client/src/img/notifications/success.png b/themes/black/client/src/img/notifications/success.png
deleted file mode 100644
index d3998392d..000000000
Binary files a/themes/black/client/src/img/notifications/success.png and /dev/null differ
diff --git a/themes/black/client/src/img/notifications/warning.png b/themes/black/client/src/img/notifications/warning.png
deleted file mode 100644
index ab8b54ffc..000000000
Binary files a/themes/black/client/src/img/notifications/warning.png and /dev/null differ
diff --git a/themes/black/client/src/img/padlock.png b/themes/black/client/src/img/padlock.png
deleted file mode 100644
index 31abbaeef..000000000
Binary files a/themes/black/client/src/img/padlock.png and /dev/null differ
diff --git a/themes/black/client/src/img/password_white.png b/themes/black/client/src/img/password_white.png
deleted file mode 100644
index 0b93ef3fb..000000000
Binary files a/themes/black/client/src/img/password_white.png and /dev/null differ
diff --git a/themes/black/client/src/img/pendrive.png b/themes/black/client/src/img/pendrive.png
deleted file mode 100644
index fa49178c3..000000000
Binary files a/themes/black/client/src/img/pendrive.png and /dev/null differ
diff --git a/themes/black/client/src/img/sharingan.png b/themes/black/client/src/img/sharingan.png
deleted file mode 100644
index 526787d3b..000000000
Binary files a/themes/black/client/src/img/sharingan.png and /dev/null differ
diff --git a/themes/black/client/src/img/stores/.directory b/themes/black/client/src/img/stores/.directory
deleted file mode 100644
index 7bdc8daf8..000000000
--- a/themes/black/client/src/img/stores/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,25
-Version=3
-ViewMode=1
diff --git a/themes/black/client/src/img/stores/applestore-badge.svg b/themes/black/client/src/img/stores/applestore-badge.svg
deleted file mode 100644
index ac111e597..000000000
--- a/themes/black/client/src/img/stores/applestore-badge.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/black/client/src/img/stores/googleplay-badge.svg b/themes/black/client/src/img/stores/googleplay-badge.svg
deleted file mode 100644
index 9e33e3aa2..000000000
--- a/themes/black/client/src/img/stores/googleplay-badge.svg
+++ /dev/null
@@ -1,429 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/themes/black/client/src/img/success.png b/themes/black/client/src/img/success.png
deleted file mode 100644
index ee9d6841b..000000000
Binary files a/themes/black/client/src/img/success.png and /dev/null differ
diff --git a/themes/black/client/src/img/user.png b/themes/black/client/src/img/user.png
deleted file mode 100644
index 00941399d..000000000
Binary files a/themes/black/client/src/img/user.png and /dev/null differ
diff --git a/themes/black/client/src/img/warning.png b/themes/black/client/src/img/warning.png
deleted file mode 100644
index c6acd953b..000000000
Binary files a/themes/black/client/src/img/warning.png and /dev/null differ
diff --git a/themes/black/client/src/thirdparties/qrcode.min.js b/themes/black/client/src/thirdparties/qrcode.min.js
deleted file mode 100644
index 993e88f39..000000000
--- a/themes/black/client/src/thirdparties/qrcode.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push(' ');g.push(" ")}g.push("
"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
diff --git a/themes/black/client/src/thirdparties/u2f-api.js b/themes/black/client/src/thirdparties/u2f-api.js
deleted file mode 100644
index 8c7801e3b..000000000
--- a/themes/black/client/src/thirdparties/u2f-api.js
+++ /dev/null
@@ -1,749 +0,0 @@
-//Copyright 2014-2015 Google Inc. All rights reserved.
-
-//Use of this source code is governed by a BSD-style
-//license that can be found in the LICENSE file or at
-//https://developers.google.com/open-source/licenses/bsd
-
-/**
- * @fileoverview The U2F api.
- */
-'use strict';
-
-
-/**
- * Namespace for the U2F api.
- * @type {Object}
- */
-var u2f = u2f || {};
-
-/**
- * FIDO U2F Javascript API Version
- * @number
- */
-var js_api_version;
-
-/**
- * The U2F extension id
- * @const {string}
- */
-// The Chrome packaged app extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the package Chrome app and does not require installing the U2F Chrome extension.
- u2f.EXTENSION_ID = 'kmendfapggjehodndflmmgagdbamhnfd';
-// The U2F Chrome extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the U2F Chrome extension to authenticate.
-// u2f.EXTENSION_ID = 'pfboblefjcgdjicmnffhdgionmgcdmne';
-
-
-/**
- * Message types for messsages to/from the extension
- * @const
- * @enum {string}
- */
-u2f.MessageTypes = {
- 'U2F_REGISTER_REQUEST': 'u2f_register_request',
- 'U2F_REGISTER_RESPONSE': 'u2f_register_response',
- 'U2F_SIGN_REQUEST': 'u2f_sign_request',
- 'U2F_SIGN_RESPONSE': 'u2f_sign_response',
- 'U2F_GET_API_VERSION_REQUEST': 'u2f_get_api_version_request',
- 'U2F_GET_API_VERSION_RESPONSE': 'u2f_get_api_version_response'
-};
-
-
-/**
- * Response status codes
- * @const
- * @enum {number}
- */
-u2f.ErrorCodes = {
- 'OK': 0,
- 'OTHER_ERROR': 1,
- 'BAD_REQUEST': 2,
- 'CONFIGURATION_UNSUPPORTED': 3,
- 'DEVICE_INELIGIBLE': 4,
- 'TIMEOUT': 5
-};
-
-
-/**
- * A message for registration requests
- * @typedef {{
- * type: u2f.MessageTypes,
- * appId: ?string,
- * timeoutSeconds: ?number,
- * requestId: ?number
- * }}
- */
-u2f.U2fRequest;
-
-
-/**
- * A message for registration responses
- * @typedef {{
- * type: u2f.MessageTypes,
- * responseData: (u2f.Error | u2f.RegisterResponse | u2f.SignResponse),
- * requestId: ?number
- * }}
- */
-u2f.U2fResponse;
-
-
-/**
- * An error object for responses
- * @typedef {{
- * errorCode: u2f.ErrorCodes,
- * errorMessage: ?string
- * }}
- */
-u2f.Error;
-
-/**
- * Data object for a single sign request.
- * @typedef {enum {BLUETOOTH_RADIO, BLUETOOTH_LOW_ENERGY, USB, NFC}}
- */
-u2f.Transport;
-
-
-/**
- * Data object for a single sign request.
- * @typedef {Array}
- */
-u2f.Transports;
-
-/**
- * Data object for a single sign request.
- * @typedef {{
- * version: string,
- * challenge: string,
- * keyHandle: string,
- * appId: string
- * }}
- */
-u2f.SignRequest;
-
-
-/**
- * Data object for a sign response.
- * @typedef {{
- * keyHandle: string,
- * signatureData: string,
- * clientData: string
- * }}
- */
-u2f.SignResponse;
-
-
-/**
- * Data object for a registration request.
- * @typedef {{
- * version: string,
- * challenge: string
- * }}
- */
-u2f.RegisterRequest;
-
-
-/**
- * Data object for a registration response.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: Transports,
- * appId: string
- * }}
- */
-u2f.RegisterResponse;
-
-
-/**
- * Data object for a registered key.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: ?Transports,
- * appId: ?string
- * }}
- */
-u2f.RegisteredKey;
-
-
-/**
- * Data object for a get API register response.
- * @typedef {{
- * js_api_version: number
- * }}
- */
-u2f.GetJsApiVersionResponse;
-
-
-//Low level MessagePort API support
-
-/**
- * Sets up a MessagePort to the U2F extension using the
- * available mechanisms.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- */
-u2f.getMessagePort = function(callback) {
- if (typeof chrome != 'undefined' && chrome.runtime) {
- // The actual message here does not matter, but we need to get a reply
- // for the callback to run. Thus, send an empty signature request
- // in order to get a failure response.
- var msg = {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: []
- };
- chrome.runtime.sendMessage(u2f.EXTENSION_ID, msg, function() {
- if (!chrome.runtime.lastError) {
- // We are on a whitelisted origin and can talk directly
- // with the extension.
- u2f.getChromeRuntimePort_(callback);
- } else {
- // chrome.runtime was available, but we couldn't message
- // the extension directly, use iframe
- u2f.getIframePort_(callback);
- }
- });
- } else if (u2f.isAndroidChrome_()) {
- u2f.getAuthenticatorPort_(callback);
- } else if (u2f.isIosChrome_()) {
- u2f.getIosPort_(callback);
- } else {
- // chrome.runtime was not available at all, which is normal
- // when this origin doesn't have access to any extensions.
- u2f.getIframePort_(callback);
- }
-};
-
-/**
- * Detect chrome running on android based on the browser's useragent.
- * @private
- */
-u2f.isAndroidChrome_ = function() {
- var userAgent = navigator.userAgent;
- return userAgent.indexOf('Chrome') != -1 &&
- userAgent.indexOf('Android') != -1;
-};
-
-/**
- * Detect chrome running on iOS based on the browser's platform.
- * @private
- */
-u2f.isIosChrome_ = function() {
- return ["iPhone", "iPad", "iPod"].indexOf(navigator.platform) > -1;
-};
-
-/**
- * Connects directly to the extension via chrome.runtime.connect.
- * @param {function(u2f.WrappedChromeRuntimePort_)} callback
- * @private
- */
-u2f.getChromeRuntimePort_ = function(callback) {
- var port = chrome.runtime.connect(u2f.EXTENSION_ID,
- {'includeTlsChannelId': true});
- setTimeout(function() {
- callback(new u2f.WrappedChromeRuntimePort_(port));
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the Authenticator app.
- * @param {function(u2f.WrappedAuthenticatorPort_)} callback
- * @private
- */
-u2f.getAuthenticatorPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedAuthenticatorPort_());
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the iOS client app.
- * @param {function(u2f.WrappedIosPort_)} callback
- * @private
- */
-u2f.getIosPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedIosPort_());
- }, 0);
-};
-
-/**
- * A wrapper for chrome.runtime.Port that is compatible with MessagePort.
- * @param {Port} port
- * @constructor
- * @private
- */
-u2f.WrappedChromeRuntimePort_ = function(port) {
- this.port_ = port;
-};
-
-/**
- * Format and return a sign request compliant with the JS API version supported by the extension.
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatSignRequest_ =
- function(appId, challenge, registeredKeys, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: challenge,
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: signRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- appId: appId,
- challenge: challenge,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-/**
- * Format and return a register request compliant with the JS API version supported by the extension..
- * @param {Array} signRequests
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatRegisterRequest_ =
- function(appId, registeredKeys, registerRequests, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- for (var i = 0; i < registerRequests.length; i++) {
- registerRequests[i].appId = appId;
- }
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: registerRequests[0],
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- signRequests: signRequests,
- registerRequests: registerRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- appId: appId,
- registerRequests: registerRequests,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-
-/**
- * Posts a message on the underlying channel.
- * @param {Object} message
- */
-u2f.WrappedChromeRuntimePort_.prototype.postMessage = function(message) {
- this.port_.postMessage(message);
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface. Works only for the
- * onmessage event, which is hooked up to the chrome.runtime.Port.onMessage.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedChromeRuntimePort_.prototype.addEventListener =
- function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message' || name == 'onmessage') {
- this.port_.onMessage.addListener(function(message) {
- // Emulate a minimal MessageEvent object
- handler({'data': message});
- });
- } else {
- console.error('WrappedChromeRuntimePort only supports onMessage');
- }
-};
-
-/**
- * Wrap the Authenticator app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedAuthenticatorPort_ = function() {
- this.requestId_ = -1;
- this.requestObject_ = null;
-}
-
-/**
- * Launch the Authenticator intent.
- * @param {Object} message
- */
-u2f.WrappedAuthenticatorPort_.prototype.postMessage = function(message) {
- var intentUrl =
- u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ +
- ';S.request=' + encodeURIComponent(JSON.stringify(message)) +
- ';end';
- document.location = intentUrl;
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedAuthenticatorPort_.prototype.getPortType = function() {
- return "WrappedAuthenticatorPort_";
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedAuthenticatorPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message') {
- var self = this;
- /* Register a callback to that executes when
- * chrome injects the response. */
- window.addEventListener(
- 'message', self.onRequestUpdate_.bind(self, handler), false);
- } else {
- console.error('WrappedAuthenticatorPort only supports message');
- }
-};
-
-/**
- * Callback invoked when a response is received from the Authenticator.
- * @param function({data: Object}) callback
- * @param {Object} message message Object
- */
-u2f.WrappedAuthenticatorPort_.prototype.onRequestUpdate_ =
- function(callback, message) {
- var messageObject = JSON.parse(message.data);
- var intentUrl = messageObject['intentURL'];
-
- var errorCode = messageObject['errorCode'];
- var responseObject = null;
- if (messageObject.hasOwnProperty('data')) {
- responseObject = /** @type {Object} */ (
- JSON.parse(messageObject['data']));
- }
-
- callback({'data': responseObject});
-};
-
-/**
- * Base URL for intents to Authenticator.
- * @const
- * @private
- */
-u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ =
- 'intent:#Intent;action=com.google.android.apps.authenticator.AUTHENTICATE';
-
-/**
- * Wrap the iOS client app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedIosPort_ = function() {};
-
-/**
- * Launch the iOS client app request
- * @param {Object} message
- */
-u2f.WrappedIosPort_.prototype.postMessage = function(message) {
- var str = JSON.stringify(message);
- var url = "u2f://auth?" + encodeURI(str);
- location.replace(url);
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedIosPort_.prototype.getPortType = function() {
- return "WrappedIosPort_";
-};
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedIosPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name !== 'message') {
- console.error('WrappedIosPort only supports message');
- }
-};
-
-/**
- * Sets up an embedded trampoline iframe, sourced from the extension.
- * @param {function(MessagePort)} callback
- * @private
- */
-u2f.getIframePort_ = function(callback) {
- // Create the iframe
- var iframeOrigin = 'chrome-extension://' + u2f.EXTENSION_ID;
- var iframe = document.createElement('iframe');
- iframe.src = iframeOrigin + '/u2f-comms.html';
- iframe.setAttribute('style', 'display:none');
- document.body.appendChild(iframe);
-
- var channel = new MessageChannel();
- var ready = function(message) {
- if (message.data == 'ready') {
- channel.port1.removeEventListener('message', ready);
- callback(channel.port1);
- } else {
- console.error('First event on iframe port was not "ready"');
- }
- };
- channel.port1.addEventListener('message', ready);
- channel.port1.start();
-
- iframe.addEventListener('load', function() {
- // Deliver the port to the iframe and initialize
- iframe.contentWindow.postMessage('init', iframeOrigin, [channel.port2]);
- });
-};
-
-
-//High-level JS API
-
-/**
- * Default extension response timeout in seconds.
- * @const
- */
-u2f.EXTENSION_TIMEOUT_SEC = 30;
-
-/**
- * A singleton instance for a MessagePort to the extension.
- * @type {MessagePort|u2f.WrappedChromeRuntimePort_}
- * @private
- */
-u2f.port_ = null;
-
-/**
- * Callbacks waiting for a port
- * @type {Array}
- * @private
- */
-u2f.waitingForPort_ = [];
-
-/**
- * A counter for requestIds.
- * @type {number}
- * @private
- */
-u2f.reqCounter_ = 0;
-
-/**
- * A map from requestIds to client callbacks
- * @type {Object.}
- * @private
- */
-u2f.callbackMap_ = {};
-
-/**
- * Creates or retrieves the MessagePort singleton to use.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- * @private
- */
-u2f.getPortSingleton_ = function(callback) {
- if (u2f.port_) {
- callback(u2f.port_);
- } else {
- if (u2f.waitingForPort_.length == 0) {
- u2f.getMessagePort(function(port) {
- u2f.port_ = port;
- u2f.port_.addEventListener('message',
- /** @type {function(Event)} */ (u2f.responseHandler_));
-
- // Careful, here be async callbacks. Maybe.
- while (u2f.waitingForPort_.length)
- u2f.waitingForPort_.shift()(u2f.port_);
- });
- }
- u2f.waitingForPort_.push(callback);
- }
-};
-
-/**
- * Handles response messages from the extension.
- * @param {MessageEvent.} message
- * @private
- */
-u2f.responseHandler_ = function(message) {
- var response = message.data;
- var reqId = response['requestId'];
- if (!reqId || !u2f.callbackMap_[reqId]) {
- console.error('Unknown or missing requestId in response.');
- return;
- }
- var cb = u2f.callbackMap_[reqId];
- delete u2f.callbackMap_[reqId];
- cb(response['responseData']);
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the sign request.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sign = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual sign request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0 : response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual sign request in the supported API version.
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendSignRequest = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatSignRequest_(appId, challenge, registeredKeys, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the register request.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.register = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual register request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0: response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual register request in the supported API version.
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendRegisterRequest = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatRegisterRequest_(
- appId, registeredKeys, registerRequests, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-
-/**
- * Dispatches a message to the extension to find out the supported
- * JS API version.
- * If the user is on a mobile phone and is thus using Google Authenticator instead
- * of the Chrome extension, don't send the request and simply return 0.
- * @param {function((u2f.Error|u2f.GetJsApiVersionResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.getApiVersion = function(callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- // If we are using Android Google Authenticator or iOS client app,
- // do not fire an intent to ask which JS API version to use.
- if (port.getPortType) {
- var apiVersion;
- switch (port.getPortType()) {
- case 'WrappedIosPort_':
- case 'WrappedAuthenticatorPort_':
- apiVersion = 1.1;
- break;
-
- default:
- apiVersion = 0;
- break;
- }
- callback({ 'js_api_version': apiVersion });
- return;
- }
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var req = {
- type: u2f.MessageTypes.U2F_GET_API_VERSION_REQUEST,
- timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),
- requestId: reqId
- };
- port.postMessage(req);
- });
-};
-
diff --git a/themes/black/server/.directory b/themes/black/server/.directory
deleted file mode 100644
index b7754766c..000000000
--- a/themes/black/server/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,58,20
-Version=3
-ViewMode=1
diff --git a/themes/black/server/src/resources/email-template.ejs b/themes/black/server/src/resources/email-template.ejs
deleted file mode 100644
index f59c2f944..000000000
--- a/themes/black/server/src/resources/email-template.ejs
+++ /dev/null
@@ -1,254 +0,0 @@
-
-
-
-
-
- Simples-Minimalistic Responsive Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <%= title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This email has been sent to you in order to validate your identity. Please ignore it if you do not know why you received it.
-
-
-
-
-
-
-
-
-
-
-
- <%= button_title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Please ignore this email if you did not initiate the process.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/black/server/src/views/already-logged-in.pug b/themes/black/server/src/views/already-logged-in.pug
deleted file mode 100644
index 137bbea30..000000000
--- a/themes/black/server/src/views/already-logged-in.pug
+++ /dev/null
@@ -1,14 +0,0 @@
-extends layout/layout.pug
-
-block form-header
- h1 Sign in
-
-block content
- img(class="header-img" src="/img/success.png" alt="success")
- if redirection_url
- p You are already logged in as #{ username } .
- | If you are not redirected in few seconds, click here .
- | Otherwise, click here to log off.
- else
- p You are already logged in as #{ username } .
- | Click here to log off.
diff --git a/themes/black/server/src/views/errors/.directory b/themes/black/server/src/views/errors/.directory
deleted file mode 100644
index 33f71bea4..000000000
--- a/themes/black/server/src/views/errors/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,59,57
-Version=3
-ViewMode=1
diff --git a/themes/black/server/src/views/errors/401.pug b/themes/black/server/src/views/errors/401.pug
deleted file mode 100644
index b7a222ad0..000000000
--- a/themes/black/server/src/views/errors/401.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-401";
-
-block form-header
- h1 Error 401
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You are not authorized to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You are not authorized to access this resource.
\ No newline at end of file
diff --git a/themes/black/server/src/views/errors/403.pug b/themes/black/server/src/views/errors/403.pug
deleted file mode 100644
index f4b5ca8a2..000000000
--- a/themes/black/server/src/views/errors/403.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-403";
-
-block form-header
- h1 Error 403
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You don't have enough privileges to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You don't have enough privileges to access this resource.
diff --git a/themes/black/server/src/views/errors/404.pug b/themes/black/server/src/views/errors/404.pug
deleted file mode 100644
index 06d6375fc..000000000
--- a/themes/black/server/src/views/errors/404.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-404";
-
-block form-header
- Error 404
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- p Page not found.
diff --git a/themes/black/server/src/views/firstfactor.pug b/themes/black/server/src/views/firstfactor.pug
deleted file mode 100644
index 574470710..000000000
--- a/themes/black/server/src/views/firstfactor.pug
+++ /dev/null
@@ -1,23 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "firstfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/sharingan.png" alt="user profile")
- p Enter your credentials to sign in
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" id="username" placeholder="Username" required autofocus)
- input(type="password" class="form-control" id="password" placeholder="Password" required)
- button(id="signin" class="btn btn-lg btn-primary btn-block" type="submit") Sign in
- div(class="keep-me-logged-in pull-left")
- input(type="checkbox" id="keep_me_logged_in" name="keep_me_logged_in" value="true")
- label(for="keep_me_logged_in") Keep me logged in
- div(class="bottom-right-links pull-right")
- a(href=reset_password_request_endpoint, class="link forgot-password") Forgot password?
- span(class="clearfix")
diff --git a/themes/black/server/src/views/layout/layout.pug b/themes/black/server/src/views/layout/layout.pug
deleted file mode 100644
index 43247436d..000000000
--- a/themes/black/server/src/views/layout/layout.pug
+++ /dev/null
@@ -1,28 +0,0 @@
-block variables
-
-doctype html
-html
- head
- title Authelia - 2FA
- meta(name="viewport", content="width=device-width, initial-scale=1.0")
- meta(name="robots", content="noindex, nofollow, nosnippet, noarchive")
- meta(http-equiv="Content-Security-Policy", content="default-src 'self'; img-src 'self' data:;")
- link(rel="icon", href="/img/icon.png" type="image/png" sizes="32x32")
- link(rel="stylesheet", type="text/css", href="/css/authelia.css")
- if redirection_url
- meta(http-equiv="refresh" content="4;url=" + redirection_url)
- body
- div(class="container")
- div(class="row")
- div(class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3")
- div(class="account-wall " + page_classname)
- div(class="row header")
- block form-header
- div(class="row body")
- div(class="form col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2")
- block content
- div(class="row footer poweredby-block")
- div(class="poweredby col-xs-6 col-xs-offset-4 col-sm-6 col-sm-offset-4 col-md-6 col-md-offset-4")
- | Powered by Authelia
- block entrypoint
- script(src="/js/authelia.js", type="text/javascript")
diff --git a/themes/black/server/src/views/need-identity-validation.pug b/themes/black/server/src/views/need-identity-validation.pug
deleted file mode 100644
index 4cfd62717..000000000
--- a/themes/black/server/src/views/need-identity-validation.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "identity-validation";
-
-block form-header
- h1 Registration
-
-block content
- img(class="header-img" src="/img/mail.png" alt="mail")
- p A confirmation email has been sent to your mailbox.
- | Please open it and click on the link within 15 minutes to confirm the registration.
diff --git a/themes/black/server/src/views/password-reset-form.pug b/themes/black/server/src/views/password-reset-form.pug
deleted file mode 100644
index fd9311892..000000000
--- a/themes/black/server/src/views/password-reset-form.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-form";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/password_white.png" alt="password")
- p Set your new password and confirm it.
- form(class="form-signin")
- div(class="form-inputs")
- input(class="form-control" type="password" name="password1" id="password1" placeholder="New password" required="required")
- input(class="form-control" type="password" name="password2" id="password2" placeholder="Password confirmation" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/black/server/src/views/password-reset-request.pug b/themes/black/server/src/views/password-reset-request.pug
deleted file mode 100644
index 855b5998b..000000000
--- a/themes/black/server/src/views/password-reset-request.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-request";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- div
- img(class="header-img" src="/img/password_white.png" alt="password")
- p After giving your username, you will receive an email to change your password.
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" name="username" id="username" placeholder="Your username" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/black/server/src/views/secondfactor.pug b/themes/black/server/src/views/secondfactor.pug
deleted file mode 100644
index 87b578185..000000000
--- a/themes/black/server/src/views/secondfactor.pug
+++ /dev/null
@@ -1,31 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "secondfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div
- div(class="notification notification-totp")
- h3 Hi #{username}
- div(class="row")
- div(class="u2f-token")
- img(src="/img/pendrive.png", alt="security key")
- p
- | Please, touch your security key
- b Or
- | Get a one-time password
- form(class="form-signin totp")
- div(class="form-inputs")
- input(type="text" autocomplete="off" class="form-control" id="token" placeholder="Token" required autofocus)
- button(class="btn btn-lg btn-primary btn-block totp-button" type="submit") Sign in
- div(class="pull-right bottom-right-links")
- div Need to register?
- div
- a(href=u2f_identity_start_endpoint, class="link register-u2f", data-toggle="tooltip", title="A security key is required to register.") Security key
- | |
- a(href=totp_identity_start_endpoint, class="link register-totp") Google Authenticator
- span(class="clearfix")
- script(src="/js/u2f-api.js", type="text/javascript")
diff --git a/themes/black/server/src/views/totp-register.pug b/themes/black/server/src/views/totp-register.pug
deleted file mode 100644
index 1b4d98354..000000000
--- a/themes/black/server/src/views/totp-register.pug
+++ /dev/null
@@ -1,25 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "totp-register";
-
-block form-header
- h1 One-time passwords
-
-block content
- p Open Google Authenticator and add this entry
- p(id="secret") #{ base32_secret }
- p or scan this barcode
- div(id="qrcode") #{ otpauth_url }
- p
- a(href=login_endpoint, id="login-button") Login
- div(class="need-google-authenticator")
- | Need Google Authenticator?
- div(class="store-badges")
- a(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
- img(alt='Get it on Google Play', src='/img/stores/googleplay-badge.svg', class="store-badge")
- a(href='https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8', target="_blank")
- img(alt='Get it on Apple Store' src='/img/stores/applestore-badge.svg' class="store-badge")
-
-block entrypoint
- script(src="/js/qrcode.min.js", type="text/javascript" )
diff --git a/themes/black/server/src/views/u2f-register.pug b/themes/black/server/src/views/u2f-register.pug
deleted file mode 100644
index d52eba6ca..000000000
--- a/themes/black/server/src/views/u2f-register.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "u2f-register";
-
-block form-header
- h1 Register your security key
-
-block content
- p Touch the token to register your security key.
- img(src="/img/pendrive.png" alt="pendrive")
- script(src="/js/u2f-api.js", type="text/javascript")
\ No newline at end of file
diff --git a/themes/default/client/src/css/.directory b/themes/default/client/src/css/.directory
deleted file mode 100644
index eca81829c..000000000
--- a/themes/default/client/src/css/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,56,39
-Version=3
-ViewMode=1
diff --git a/themes/default/client/src/css/00-bootstrap.min.css b/themes/default/client/src/css/00-bootstrap.min.css
deleted file mode 100644
index ed3905e0e..000000000
--- a/themes/default/client/src/css/00-bootstrap.min.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
-/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/themes/default/client/src/css/01-main.css b/themes/default/client/src/css/01-main.css
deleted file mode 100644
index ead0852a7..000000000
--- a/themes/default/client/src/css/01-main.css
+++ /dev/null
@@ -1,67 +0,0 @@
-body {
- background-image: url("/img/background.svg");
-}
-.authelia-brand {
- font-weight: bold;
- font-style: italic;
- color: #648caf
-}
-.poweredby-block {
- margin: 0px 30px;
- margin-top: 10px;
- padding-top: 15px;
- border-top: 1px solid rgba(0, 0, 0, 0.15);
-}
-.poweredby {
- font-size: 0.7em;
- color: #6b6b6b;
-}
-/* notifications */
-.notification {
- padding: 10px;
- margin: 15px 0px;
- border-radius: 6px;
- display: none;
- position: absolute;
-}
-.notification img {
- width: 24px;
- margin-right: 10px;
-}
-.notification i,
-.notification span {
- display:table-cell;
- vertical-align:middle;
-}
-.info {
- border: 1px solid #9cb1ff;
- background-color: rgb(192, 220, 255);
-}
-.success {
- border: 1px solid #65ec7c;
- background-color: rgb(163, 255, 157);
-}
-.error {
- border: 1px solid #ffa3a3;
- background-color: rgb(255, 175, 175);
-}
-.warning {
- border: 1px solid #ffd743;
- background-color: rgb(255, 230, 143);
-}
-.bottom-right-links {
- text-align: right;
- margin-top: 10px;
- font-size: 0.8em;
-}
-.header {
- background-color: #778dab;
- color: white;
- margin: 0px;
-}
-.body {
- padding: 10px;
-}
-h1 {
- font-size: 25px;
-}
diff --git a/themes/default/client/src/css/02-login.css b/themes/default/client/src/css/02-login.css
deleted file mode 100644
index aa59733d3..000000000
--- a/themes/default/client/src/css/02-login.css
+++ /dev/null
@@ -1,132 +0,0 @@
-.form-signin
-{
- margin: 0 auto;
-}
-
-.form-signin .form-signin-heading, .form-signin .checkbox
-{
- margin-bottom: 10px;
-}
-
-.form-signin .checkbox
-{
- font-weight: normal;
-}
-
-.form-signin .form-control
-{
- position: relative;
- font-size: 16px;
- height: auto;
- padding: 10px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.form-signin .form-control:focus
-{
- z-index: 2;
-}
-.form-signin input[type="text"]
-{
- margin-bottom: -1px;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-.form-signin input[type="password"]
-{
- /* margin-bottom: 10px; */
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.account-wall
-{
- border: 1px solid #DDD;
- margin-top: 20px;
- padding-bottom: 20px;
- background-color: #f7f7f7;
- -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
- -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
- box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
-}
-.account-wall h1
-{
- margin-bottom: 15px;
- margin-top: 15px;
- font-weight: 800;
- display: block;
- text-align: center;
-}
-.account-wall h3
-{
- display: block;
- text-align: center;
-}
-.account-wall p
-{
- text-align: center;
- margin: 10px;
-}
-.account-wall .form-inputs
-{
- margin-bottom: 10px;
-}
-.account-wall hr {
- border-color: #c5c5c5;
-}
-
-.header-img
-{
- width: 96px;
- height: 96px;
- margin: 0 auto 10px;
- display: block;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
- border-radius: 50%;
-}
-
-.link
-{
- margin-top: 10px;
-}
-
-.btn-primary.totp
-{
- background-color: rgb(102, 135, 162);
-}
-
-.btn-primary.u2f
-{
- background-color: rgb(83, 149, 204);
-}
-
-.u2f-token {
- text-align: center;
-}
-
-.u2f-token img {
- width: 70px;
-}
-
-.keep-me-logged-in {
- margin-top: 10px;
- font-size: 0.8em;
-}
-
-.keep-me-logged-in input[type=checkbox] {
- transform: scale(0.8);
- margin: 0;
- margin-right: 4px;
-}
-
-.keep-me-logged-in label {
- font-weight: 300;
-}
-
-.keep-me-logged-in input,
-.keep-me-logged-in label {
- display: inline-block;
- margin-bottom: 0; /* I added this after I posted my reply */
- vertical-align: middle; /* Fixes any weird issues in Firefox and IE */
-}
\ No newline at end of file
diff --git a/themes/default/client/src/css/03-errors.css b/themes/default/client/src/css/03-errors.css
deleted file mode 100644
index e9f97f33b..000000000
--- a/themes/default/client/src/css/03-errors.css
+++ /dev/null
@@ -1,12 +0,0 @@
-
-.error-401 .header-img {
- border-radius: 0%;
-}
-
-.error-403 .header-img {
- border-radius: 0%;
-}
-
-.error-404 .header-img {
- border-radius: 0%;
-}
\ No newline at end of file
diff --git a/themes/default/client/src/css/03-password-reset-form.css b/themes/default/client/src/css/03-password-reset-form.css
deleted file mode 100644
index 34066bc24..000000000
--- a/themes/default/client/src/css/03-password-reset-form.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-form .header-img {
- border-radius: 0%;
-}
diff --git a/themes/default/client/src/css/03-password-reset-request.css b/themes/default/client/src/css/03-password-reset-request.css
deleted file mode 100644
index 1a2ad4df8..000000000
--- a/themes/default/client/src/css/03-password-reset-request.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-request .header-img {
- border-radius: 0%;
-}
diff --git a/themes/default/client/src/css/03-totp-register.css b/themes/default/client/src/css/03-totp-register.css
deleted file mode 100644
index cb76720ad..000000000
--- a/themes/default/client/src/css/03-totp-register.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.totp-register #secret {
- background-color: white;
- font-size: 0.9em;
- font-weight: bold;
- padding: 5px;
- border: 1px solid #c7c7c7;
- word-wrap: break-word;
-}
-.totp-register #qrcode img {
- margin: 10px auto;
-}
-.totp-register .need-google-authenticator {
- text-align: center;
- margin-top: 20px;
-}
-.totp-register .store-badges {
- margin-top: 5px;
-}
-.totp-register .store-badge {
- width: 110px;
- height: 30px;
-}
\ No newline at end of file
diff --git a/themes/default/client/src/css/03-u2f-register.css b/themes/default/client/src/css/03-u2f-register.css
deleted file mode 100644
index e54cddf89..000000000
--- a/themes/default/client/src/css/03-u2f-register.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
-.u2f-register img {
- display: block;
- margin: 20px auto;
-}
\ No newline at end of file
diff --git a/themes/default/client/src/img/background.svg b/themes/default/client/src/img/background.svg
deleted file mode 100644
index 93b00339b..000000000
--- a/themes/default/client/src/img/background.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/themes/default/client/src/img/icon.png b/themes/default/client/src/img/icon.png
deleted file mode 100644
index 040d10c1a..000000000
Binary files a/themes/default/client/src/img/icon.png and /dev/null differ
diff --git a/themes/default/client/src/img/mail.png b/themes/default/client/src/img/mail.png
deleted file mode 100644
index 834bfce91..000000000
Binary files a/themes/default/client/src/img/mail.png and /dev/null differ
diff --git a/themes/default/client/src/img/notifications/.directory b/themes/default/client/src/img/notifications/.directory
deleted file mode 100644
index 24d68ea36..000000000
--- a/themes/default/client/src/img/notifications/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,31
-Version=3
-ViewMode=1
diff --git a/themes/default/client/src/img/notifications/error.png b/themes/default/client/src/img/notifications/error.png
deleted file mode 100644
index bf64d28f7..000000000
Binary files a/themes/default/client/src/img/notifications/error.png and /dev/null differ
diff --git a/themes/default/client/src/img/notifications/info.png b/themes/default/client/src/img/notifications/info.png
deleted file mode 100644
index 67928e88c..000000000
Binary files a/themes/default/client/src/img/notifications/info.png and /dev/null differ
diff --git a/themes/default/client/src/img/notifications/success.png b/themes/default/client/src/img/notifications/success.png
deleted file mode 100644
index d3998392d..000000000
Binary files a/themes/default/client/src/img/notifications/success.png and /dev/null differ
diff --git a/themes/default/client/src/img/notifications/warning.png b/themes/default/client/src/img/notifications/warning.png
deleted file mode 100644
index ab8b54ffc..000000000
Binary files a/themes/default/client/src/img/notifications/warning.png and /dev/null differ
diff --git a/themes/default/client/src/img/padlock.png b/themes/default/client/src/img/padlock.png
deleted file mode 100644
index 31abbaeef..000000000
Binary files a/themes/default/client/src/img/padlock.png and /dev/null differ
diff --git a/themes/default/client/src/img/password.png b/themes/default/client/src/img/password.png
deleted file mode 100644
index cf6164740..000000000
Binary files a/themes/default/client/src/img/password.png and /dev/null differ
diff --git a/themes/default/client/src/img/pendrive.png b/themes/default/client/src/img/pendrive.png
deleted file mode 100644
index fa49178c3..000000000
Binary files a/themes/default/client/src/img/pendrive.png and /dev/null differ
diff --git a/themes/default/client/src/img/stores/.directory b/themes/default/client/src/img/stores/.directory
deleted file mode 100644
index 9c9dfe047..000000000
--- a/themes/default/client/src/img/stores/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,26
-Version=3
-ViewMode=1
diff --git a/themes/default/client/src/img/stores/applestore-badge.svg b/themes/default/client/src/img/stores/applestore-badge.svg
deleted file mode 100644
index ac111e597..000000000
--- a/themes/default/client/src/img/stores/applestore-badge.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/default/client/src/img/stores/googleplay-badge.svg b/themes/default/client/src/img/stores/googleplay-badge.svg
deleted file mode 100644
index 9e33e3aa2..000000000
--- a/themes/default/client/src/img/stores/googleplay-badge.svg
+++ /dev/null
@@ -1,429 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/themes/default/client/src/img/success.png b/themes/default/client/src/img/success.png
deleted file mode 100644
index ee9d6841b..000000000
Binary files a/themes/default/client/src/img/success.png and /dev/null differ
diff --git a/themes/default/client/src/img/user.png b/themes/default/client/src/img/user.png
deleted file mode 100644
index 00941399d..000000000
Binary files a/themes/default/client/src/img/user.png and /dev/null differ
diff --git a/themes/default/client/src/img/warning.png b/themes/default/client/src/img/warning.png
deleted file mode 100644
index c6acd953b..000000000
Binary files a/themes/default/client/src/img/warning.png and /dev/null differ
diff --git a/themes/default/client/src/thirdparties/qrcode.min.js b/themes/default/client/src/thirdparties/qrcode.min.js
deleted file mode 100644
index 993e88f39..000000000
--- a/themes/default/client/src/thirdparties/qrcode.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push(' ');g.push(" ")}g.push("
"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
diff --git a/themes/default/server/.directory b/themes/default/server/.directory
deleted file mode 100644
index a9c754bbb..000000000
--- a/themes/default/server/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,58,21
-Version=3
-ViewMode=1
diff --git a/themes/default/server/src/resources/email-template.ejs b/themes/default/server/src/resources/email-template.ejs
deleted file mode 100644
index f29d5afc0..000000000
--- a/themes/default/server/src/resources/email-template.ejs
+++ /dev/null
@@ -1,254 +0,0 @@
-
-
-
-
-
- Simples-Minimalistic Responsive Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <%= title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This email has been sent to you in order to validate your identity. Please ignore it if you do not know why you received it.
-
-
-
-
-
-
-
-
-
-
-
- <%= button_title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Please ignore this email if you did not initiate the process.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/default/server/src/views/already-logged-in.pug b/themes/default/server/src/views/already-logged-in.pug
deleted file mode 100644
index 137bbea30..000000000
--- a/themes/default/server/src/views/already-logged-in.pug
+++ /dev/null
@@ -1,14 +0,0 @@
-extends layout/layout.pug
-
-block form-header
- h1 Sign in
-
-block content
- img(class="header-img" src="/img/success.png" alt="success")
- if redirection_url
- p You are already logged in as #{ username } .
- | If you are not redirected in few seconds, click here .
- | Otherwise, click here to log off.
- else
- p You are already logged in as #{ username } .
- | Click here to log off.
diff --git a/themes/default/server/src/views/errors/.directory b/themes/default/server/src/views/errors/.directory
deleted file mode 100644
index d51d6cb47..000000000
--- a/themes/default/server/src/views/errors/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,59,58
-Version=3
-ViewMode=1
diff --git a/themes/default/server/src/views/errors/401.pug b/themes/default/server/src/views/errors/401.pug
deleted file mode 100644
index b7a222ad0..000000000
--- a/themes/default/server/src/views/errors/401.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-401";
-
-block form-header
- h1 Error 401
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You are not authorized to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You are not authorized to access this resource.
\ No newline at end of file
diff --git a/themes/default/server/src/views/errors/403.pug b/themes/default/server/src/views/errors/403.pug
deleted file mode 100644
index f4b5ca8a2..000000000
--- a/themes/default/server/src/views/errors/403.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-403";
-
-block form-header
- h1 Error 403
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You don't have enough privileges to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You don't have enough privileges to access this resource.
diff --git a/themes/default/server/src/views/errors/404.pug b/themes/default/server/src/views/errors/404.pug
deleted file mode 100644
index 06d6375fc..000000000
--- a/themes/default/server/src/views/errors/404.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-404";
-
-block form-header
- Error 404
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- p Page not found.
diff --git a/themes/default/server/src/views/firstfactor.pug b/themes/default/server/src/views/firstfactor.pug
deleted file mode 100644
index 046b8c4c1..000000000
--- a/themes/default/server/src/views/firstfactor.pug
+++ /dev/null
@@ -1,23 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "firstfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/user.png" alt="user profile")
- p Enter your credentials to sign in
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" id="username" placeholder="Username" required autofocus)
- input(type="password" class="form-control" id="password" placeholder="Password" required)
- button(id="signin" class="btn btn-lg btn-primary btn-block" type="submit") Sign in
- div(class="keep-me-logged-in pull-left")
- input(type="checkbox" id="keep_me_logged_in" name="keep_me_logged_in" value="true")
- label(for="keep_me_logged_in") Keep me logged in
- div(class="bottom-right-links pull-right")
- a(href=reset_password_request_endpoint, class="link forgot-password") Forgot password?
- span(class="clearfix")
diff --git a/themes/default/server/src/views/layout/layout.pug b/themes/default/server/src/views/layout/layout.pug
deleted file mode 100644
index 39d045042..000000000
--- a/themes/default/server/src/views/layout/layout.pug
+++ /dev/null
@@ -1,29 +0,0 @@
-block variables
-
-doctype html
-html
- head
- title Authelia - 2FA
- meta(name="viewport", content="width=device-width, initial-scale=1.0")
- meta(name="robots", content="noindex, nofollow, nosnippet, noarchive")
- meta(http-equiv="Content-Security-Policy", content="default-src 'self'; img-src 'self' data:;")
- link(rel="icon", href="/img/icon.png" type="image/png" sizes="32x32")
- link(rel="stylesheet", type="text/css", href="/css/authelia.css")
- if redirection_url
- meta(http-equiv="refresh" content="4;url=" + redirection_url)
- body
- canvas#canvas(width='400', height='300')
- div(class="container")
- div(class="row")
- div(class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3")
- div(class="account-wall " + page_classname)
- div(class="row header")
- block form-header
- div(class="row body")
- div(class="form col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2")
- block content
- div(class="row footer poweredby-block")
- div(class="poweredby col-xs-6 col-xs-offset-4 col-sm-6 col-sm-offset-4 col-md-6 col-md-offset-4")
- | Powered by Authelia
- block entrypoint
- script(src="/js/authelia.js", type="text/javascript")
diff --git a/themes/default/server/src/views/need-identity-validation.pug b/themes/default/server/src/views/need-identity-validation.pug
deleted file mode 100644
index 4cfd62717..000000000
--- a/themes/default/server/src/views/need-identity-validation.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "identity-validation";
-
-block form-header
- h1 Registration
-
-block content
- img(class="header-img" src="/img/mail.png" alt="mail")
- p A confirmation email has been sent to your mailbox.
- | Please open it and click on the link within 15 minutes to confirm the registration.
diff --git a/themes/default/server/src/views/password-reset-form.pug b/themes/default/server/src/views/password-reset-form.pug
deleted file mode 100644
index 07f0baa7b..000000000
--- a/themes/default/server/src/views/password-reset-form.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-form";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/password.png" alt="password")
- p Set your new password and confirm it.
- form(class="form-signin")
- div(class="form-inputs")
- input(class="form-control" type="password" name="password1" id="password1" placeholder="New password" required="required")
- input(class="form-control" type="password" name="password2" id="password2" placeholder="Password confirmation" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/default/server/src/views/password-reset-request.pug b/themes/default/server/src/views/password-reset-request.pug
deleted file mode 100644
index 21746af9e..000000000
--- a/themes/default/server/src/views/password-reset-request.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-request";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- div
- img(class="header-img" src="/img/password.png" alt="password")
- p After giving your username, you will receive an email to change your password.
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" name="username" id="username" placeholder="Your username" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/default/server/src/views/secondfactor.pug b/themes/default/server/src/views/secondfactor.pug
deleted file mode 100644
index 4df8ec257..000000000
--- a/themes/default/server/src/views/secondfactor.pug
+++ /dev/null
@@ -1,30 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "secondfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div
- div(class="notification")
- h3 Hi #{username}
- div(class="row")
- div(class="u2f-token")
- img(src="/img/pendrive.png", alt="security key")
- p
- | Please, touch your security key
- b Or
- | Get a one-time password
- form(class="form-signin totp")
- div(class="form-inputs")
- input(type="text" autocomplete="off" class="form-control" id="token" placeholder="Token" required autofocus)
- button(class="btn btn-lg btn-primary btn-block totp-button" type="submit") Sign in
- div(class="pull-right bottom-right-links")
- div Need to register?
- div
- a(href=u2f_identity_start_endpoint, class="link register-u2f", data-toggle="tooltip", title="A security key is required to register.") Security key
- | |
- a(href=totp_identity_start_endpoint, class="link register-totp") Google Authenticator
- span(class="clearfix")
\ No newline at end of file
diff --git a/themes/default/server/src/views/totp-register.pug b/themes/default/server/src/views/totp-register.pug
deleted file mode 100644
index 1b4d98354..000000000
--- a/themes/default/server/src/views/totp-register.pug
+++ /dev/null
@@ -1,25 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "totp-register";
-
-block form-header
- h1 One-time passwords
-
-block content
- p Open Google Authenticator and add this entry
- p(id="secret") #{ base32_secret }
- p or scan this barcode
- div(id="qrcode") #{ otpauth_url }
- p
- a(href=login_endpoint, id="login-button") Login
- div(class="need-google-authenticator")
- | Need Google Authenticator?
- div(class="store-badges")
- a(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
- img(alt='Get it on Google Play', src='/img/stores/googleplay-badge.svg', class="store-badge")
- a(href='https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8', target="_blank")
- img(alt='Get it on Apple Store' src='/img/stores/applestore-badge.svg' class="store-badge")
-
-block entrypoint
- script(src="/js/qrcode.min.js", type="text/javascript" )
diff --git a/themes/default/server/src/views/u2f-register.pug b/themes/default/server/src/views/u2f-register.pug
deleted file mode 100644
index 5e24bc707..000000000
--- a/themes/default/server/src/views/u2f-register.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "u2f-register";
-
-block form-header
- h1 Register your security key
-
-block content
- p Touch the token to register your security key.
- img(src="/img/pendrive.png" alt="pendrive")
\ No newline at end of file
diff --git a/themes/matrix/client/src/css/.directory b/themes/matrix/client/src/css/.directory
deleted file mode 100644
index 6e4b3f639..000000000
--- a/themes/matrix/client/src/css/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,56,41
-Version=3
-ViewMode=1
diff --git a/themes/matrix/client/src/css/00-bootstrap.min.css b/themes/matrix/client/src/css/00-bootstrap.min.css
deleted file mode 100644
index 7ff40a282..000000000
--- a/themes/matrix/client/src/css/00-bootstrap.min.css
+++ /dev/null
@@ -1,5770 +0,0 @@
-/*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html{
- font-family:sans-serif;
- -webkit-text-size-adjust:100%;
- -ms-text-size-adjust:100%
-}
-body{
- margin:0;
- height: 100%;
- width: 100%
-}
-article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{
- display:block
-}
-audio,canvas,progress,video{
- display:inline-block;
- vertical-align:baseline
-}
-audio:not([controls]){
- display:none;
- height:0
-}
-[hidden],template{
- display:none
-}
-a{
- background-color:transparent
-}
-a:active,a:hover{
- outline:0
-}
-abbr[title]{
- border-bottom:1px dotted
-}
-b,strong{
- font-weight:700
-}
-dfn{
- font-style:italic
-}
-h1{
- margin:.67em 0;
- font-size:2em
-}
-mark{
- color:#000;
- background:#ff0
-}
-small{
- font-size:80%
-}
-sub,sup{
- position:relative;
- font-size:75%;
- line-height:0;
- vertical-align:baseline
-}
-sup{
- top:-.5em
-}
-sub{
- bottom:-.25em
-}
-img{
- border:0
-}
-svg:not(:root){
- overflow:hidden
-}
-figure{
- margin:1em 40px
-}
-hr{
- height:0;
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box
-}
-pre{
- overflow:auto
-}
-code,kbd,pre,samp{
- font-family:monospace,monospace;
- font-size:1em
-}
-button,input,optgroup,select,textarea{
- margin:0;
- font:inherit;
- color:inherit
-}
-button{
- overflow:visible
-}
-button,select{
- text-transform:none
-}
-button,html input[type=button],input[type=reset],input[type=submit]{
- -webkit-appearance:button;
- cursor:pointer
-}
-button[disabled],html input[disabled]{
- cursor:default
-}
-button::-moz-focus-inner,input::-moz-focus-inner{
- padding:0;
- border:0
-}
-input{
- line-height:normal
-}
-input[type=checkbox],input[type=radio]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box;
- padding:0
-}
-input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{
- height:auto
-}
-input[type=search]{
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box;
- -webkit-appearance:textfield
-}
-input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{
- -webkit-appearance:none
-}
-fieldset{
- padding:.35em .625em .75em;
- margin:0 2px;
- border:1px solid silver
-}
-legend{
- padding:0;
- border:0
-}
-textarea{
- overflow:auto
-}
-optgroup{
- font-weight:700
-}
-table{
- border-spacing:0;
- border-collapse:collapse
-}
-td,th{
- padding:0
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print{
- *,:after,:before{
- color:#000!important;
- text-shadow:none!important;
- background:0 0!important;
- -webkit-box-shadow:none!important;
- box-shadow:none!important
- }
- a,a:visited{
- text-decoration:underline
- }
- a[href]:after{
- content:" (" attr(href) ")"
- }
- abbr[title]:after{
- content:" (" attr(title) ")"
- }
- a[href^="javascript:"]:after,a[href^="#"]:after{
- content:""
- }
- blockquote,pre{
- border:1px solid #999;
- page-break-inside:avoid
- }
- thead{
- display:table-header-group
- }
- img,tr{
- page-break-inside:avoid
- }
- img{
- max-width:100%!important
- }
- h2,h3,p{
- orphans:3;
- widows:3
- }
- h2,h3{
- page-break-after:avoid
- }
- .navbar{
- display:none
- }
- .btn>.caret,.dropup>.btn>.caret{
- border-top-color:#000!important
- }
- .label{
- border:1px solid #000
- }
- .table{
- border-collapse:collapse!important
- }
- .table td,.table th{
- background-color:#fff!important
- }
- .table-bordered td,.table-bordered th{
- border:1px solid #ddd!important
- }
-}
-@font-face{
- font-family:'Glyphicons Halflings';
- src:url(../fonts/glyphicons-halflings-regular.eot);
- src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')
-}
-.glyphicon{
- position:relative;
- top:1px;
- display:inline-block;
- font-family:'Glyphicons Halflings';
- font-style:normal;
- font-weight:400;
- line-height:1;
- -webkit-font-smoothing:antialiased;
- -moz-osx-font-smoothing:grayscale
-}
-.glyphicon-asterisk:before{
- content:"\002a"
-}
-.glyphicon-plus:before{
- content:"\002b"
-}
-.glyphicon-eur:before,.glyphicon-euro:before{
- content:"\20ac"
-}
-.glyphicon-minus:before{
- content:"\2212"
-}
-.glyphicon-cloud:before{
- content:"\2601"
-}
-.glyphicon-envelope:before{
- content:"\2709"
-}
-.glyphicon-pencil:before{
- content:"\270f"
-}
-.glyphicon-glass:before{
- content:"\e001"
-}
-.glyphicon-music:before{
- content:"\e002"
-}
-.glyphicon-search:before{
- content:"\e003"
-}
-.glyphicon-heart:before{
- content:"\e005"
-}
-.glyphicon-star:before{
- content:"\e006"
-}
-.glyphicon-star-empty:before{
- content:"\e007"
-}
-.glyphicon-user:before{
- content:"\e008"
-}
-.glyphicon-film:before{
- content:"\e009"
-}
-.glyphicon-th-large:before{
- content:"\e010"
-}
-.glyphicon-th:before{
- content:"\e011"
-}
-.glyphicon-th-list:before{
- content:"\e012"
-}
-.glyphicon-ok:before{
- content:"\e013"
-}
-.glyphicon-remove:before{
- content:"\e014"
-}
-.glyphicon-zoom-in:before{
- content:"\e015"
-}
-.glyphicon-zoom-out:before{
- content:"\e016"
-}
-.glyphicon-off:before{
- content:"\e017"
-}
-.glyphicon-signal:before{
- content:"\e018"
-}
-.glyphicon-cog:before{
- content:"\e019"
-}
-.glyphicon-trash:before{
- content:"\e020"
-}
-.glyphicon-home:before{
- content:"\e021"
-}
-.glyphicon-file:before{
- content:"\e022"
-}
-.glyphicon-time:before{
- content:"\e023"
-}
-.glyphicon-road:before{
- content:"\e024"
-}
-.glyphicon-download-alt:before{
- content:"\e025"
-}
-.glyphicon-download:before{
- content:"\e026"
-}
-.glyphicon-upload:before{
- content:"\e027"
-}
-.glyphicon-inbox:before{
- content:"\e028"
-}
-.glyphicon-play-circle:before{
- content:"\e029"
-}
-.glyphicon-repeat:before{
- content:"\e030"
-}
-.glyphicon-refresh:before{
- content:"\e031"
-}
-.glyphicon-list-alt:before{
- content:"\e032"
-}
-.glyphicon-lock:before{
- content:"\e033"
-}
-.glyphicon-flag:before{
- content:"\e034"
-}
-.glyphicon-headphones:before{
- content:"\e035"
-}
-.glyphicon-volume-off:before{
- content:"\e036"
-}
-.glyphicon-volume-down:before{
- content:"\e037"
-}
-.glyphicon-volume-up:before{
- content:"\e038"
-}
-.glyphicon-qrcode:before{
- content:"\e039"
-}
-.glyphicon-barcode:before{
- content:"\e040"
-}
-.glyphicon-tag:before{
- content:"\e041"
-}
-.glyphicon-tags:before{
- content:"\e042"
-}
-.glyphicon-book:before{
- content:"\e043"
-}
-.glyphicon-bookmark:before{
- content:"\e044"
-}
-.glyphicon-print:before{
- content:"\e045"
-}
-.glyphicon-camera:before{
- content:"\e046"
-}
-.glyphicon-font:before{
- content:"\e047"
-}
-.glyphicon-bold:before{
- content:"\e048"
-}
-.glyphicon-italic:before{
- content:"\e049"
-}
-.glyphicon-text-height:before{
- content:"\e050"
-}
-.glyphicon-text-width:before{
- content:"\e051"
-}
-.glyphicon-align-left:before{
- content:"\e052"
-}
-.glyphicon-align-center:before{
- content:"\e053"
-}
-.glyphicon-align-right:before{
- content:"\e054"
-}
-.glyphicon-align-justify:before{
- content:"\e055"
-}
-.glyphicon-list:before{
- content:"\e056"
-}
-.glyphicon-indent-left:before{
- content:"\e057"
-}
-.glyphicon-indent-right:before{
- content:"\e058"
-}
-.glyphicon-facetime-video:before{
- content:"\e059"
-}
-.glyphicon-picture:before{
- content:"\e060"
-}
-.glyphicon-map-marker:before{
- content:"\e062"
-}
-.glyphicon-adjust:before{
- content:"\e063"
-}
-.glyphicon-tint:before{
- content:"\e064"
-}
-.glyphicon-edit:before{
- content:"\e065"
-}
-.glyphicon-share:before{
- content:"\e066"
-}
-.glyphicon-check:before{
- content:"\e067"
-}
-.glyphicon-move:before{
- content:"\e068"
-}
-.glyphicon-step-backward:before{
- content:"\e069"
-}
-.glyphicon-fast-backward:before{
- content:"\e070"
-}
-.glyphicon-backward:before{
- content:"\e071"
-}
-.glyphicon-play:before{
- content:"\e072"
-}
-.glyphicon-pause:before{
- content:"\e073"
-}
-.glyphicon-stop:before{
- content:"\e074"
-}
-.glyphicon-forward:before{
- content:"\e075"
-}
-.glyphicon-fast-forward:before{
- content:"\e076"
-}
-.glyphicon-step-forward:before{
- content:"\e077"
-}
-.glyphicon-eject:before{
- content:"\e078"
-}
-.glyphicon-chevron-left:before{
- content:"\e079"
-}
-.glyphicon-chevron-right:before{
- content:"\e080"
-}
-.glyphicon-plus-sign:before{
- content:"\e081"
-}
-.glyphicon-minus-sign:before{
- content:"\e082"
-}
-.glyphicon-remove-sign:before{
- content:"\e083"
-}
-.glyphicon-ok-sign:before{
- content:"\e084"
-}
-.glyphicon-question-sign:before{
- content:"\e085"
-}
-.glyphicon-info-sign:before{
- content:"\e086"
-}
-.glyphicon-screenshot:before{
- content:"\e087"
-}
-.glyphicon-remove-circle:before{
- content:"\e088"
-}
-.glyphicon-ok-circle:before{
- content:"\e089"
-}
-.glyphicon-ban-circle:before{
- content:"\e090"
-}
-.glyphicon-arrow-left:before{
- content:"\e091"
-}
-.glyphicon-arrow-right:before{
- content:"\e092"
-}
-.glyphicon-arrow-up:before{
- content:"\e093"
-}
-.glyphicon-arrow-down:before{
- content:"\e094"
-}
-.glyphicon-share-alt:before{
- content:"\e095"
-}
-.glyphicon-resize-full:before{
- content:"\e096"
-}
-.glyphicon-resize-small:before{
- content:"\e097"
-}
-.glyphicon-exclamation-sign:before{
- content:"\e101"
-}
-.glyphicon-gift:before{
- content:"\e102"
-}
-.glyphicon-leaf:before{
- content:"\e103"
-}
-.glyphicon-fire:before{
- content:"\e104"
-}
-.glyphicon-eye-open:before{
- content:"\e105"
-}
-.glyphicon-eye-close:before{
- content:"\e106"
-}
-.glyphicon-warning-sign:before{
- content:"\e107"
-}
-.glyphicon-plane:before{
- content:"\e108"
-}
-.glyphicon-calendar:before{
- content:"\e109"
-}
-.glyphicon-random:before{
- content:"\e110"
-}
-.glyphicon-comment:before{
- content:"\e111"
-}
-.glyphicon-magnet:before{
- content:"\e112"
-}
-.glyphicon-chevron-up:before{
- content:"\e113"
-}
-.glyphicon-chevron-down:before{
- content:"\e114"
-}
-.glyphicon-retweet:before{
- content:"\e115"
-}
-.glyphicon-shopping-cart:before{
- content:"\e116"
-}
-.glyphicon-folder-close:before{
- content:"\e117"
-}
-.glyphicon-folder-open:before{
- content:"\e118"
-}
-.glyphicon-resize-vertical:before{
- content:"\e119"
-}
-.glyphicon-resize-horizontal:before{
- content:"\e120"
-}
-.glyphicon-hdd:before{
- content:"\e121"
-}
-.glyphicon-bullhorn:before{
- content:"\e122"
-}
-.glyphicon-bell:before{
- content:"\e123"
-}
-.glyphicon-certificate:before{
- content:"\e124"
-}
-.glyphicon-thumbs-up:before{
- content:"\e125"
-}
-.glyphicon-thumbs-down:before{
- content:"\e126"
-}
-.glyphicon-hand-right:before{
- content:"\e127"
-}
-.glyphicon-hand-left:before{
- content:"\e128"
-}
-.glyphicon-hand-up:before{
- content:"\e129"
-}
-.glyphicon-hand-down:before{
- content:"\e130"
-}
-.glyphicon-circle-arrow-right:before{
- content:"\e131"
-}
-.glyphicon-circle-arrow-left:before{
- content:"\e132"
-}
-.glyphicon-circle-arrow-up:before{
- content:"\e133"
-}
-.glyphicon-circle-arrow-down:before{
- content:"\e134"
-}
-.glyphicon-globe:before{
- content:"\e135"
-}
-.glyphicon-wrench:before{
- content:"\e136"
-}
-.glyphicon-tasks:before{
- content:"\e137"
-}
-.glyphicon-filter:before{
- content:"\e138"
-}
-.glyphicon-briefcase:before{
- content:"\e139"
-}
-.glyphicon-fullscreen:before{
- content:"\e140"
-}
-.glyphicon-dashboard:before{
- content:"\e141"
-}
-.glyphicon-paperclip:before{
- content:"\e142"
-}
-.glyphicon-heart-empty:before{
- content:"\e143"
-}
-.glyphicon-link:before{
- content:"\e144"
-}
-.glyphicon-phone:before{
- content:"\e145"
-}
-.glyphicon-pushpin:before{
- content:"\e146"
-}
-.glyphicon-usd:before{
- content:"\e148"
-}
-.glyphicon-gbp:before{
- content:"\e149"
-}
-.glyphicon-sort:before{
- content:"\e150"
-}
-.glyphicon-sort-by-alphabet:before{
- content:"\e151"
-}
-.glyphicon-sort-by-alphabet-alt:before{
- content:"\e152"
-}
-.glyphicon-sort-by-order:before{
- content:"\e153"
-}
-.glyphicon-sort-by-order-alt:before{
- content:"\e154"
-}
-.glyphicon-sort-by-attributes:before{
- content:"\e155"
-}
-.glyphicon-sort-by-attributes-alt:before{
- content:"\e156"
-}
-.glyphicon-unchecked:before{
- content:"\e157"
-}
-.glyphicon-expand:before{
- content:"\e158"
-}
-.glyphicon-collapse-down:before{
- content:"\e159"
-}
-.glyphicon-collapse-up:before{
- content:"\e160"
-}
-.glyphicon-log-in:before{
- content:"\e161"
-}
-.glyphicon-flash:before{
- content:"\e162"
-}
-.glyphicon-log-out:before{
- content:"\e163"
-}
-.glyphicon-new-window:before{
- content:"\e164"
-}
-.glyphicon-record:before{
- content:"\e165"
-}
-.glyphicon-save:before{
- content:"\e166"
-}
-.glyphicon-open:before{
- content:"\e167"
-}
-.glyphicon-saved:before{
- content:"\e168"
-}
-.glyphicon-import:before{
- content:"\e169"
-}
-.glyphicon-export:before{
- content:"\e170"
-}
-.glyphicon-send:before{
- content:"\e171"
-}
-.glyphicon-floppy-disk:before{
- content:"\e172"
-}
-.glyphicon-floppy-saved:before{
- content:"\e173"
-}
-.glyphicon-floppy-remove:before{
- content:"\e174"
-}
-.glyphicon-floppy-save:before{
- content:"\e175"
-}
-.glyphicon-floppy-open:before{
- content:"\e176"
-}
-.glyphicon-credit-card:before{
- content:"\e177"
-}
-.glyphicon-transfer:before{
- content:"\e178"
-}
-.glyphicon-cutlery:before{
- content:"\e179"
-}
-.glyphicon-header:before{
- content:"\e180"
-}
-.glyphicon-compressed:before{
- content:"\e181"
-}
-.glyphicon-earphone:before{
- content:"\e182"
-}
-.glyphicon-phone-alt:before{
- content:"\e183"
-}
-.glyphicon-tower:before{
- content:"\e184"
-}
-.glyphicon-stats:before{
- content:"\e185"
-}
-.glyphicon-sd-video:before{
- content:"\e186"
-}
-.glyphicon-hd-video:before{
- content:"\e187"
-}
-.glyphicon-subtitles:before{
- content:"\e188"
-}
-.glyphicon-sound-stereo:before{
- content:"\e189"
-}
-.glyphicon-sound-dolby:before{
- content:"\e190"
-}
-.glyphicon-sound-5-1:before{
- content:"\e191"
-}
-.glyphicon-sound-6-1:before{
- content:"\e192"
-}
-.glyphicon-sound-7-1:before{
- content:"\e193"
-}
-.glyphicon-copyright-mark:before{
- content:"\e194"
-}
-.glyphicon-registration-mark:before{
- content:"\e195"
-}
-.glyphicon-cloud-download:before{
- content:"\e197"
-}
-.glyphicon-cloud-upload:before{
- content:"\e198"
-}
-.glyphicon-tree-conifer:before{
- content:"\e199"
-}
-.glyphicon-tree-deciduous:before{
- content:"\e200"
-}
-.glyphicon-cd:before{
- content:"\e201"
-}
-.glyphicon-save-file:before{
- content:"\e202"
-}
-.glyphicon-open-file:before{
- content:"\e203"
-}
-.glyphicon-level-up:before{
- content:"\e204"
-}
-.glyphicon-copy:before{
- content:"\e205"
-}
-.glyphicon-paste:before{
- content:"\e206"
-}
-.glyphicon-alert:before{
- content:"\e209"
-}
-.glyphicon-equalizer:before{
- content:"\e210"
-}
-.glyphicon-king:before{
- content:"\e211"
-}
-.glyphicon-queen:before{
- content:"\e212"
-}
-.glyphicon-pawn:before{
- content:"\e213"
-}
-.glyphicon-bishop:before{
- content:"\e214"
-}
-.glyphicon-knight:before{
- content:"\e215"
-}
-.glyphicon-baby-formula:before{
- content:"\e216"
-}
-.glyphicon-tent:before{
- content:"\26fa"
-}
-.glyphicon-blackboard:before{
- content:"\e218"
-}
-.glyphicon-bed:before{
- content:"\e219"
-}
-.glyphicon-apple:before{
- content:"\f8ff"
-}
-.glyphicon-erase:before{
- content:"\e221"
-}
-.glyphicon-hourglass:before{
- content:"\231b"
-}
-.glyphicon-lamp:before{
- content:"\e223"
-}
-.glyphicon-duplicate:before{
- content:"\e224"
-}
-.glyphicon-piggy-bank:before{
- content:"\e225"
-}
-.glyphicon-scissors:before{
- content:"\e226"
-}
-.glyphicon-bitcoin:before{
- content:"\e227"
-}
-.glyphicon-btc:before{
- content:"\e227"
-}
-.glyphicon-xbt:before{
- content:"\e227"
-}
-.glyphicon-yen:before{
- content:"\00a5"
-}
-.glyphicon-jpy:before{
- content:"\00a5"
-}
-.glyphicon-ruble:before{
- content:"\20bd"
-}
-.glyphicon-rub:before{
- content:"\20bd"
-}
-.glyphicon-scale:before{
- content:"\e230"
-}
-.glyphicon-ice-lolly:before{
- content:"\e231"
-}
-.glyphicon-ice-lolly-tasted:before{
- content:"\e232"
-}
-.glyphicon-education:before{
- content:"\e233"
-}
-.glyphicon-option-horizontal:before{
- content:"\e234"
-}
-.glyphicon-option-vertical:before{
- content:"\e235"
-}
-.glyphicon-menu-hamburger:before{
- content:"\e236"
-}
-.glyphicon-modal-window:before{
- content:"\e237"
-}
-.glyphicon-oil:before{
- content:"\e238"
-}
-.glyphicon-grain:before{
- content:"\e239"
-}
-.glyphicon-sunglasses:before{
- content:"\e240"
-}
-.glyphicon-text-size:before{
- content:"\e241"
-}
-.glyphicon-text-color:before{
- content:"\e242"
-}
-.glyphicon-text-background:before{
- content:"\e243"
-}
-.glyphicon-object-align-top:before{
- content:"\e244"
-}
-.glyphicon-object-align-bottom:before{
- content:"\e245"
-}
-.glyphicon-object-align-horizontal:before{
- content:"\e246"
-}
-.glyphicon-object-align-left:before{
- content:"\e247"
-}
-.glyphicon-object-align-vertical:before{
- content:"\e248"
-}
-.glyphicon-object-align-right:before{
- content:"\e249"
-}
-.glyphicon-triangle-right:before{
- content:"\e250"
-}
-.glyphicon-triangle-left:before{
- content:"\e251"
-}
-.glyphicon-triangle-bottom:before{
- content:"\e252"
-}
-.glyphicon-triangle-top:before{
- content:"\e253"
-}
-.glyphicon-console:before{
- content:"\e254"
-}
-.glyphicon-superscript:before{
- content:"\e255"
-}
-.glyphicon-subscript:before{
- content:"\e256"
-}
-.glyphicon-menu-left:before{
- content:"\e257"
-}
-.glyphicon-menu-right:before{
- content:"\e258"
-}
-.glyphicon-menu-down:before{
- content:"\e259"
-}
-.glyphicon-menu-up:before{
- content:"\e260"
-}
-*{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-:after,:before{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-html{
- font-size:10px;
- -webkit-tap-highlight-color:rgba(0,0,0,0)
-}
-body{
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- line-height:1.42857143;
- color:#333;
- background-color:#fff
-}
-button,input,select,textarea{
- font-family:inherit;
- font-size:inherit;
- line-height:inherit
-}
-a{
- color:#337ab7;
- text-decoration:none
-}
-a:focus,a:hover{
- color:#23527c;
- text-decoration:underline
-}
-a:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-figure{
- margin:0
-}
-img{
- vertical-align:middle
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{
- display:block;
- max-width:100%;
- height:auto
-}
-.img-rounded{
- border-radius:6px
-}
-.img-thumbnail{
- display:inline-block;
- max-width:100%;
- height:auto;
- padding:4px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:all .2s ease-in-out;
- -o-transition:all .2s ease-in-out;
- transition:all .2s ease-in-out
-}
-.img-circle{
- border-radius:50%
-}
-hr{
- margin-top:20px;
- margin-bottom:20px;
- border:0;
- border-top:1px solid #eee
-}
-.sr-only{
- position:absolute;
- width:1px;
- height:1px;
- padding:0;
- margin:-1px;
- overflow:hidden;
- clip:rect(0,0,0,0);
- border:0
-}
-.sr-only-focusable:active,.sr-only-focusable:focus{
- position:static;
- width:auto;
- height:auto;
- margin:0;
- overflow:visible;
- clip:auto
-}
-[role=button]{
- cursor:pointer
-}
-.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{
- font-family:inherit;
- font-weight:500;
- line-height:1.1;
- color:inherit
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-weight:400;
- line-height:1;
- color:#777
-}
-.h1,.h2,.h3,h1,h2,h3{
- margin-top:20px;
- margin-bottom:10px
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{
- font-size:65%
-}
-.h4,.h5,.h6,h4,h5,h6{
- margin-top:10px;
- margin-bottom:10px
-}
-.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-size:75%
-}
-.h1,h1{
- font-size:36px
-}
-.h2,h2{
- font-size:30px
-}
-.h3,h3{
- font-size:24px
-}
-.h4,h4{
- font-size:18px
-}
-.h5,h5{
- font-size:14px
-}
-.h6,h6{
- font-size:12px
-}
-p{
- margin:0 0 10px
-}
-.lead{
- margin-bottom:20px;
- font-size:16px;
- font-weight:300;
- line-height:1.4
-}
-@media (min-width:768px){
- .lead{
- font-size:21px
- }
-}
-.small,small{
- font-size:85%
-}
-.mark,mark{
- padding:.2em;
- background-color:#fcf8e3
-}
-.text-left{
- text-align:left
-}
-.text-right{
- text-align:right
-}
-.text-center{
- text-align:center
-}
-.text-justify{
- text-align:justify
-}
-.text-nowrap{
- white-space:nowrap
-}
-.text-lowercase{
- text-transform:lowercase
-}
-.text-uppercase{
- text-transform:uppercase
-}
-.text-capitalize{
- text-transform:capitalize
-}
-.text-muted{
- color:#777
-}
-.text-primary{
- color:#337ab7
-}
-a.text-primary:focus,a.text-primary:hover{
- color:#286090
-}
-.text-success{
- color:#3c763d
-}
-a.text-success:focus,a.text-success:hover{
- color:#2b542c
-}
-.text-info{
- color:#31708f
-}
-a.text-info:focus,a.text-info:hover{
- color:#245269
-}
-.text-warning{
- color:#8a6d3b
-}
-a.text-warning:focus,a.text-warning:hover{
- color:#66512c
-}
-.text-danger{
- color:#a94442
-}
-a.text-danger:focus,a.text-danger:hover{
- color:#843534
-}
-.bg-primary{
- color:#fff;
- background-color:#337ab7
-}
-a.bg-primary:focus,a.bg-primary:hover{
- background-color:#286090
-}
-.bg-success{
- background-color:#dff0d8
-}
-a.bg-success:focus,a.bg-success:hover{
- background-color:#c1e2b3
-}
-.bg-info{
- background-color:#d9edf7
-}
-a.bg-info:focus,a.bg-info:hover{
- background-color:#afd9ee
-}
-.bg-warning{
- background-color:#fcf8e3
-}
-a.bg-warning:focus,a.bg-warning:hover{
- background-color:#f7ecb5
-}
-.bg-danger{
- background-color:#f2dede
-}
-a.bg-danger:focus,a.bg-danger:hover{
- background-color:#e4b9b9
-}
-.page-header{
- padding-bottom:9px;
- margin:40px 0 20px;
- border-bottom:1px solid #eee
-}
-ol,ul{
- margin-top:0;
- margin-bottom:10px
-}
-ol ol,ol ul,ul ol,ul ul{
- margin-bottom:0
-}
-.list-unstyled{
- padding-left:0;
- list-style:none
-}
-.list-inline{
- padding-left:0;
- margin-left:-5px;
- list-style:none
-}
-.list-inline>li{
- display:inline-block;
- padding-right:5px;
- padding-left:5px
-}
-dl{
- margin-top:0;
- margin-bottom:20px
-}
-dd,dt{
- line-height:1.42857143
-}
-dt{
- font-weight:700
-}
-dd{
- margin-left:0
-}
-@media (min-width:768px){
- .dl-horizontal dt{
- float:left;
- width:160px;
- overflow:hidden;
- clear:left;
- text-align:right;
- text-overflow:ellipsis;
- white-space:nowrap
- }
- .dl-horizontal dd{
- margin-left:180px
- }
-}
-abbr[data-original-title],abbr[title]{
- cursor:help;
- border-bottom:1px dotted #777
-}
-.initialism{
- font-size:90%;
- text-transform:uppercase
-}
-blockquote{
- padding:10px 20px;
- margin:0 0 20px;
- font-size:17.5px;
- border-left:5px solid #eee
-}
-blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{
- margin-bottom:0
-}
-blockquote .small,blockquote footer,blockquote small{
- display:block;
- font-size:80%;
- line-height:1.42857143;
- color:#777
-}
-blockquote .small:before,blockquote footer:before,blockquote small:before{
- content:'\2014 \00A0'
-}
-.blockquote-reverse,blockquote.pull-right{
- padding-right:15px;
- padding-left:0;
- text-align:right;
- border-right:5px solid #eee;
- border-left:0
-}
-.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{
- content:''
-}
-.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{
- content:'\00A0 \2014'
-}
-address{
- margin-bottom:20px;
- font-style:normal;
- line-height:1.42857143
-}
-code,kbd,pre,samp{
- font-family:Menlo,Monaco,Consolas,"Courier New",monospace
-}
-code{
- padding:2px 4px;
- font-size:90%;
- color:#c7254e;
- background-color:#f9f2f4;
- border-radius:4px
-}
-kbd{
- padding:2px 4px;
- font-size:90%;
- color:#fff;
- background-color:#333;
- border-radius:3px;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)
-}
-kbd kbd{
- padding:0;
- font-size:100%;
- font-weight:700;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-pre{
- display:block;
- padding:9.5px;
- margin:0 0 10px;
- font-size:13px;
- line-height:1.42857143;
- color:#333;
- word-break:break-all;
- word-wrap:break-word;
- background-color:#f5f5f5;
- border:1px solid #ccc;
- border-radius:4px
-}
-pre code{
- padding:0;
- font-size:inherit;
- color:inherit;
- white-space:pre-wrap;
- background-color:transparent;
- border-radius:0
-}
-.pre-scrollable{
- max-height:340px;
- overflow-y:scroll
-}
-.container{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-@media (min-width:768px){
- .container{
- width:750px
- }
-}
-@media (min-width:992px){
- .container{
- width:970px
- }
-}
-@media (min-width:1200px){
- .container{
- width:1170px
- }
-}
-.container-fluid{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-.row{
- margin-right:-15px;
- margin-left:-15px
-}
-.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- position:relative;
- min-height:1px;
- padding-right:15px;
- padding-left:15px
-}
-.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- float:left
-}
-.col-xs-12{
- width:100%
-}
-.col-xs-11{
- width:91.66666667%
-}
-.col-xs-10{
- width:83.33333333%
-}
-.col-xs-9{
- width:75%
-}
-.col-xs-8{
- width:66.66666667%
-}
-.col-xs-7{
- width:58.33333333%
-}
-.col-xs-6{
- width:50%
-}
-.col-xs-5{
- width:41.66666667%
-}
-.col-xs-4{
- width:33.33333333%
-}
-.col-xs-3{
- width:25%
-}
-.col-xs-2{
- width:16.66666667%
-}
-.col-xs-1{
- width:8.33333333%
-}
-.col-xs-pull-12{
- right:100%
-}
-.col-xs-pull-11{
- right:91.66666667%
-}
-.col-xs-pull-10{
- right:83.33333333%
-}
-.col-xs-pull-9{
- right:75%
-}
-.col-xs-pull-8{
- right:66.66666667%
-}
-.col-xs-pull-7{
- right:58.33333333%
-}
-.col-xs-pull-6{
- right:50%
-}
-.col-xs-pull-5{
- right:41.66666667%
-}
-.col-xs-pull-4{
- right:33.33333333%
-}
-.col-xs-pull-3{
- right:25%
-}
-.col-xs-pull-2{
- right:16.66666667%
-}
-.col-xs-pull-1{
- right:8.33333333%
-}
-.col-xs-pull-0{
- right:auto
-}
-.col-xs-push-12{
- left:100%
-}
-.col-xs-push-11{
- left:91.66666667%
-}
-.col-xs-push-10{
- left:83.33333333%
-}
-.col-xs-push-9{
- left:75%
-}
-.col-xs-push-8{
- left:66.66666667%
-}
-.col-xs-push-7{
- left:58.33333333%
-}
-.col-xs-push-6{
- left:50%
-}
-.col-xs-push-5{
- left:41.66666667%
-}
-.col-xs-push-4{
- left:33.33333333%
-}
-.col-xs-push-3{
- left:25%
-}
-.col-xs-push-2{
- left:16.66666667%
-}
-.col-xs-push-1{
- left:8.33333333%
-}
-.col-xs-push-0{
- left:auto
-}
-.col-xs-offset-12{
- margin-left:100%
-}
-.col-xs-offset-11{
- margin-left:91.66666667%
-}
-.col-xs-offset-10{
- margin-left:83.33333333%
-}
-.col-xs-offset-9{
- margin-left:75%
-}
-.col-xs-offset-8{
- margin-left:66.66666667%
-}
-.col-xs-offset-7{
- margin-left:58.33333333%
-}
-.col-xs-offset-6{
- margin-left:50%
-}
-.col-xs-offset-5{
- margin-left:41.66666667%
-}
-.col-xs-offset-4{
- margin-left:33.33333333%
-}
-.col-xs-offset-3{
- margin-left:25%
-}
-.col-xs-offset-2{
- margin-left:16.66666667%
-}
-.col-xs-offset-1{
- margin-left:8.33333333%
-}
-.col-xs-offset-0{
- margin-left:0
-}
-@media (min-width:768px){
- .col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{
- float:left
- }
- .col-sm-12{
- width:100%
- }
- .col-sm-11{
- width:91.66666667%
- }
- .col-sm-10{
- width:83.33333333%
- }
- .col-sm-9{
- width:75%
- }
- .col-sm-8{
- width:66.66666667%
- }
- .col-sm-7{
- width:58.33333333%
- }
- .col-sm-6{
- width:50%
- }
- .col-sm-5{
- width:41.66666667%
- }
- .col-sm-4{
- width:33.33333333%
- }
- .col-sm-3{
- width:25%
- }
- .col-sm-2{
- width:16.66666667%
- }
- .col-sm-1{
- width:8.33333333%
- }
- .col-sm-pull-12{
- right:100%
- }
- .col-sm-pull-11{
- right:91.66666667%
- }
- .col-sm-pull-10{
- right:83.33333333%
- }
- .col-sm-pull-9{
- right:75%
- }
- .col-sm-pull-8{
- right:66.66666667%
- }
- .col-sm-pull-7{
- right:58.33333333%
- }
- .col-sm-pull-6{
- right:50%
- }
- .col-sm-pull-5{
- right:41.66666667%
- }
- .col-sm-pull-4{
- right:33.33333333%
- }
- .col-sm-pull-3{
- right:25%
- }
- .col-sm-pull-2{
- right:16.66666667%
- }
- .col-sm-pull-1{
- right:8.33333333%
- }
- .col-sm-pull-0{
- right:auto
- }
- .col-sm-push-12{
- left:100%
- }
- .col-sm-push-11{
- left:91.66666667%
- }
- .col-sm-push-10{
- left:83.33333333%
- }
- .col-sm-push-9{
- left:75%
- }
- .col-sm-push-8{
- left:66.66666667%
- }
- .col-sm-push-7{
- left:58.33333333%
- }
- .col-sm-push-6{
- left:50%
- }
- .col-sm-push-5{
- left:41.66666667%
- }
- .col-sm-push-4{
- left:33.33333333%
- }
- .col-sm-push-3{
- left:25%
- }
- .col-sm-push-2{
- left:16.66666667%
- }
- .col-sm-push-1{
- left:8.33333333%
- }
- .col-sm-push-0{
- left:auto
- }
- .col-sm-offset-12{
- margin-left:100%
- }
- .col-sm-offset-11{
- margin-left:91.66666667%
- }
- .col-sm-offset-10{
- margin-left:83.33333333%
- }
- .col-sm-offset-9{
- margin-left:75%
- }
- .col-sm-offset-8{
- margin-left:66.66666667%
- }
- .col-sm-offset-7{
- margin-left:58.33333333%
- }
- .col-sm-offset-6{
- margin-left:50%
- }
- .col-sm-offset-5{
- margin-left:41.66666667%
- }
- .col-sm-offset-4{
- margin-left:33.33333333%
- }
- .col-sm-offset-3{
- margin-left:25%
- }
- .col-sm-offset-2{
- margin-left:16.66666667%
- }
- .col-sm-offset-1{
- margin-left:8.33333333%
- }
- .col-sm-offset-0{
- margin-left:0
- }
-}
-@media (min-width:992px){
- .col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{
- float:left
- }
- .col-md-12{
- width:100%
- }
- .col-md-11{
- width:91.66666667%
- }
- .col-md-10{
- width:83.33333333%
- }
- .col-md-9{
- width:75%
- }
- .col-md-8{
- width:66.66666667%
- }
- .col-md-7{
- width:58.33333333%
- }
- .col-md-6{
- width:50%
- }
- .col-md-5{
- width:41.66666667%
- }
- .col-md-4{
- width:33.33333333%
- }
- .col-md-3{
- width:25%
- }
- .col-md-2{
- width:16.66666667%
- }
- .col-md-1{
- width:8.33333333%
- }
- .col-md-pull-12{
- right:100%
- }
- .col-md-pull-11{
- right:91.66666667%
- }
- .col-md-pull-10{
- right:83.33333333%
- }
- .col-md-pull-9{
- right:75%
- }
- .col-md-pull-8{
- right:66.66666667%
- }
- .col-md-pull-7{
- right:58.33333333%
- }
- .col-md-pull-6{
- right:50%
- }
- .col-md-pull-5{
- right:41.66666667%
- }
- .col-md-pull-4{
- right:33.33333333%
- }
- .col-md-pull-3{
- right:25%
- }
- .col-md-pull-2{
- right:16.66666667%
- }
- .col-md-pull-1{
- right:8.33333333%
- }
- .col-md-pull-0{
- right:auto
- }
- .col-md-push-12{
- left:100%
- }
- .col-md-push-11{
- left:91.66666667%
- }
- .col-md-push-10{
- left:83.33333333%
- }
- .col-md-push-9{
- left:75%
- }
- .col-md-push-8{
- left:66.66666667%
- }
- .col-md-push-7{
- left:58.33333333%
- }
- .col-md-push-6{
- left:50%
- }
- .col-md-push-5{
- left:41.66666667%
- }
- .col-md-push-4{
- left:33.33333333%
- }
- .col-md-push-3{
- left:25%
- }
- .col-md-push-2{
- left:16.66666667%
- }
- .col-md-push-1{
- left:8.33333333%
- }
- .col-md-push-0{
- left:auto
- }
- .col-md-offset-12{
- margin-left:100%
- }
- .col-md-offset-11{
- margin-left:91.66666667%
- }
- .col-md-offset-10{
- margin-left:83.33333333%
- }
- .col-md-offset-9{
- margin-left:75%
- }
- .col-md-offset-8{
- margin-left:66.66666667%
- }
- .col-md-offset-7{
- margin-left:58.33333333%
- }
- .col-md-offset-6{
- margin-left:50%
- }
- .col-md-offset-5{
- margin-left:41.66666667%
- }
- .col-md-offset-4{
- margin-left:33.33333333%
- }
- .col-md-offset-3{
- margin-left:25%
- }
- .col-md-offset-2{
- margin-left:16.66666667%
- }
- .col-md-offset-1{
- margin-left:8.33333333%
- }
- .col-md-offset-0{
- margin-left:0
- }
-}
-@media (min-width:1200px){
- .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{
- float:left
- }
- .col-lg-12{
- width:100%
- }
- .col-lg-11{
- width:91.66666667%
- }
- .col-lg-10{
- width:83.33333333%
- }
- .col-lg-9{
- width:75%
- }
- .col-lg-8{
- width:66.66666667%
- }
- .col-lg-7{
- width:58.33333333%
- }
- .col-lg-6{
- width:50%
- }
- .col-lg-5{
- width:41.66666667%
- }
- .col-lg-4{
- width:33.33333333%
- }
- .col-lg-3{
- width:25%
- }
- .col-lg-2{
- width:16.66666667%
- }
- .col-lg-1{
- width:8.33333333%
- }
- .col-lg-pull-12{
- right:100%
- }
- .col-lg-pull-11{
- right:91.66666667%
- }
- .col-lg-pull-10{
- right:83.33333333%
- }
- .col-lg-pull-9{
- right:75%
- }
- .col-lg-pull-8{
- right:66.66666667%
- }
- .col-lg-pull-7{
- right:58.33333333%
- }
- .col-lg-pull-6{
- right:50%
- }
- .col-lg-pull-5{
- right:41.66666667%
- }
- .col-lg-pull-4{
- right:33.33333333%
- }
- .col-lg-pull-3{
- right:25%
- }
- .col-lg-pull-2{
- right:16.66666667%
- }
- .col-lg-pull-1{
- right:8.33333333%
- }
- .col-lg-pull-0{
- right:auto
- }
- .col-lg-push-12{
- left:100%
- }
- .col-lg-push-11{
- left:91.66666667%
- }
- .col-lg-push-10{
- left:83.33333333%
- }
- .col-lg-push-9{
- left:75%
- }
- .col-lg-push-8{
- left:66.66666667%
- }
- .col-lg-push-7{
- left:58.33333333%
- }
- .col-lg-push-6{
- left:50%
- }
- .col-lg-push-5{
- left:41.66666667%
- }
- .col-lg-push-4{
- left:33.33333333%
- }
- .col-lg-push-3{
- left:25%
- }
- .col-lg-push-2{
- left:16.66666667%
- }
- .col-lg-push-1{
- left:8.33333333%
- }
- .col-lg-push-0{
- left:auto
- }
- .col-lg-offset-12{
- margin-left:100%
- }
- .col-lg-offset-11{
- margin-left:91.66666667%
- }
- .col-lg-offset-10{
- margin-left:83.33333333%
- }
- .col-lg-offset-9{
- margin-left:75%
- }
- .col-lg-offset-8{
- margin-left:66.66666667%
- }
- .col-lg-offset-7{
- margin-left:58.33333333%
- }
- .col-lg-offset-6{
- margin-left:50%
- }
- .col-lg-offset-5{
- margin-left:41.66666667%
- }
- .col-lg-offset-4{
- margin-left:33.33333333%
- }
- .col-lg-offset-3{
- margin-left:25%
- }
- .col-lg-offset-2{
- margin-left:16.66666667%
- }
- .col-lg-offset-1{
- margin-left:8.33333333%
- }
- .col-lg-offset-0{
- margin-left:0
- }
-}
-table{
- background-color:transparent
-}
-caption{
- padding-top:8px;
- padding-bottom:8px;
- color:#777;
- text-align:left
-}
-th{
- text-align:left
-}
-.table{
- width:100%;
- max-width:100%;
- margin-bottom:20px
-}
-.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{
- padding:8px;
- line-height:1.42857143;
- vertical-align:top;
- border-top:1px solid #ddd
-}
-.table>thead>tr>th{
- vertical-align:bottom;
- border-bottom:2px solid #ddd
-}
-.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{
- border-top:0
-}
-.table>tbody+tbody{
- border-top:2px solid #ddd
-}
-.table .table{
- background-color:#fff
-}
-.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{
- padding:5px
-}
-.table-bordered{
- border:1px solid #ddd
-}
-.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border:1px solid #ddd
-}
-.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border-bottom-width:2px
-}
-.table-striped>tbody>tr:nth-of-type(odd){
- background-color:#f9f9f9
-}
-.table-hover>tbody>tr:hover{
- background-color:#f5f5f5
-}
-table col[class*=col-]{
- position:static;
- display:table-column;
- float:none
-}
-table td[class*=col-],table th[class*=col-]{
- position:static;
- display:table-cell;
- float:none
-}
-.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{
- background-color:#f5f5f5
-}
-.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{
- background-color:#e8e8e8
-}
-.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{
- background-color:#dff0d8
-}
-.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{
- background-color:#d0e9c6
-}
-.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{
- background-color:#d9edf7
-}
-.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{
- background-color:#c4e3f3
-}
-.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{
- background-color:#fcf8e3
-}
-.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{
- background-color:#faf2cc
-}
-.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{
- background-color:#f2dede
-}
-.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{
- background-color:#ebcccc
-}
-.table-responsive{
- min-height:.01%;
- overflow-x:auto
-}
-@media screen and (max-width:767px){
- .table-responsive{
- width:100%;
- margin-bottom:15px;
- overflow-y:hidden;
- -ms-overflow-style:-ms-autohiding-scrollbar;
- border:1px solid #ddd
- }
- .table-responsive>.table{
- margin-bottom:0
- }
- .table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{
- white-space:nowrap
- }
- .table-responsive>.table-bordered{
- border:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
- }
- .table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
- }
-}
-fieldset{
- min-width:0;
- padding:0;
- margin:0;
- border:0
-}
-legend{
- display:block;
- width:100%;
- padding:0;
- margin-bottom:20px;
- font-size:21px;
- line-height:inherit;
- color:#333;
- border:0;
- border-bottom:1px solid #e5e5e5
-}
-label{
- display:inline-block;
- max-width:100%;
- margin-bottom:5px;
- font-weight:700
-}
-input[type=search]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-input[type=checkbox],input[type=radio]{
- margin:4px 0 0;
- margin-top:1px\9;
- line-height:normal
-}
-input[type=file]{
- display:block
-}
-input[type=range]{
- display:block;
- width:100%
-}
-select[multiple],select[size]{
- height:auto
-}
-input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-output{
- display:block;
- padding-top:7px;
- font-size:14px;
- line-height:1.42857143;
- color:#555
-}
-.form-control{
- display:block;
- width:100%;
- height:34px;
- padding:6px 12px;
- font-size:14px;
- line-height:1.42857143;
- color:#555;
- background-color:#fff;
- background-image:none;
- border:1px solid #ccc;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- -webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
- -o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;
- transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s
-}
-.form-control:focus{
- border-color:#66afe9;
- outline:0;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)
-}
-.form-control::-moz-placeholder{
- color:#999;
- opacity:1
-}
-.form-control:-ms-input-placeholder{
- color:#999
-}
-.form-control::-webkit-input-placeholder{
- color:#999
-}
-.form-control::-ms-expand{
- background-color:transparent;
- border:0
-}
-.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{
- background-color:#eee;
- opacity:1
-}
-.form-control[disabled],fieldset[disabled] .form-control{
- cursor:not-allowed
-}
-textarea.form-control{
- height:auto
-}
-input[type=search]{
- -webkit-appearance:none
-}
-@media screen and (-webkit-min-device-pixel-ratio:0){
- input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{
- line-height:34px
- }
- .input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{
- line-height:30px
- }
- .input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{
- line-height:46px
- }
-}
-.form-group{
- margin-bottom:15px
-}
-.checkbox,.radio{
- position:relative;
- display:block;
- margin-top:10px;
- margin-bottom:10px
-}
-.checkbox label,.radio label{
- min-height:20px;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- cursor:pointer
-}
-.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{
- position:absolute;
- margin-top:4px\9;
- margin-left:-20px
-}
-.checkbox+.checkbox,.radio+.radio{
- margin-top:-5px
-}
-.checkbox-inline,.radio-inline{
- position:relative;
- display:inline-block;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- vertical-align:middle;
- cursor:pointer
-}
-.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{
- margin-top:0;
- margin-left:10px
-}
-fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{
- cursor:not-allowed
-}
-.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{
- cursor:not-allowed
-}
-.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{
- cursor:not-allowed
-}
-.form-control-static{
- min-height:34px;
- padding-top:7px;
- padding-bottom:7px;
- margin-bottom:0
-}
-.form-control-static.input-lg,.form-control-static.input-sm{
- padding-right:0;
- padding-left:0
-}
-.input-sm{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-sm{
- height:30px;
- line-height:30px
-}
-select[multiple].input-sm,textarea.input-sm{
- height:auto
-}
-.form-group-sm .form-control{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.form-group-sm select.form-control{
- height:30px;
- line-height:30px
-}
-.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{
- height:auto
-}
-.form-group-sm .form-control-static{
- height:30px;
- min-height:32px;
- padding:6px 10px;
- font-size:12px;
- line-height:1.5
-}
-.input-lg{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-lg{
- height:46px;
- line-height:46px
-}
-select[multiple].input-lg,textarea.input-lg{
- height:auto
-}
-.form-group-lg .form-control{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.form-group-lg select.form-control{
- height:46px;
- line-height:46px
-}
-.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{
- height:auto
-}
-.form-group-lg .form-control-static{
- height:46px;
- min-height:38px;
- padding:11px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.has-feedback{
- position:relative
-}
-.has-feedback .form-control{
- padding-right:42.5px
-}
-.form-control-feedback{
- position:absolute;
- top:0;
- right:0;
- z-index:2;
- display:block;
- width:34px;
- height:34px;
- line-height:34px;
- text-align:center;
- pointer-events:none
-}
-.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{
- width:46px;
- height:46px;
- line-height:46px
-}
-.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{
- width:30px;
- height:30px;
- line-height:30px
-}
-.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{
- color:#3c763d
-}
-.has-success .form-control{
- border-color:#3c763d;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-success .form-control:focus{
- border-color:#2b542c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168
-}
-.has-success .input-group-addon{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#3c763d
-}
-.has-success .form-control-feedback{
- color:#3c763d
-}
-.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{
- color:#8a6d3b
-}
-.has-warning .form-control{
- border-color:#8a6d3b;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-warning .form-control:focus{
- border-color:#66512c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b
-}
-.has-warning .input-group-addon{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#8a6d3b
-}
-.has-warning .form-control-feedback{
- color:#8a6d3b
-}
-.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{
- color:#a94442
-}
-.has-error .form-control{
- border-color:#a94442;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-error .form-control:focus{
- border-color:#843534;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483
-}
-.has-error .input-group-addon{
- color:#a94442;
- background-color:#f2dede;
- border-color:#a94442
-}
-.has-error .form-control-feedback{
- color:#a94442
-}
-.has-feedback label~.form-control-feedback{
- top:25px
-}
-.has-feedback label.sr-only~.form-control-feedback{
- top:0
-}
-.help-block{
- display:block;
- margin-top:5px;
- margin-bottom:10px;
- color:#737373
-}
-@media (min-width:768px){
- .form-inline .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .form-inline .form-control-static{
- display:inline-block
- }
- .form-inline .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{
- width:auto
- }
- .form-inline .input-group>.form-control{
- width:100%
- }
- .form-inline .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox,.form-inline .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox label,.form-inline .radio label{
- padding-left:0
- }
- .form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .form-inline .has-feedback .form-control-feedback{
- top:0
- }
-}
-.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{
- padding-top:7px;
- margin-top:0;
- margin-bottom:0
-}
-.form-horizontal .checkbox,.form-horizontal .radio{
- min-height:27px
-}
-.form-horizontal .form-group{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .form-horizontal .control-label{
- padding-top:7px;
- margin-bottom:0;
- text-align:right
- }
-}
-.form-horizontal .has-feedback .form-control-feedback{
- right:15px
-}
-@media (min-width:768px){
- .form-horizontal .form-group-lg .control-label{
- padding-top:11px;
- font-size:18px
- }
-}
-@media (min-width:768px){
- .form-horizontal .form-group-sm .control-label{
- padding-top:6px;
- font-size:12px
- }
-}
-.btn{
- display:inline-block;
- padding:6px 12px;
- margin-bottom:0;
- font-size:14px;
- font-weight:400;
- line-height:1.42857143;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- -ms-touch-action:manipulation;
- touch-action:manipulation;
- cursor:pointer;
- -webkit-user-select:none;
- -moz-user-select:none;
- -ms-user-select:none;
- user-select:none;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-.btn.focus,.btn:focus,.btn:hover{
- color:#333;
- text-decoration:none
-}
-.btn.active,.btn:active{
- background-image:none;
- outline:0;
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn.disabled,.btn[disabled],fieldset[disabled] .btn{
- cursor:not-allowed;
- filter:alpha(opacity=65);
- -webkit-box-shadow:none;
- box-shadow:none;
- opacity:.65
-}
-a.btn.disabled,fieldset[disabled] a.btn{
- pointer-events:none
-}
-.btn-default{
- color:#333;
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default.focus,.btn-default:focus{
- color:#333;
- background-color:#e6e6e6;
- border-color:#8c8c8c
-}
-.btn-default:hover{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{
- color:#333;
- background-color:#d4d4d4;
- border-color:#8c8c8c
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- background-image:none
-}
-.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default .badge{
- color:#fff;
- background-color:#333
-}
-.btn-primary{
- color:#fff;
- background-color:#03b703;
- border-color:#009100
-}
-.btn-primary.focus,.btn-primary:focus{
- color:#fff;
- background-color:#067906;
- border-color:#009100
-}
-.btn-primary:hover{
- color:#fff;
- background-color:#067906;
- border-color:#009100
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- color:#fff;
- background-color:#067906;
- border-color:#009100
-}
-.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{
- color:#fff;
- background-color:#067906;
- border-color:#009100
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- background-image:none
-}
-.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{
- background-color:#067906;
- border-color:#009100
-}
-.btn-primary .badge{
- color:#337ab7;
- background-color:#fff
-}
-.btn-success{
- color:#fff;
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success.focus,.btn-success:focus{
- color:#fff;
- background-color:#449d44;
- border-color:#255625
-}
-.btn-success:hover{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{
- color:#fff;
- background-color:#398439;
- border-color:#255625
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- background-image:none
-}
-.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success .badge{
- color:#5cb85c;
- background-color:#fff
-}
-.btn-info{
- color:#fff;
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info.focus,.btn-info:focus{
- color:#fff;
- background-color:#31b0d5;
- border-color:#1b6d85
-}
-.btn-info:hover{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{
- color:#fff;
- background-color:#269abc;
- border-color:#1b6d85
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- background-image:none
-}
-.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info .badge{
- color:#5bc0de;
- background-color:#fff
-}
-.btn-warning{
- color:#fff;
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning.focus,.btn-warning:focus{
- color:#fff;
- background-color:#ec971f;
- border-color:#985f0d
-}
-.btn-warning:hover{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{
- color:#fff;
- background-color:#d58512;
- border-color:#985f0d
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- background-image:none
-}
-.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning .badge{
- color:#f0ad4e;
- background-color:#fff
-}
-.btn-danger{
- color:#fff;
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger.focus,.btn-danger:focus{
- color:#fff;
- background-color:#c9302c;
- border-color:#761c19
-}
-.btn-danger:hover{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{
- color:#fff;
- background-color:#ac2925;
- border-color:#761c19
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- background-image:none
-}
-.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger .badge{
- color:#d9534f;
- background-color:#fff
-}
-.btn-link{
- font-weight:400;
- color:#337ab7;
- border-radius:0
-}
-.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{
- background-color:transparent;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{
- border-color:transparent
-}
-.btn-link:focus,.btn-link:hover{
- color:#23527c;
- text-decoration:underline;
- background-color:transparent
-}
-.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{
- color:#777;
- text-decoration:none
-}
-.btn-group-lg>.btn,.btn-lg{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.btn-group-sm>.btn,.btn-sm{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-group-xs>.btn,.btn-xs{
- padding:1px 5px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-block{
- display:block;
- width:100%
-}
-.btn-block+.btn-block{
- margin-top:5px
-}
-input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{
- width:100%
-}
-.fade{
- opacity:0;
- -webkit-transition:opacity .15s linear;
- -o-transition:opacity .15s linear;
- transition:opacity .15s linear
-}
-.fade.in{
- opacity:1
-}
-.collapse{
- display:none
-}
-.collapse.in{
- display:block
-}
-tr.collapse.in{
- display:table-row
-}
-tbody.collapse.in{
- display:table-row-group
-}
-.collapsing{
- position:relative;
- height:0;
- overflow:hidden;
- -webkit-transition-timing-function:ease;
- -o-transition-timing-function:ease;
- transition-timing-function:ease;
- -webkit-transition-duration:.35s;
- -o-transition-duration:.35s;
- transition-duration:.35s;
- -webkit-transition-property:height,visibility;
- -o-transition-property:height,visibility;
- transition-property:height,visibility
-}
-.caret{
- display:inline-block;
- width:0;
- height:0;
- margin-left:2px;
- vertical-align:middle;
- border-top:4px dashed;
- border-top:4px solid\9;
- border-right:4px solid transparent;
- border-left:4px solid transparent
-}
-.dropdown,.dropup{
- position:relative
-}
-.dropdown-toggle:focus{
- outline:0
-}
-.dropdown-menu{
- position:absolute;
- top:100%;
- left:0;
- z-index:1000;
- display:none;
- float:left;
- min-width:160px;
- padding:5px 0;
- margin:2px 0 0;
- font-size:14px;
- text-align:left;
- list-style:none;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.15);
- border-radius:4px;
- -webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);
- box-shadow:0 6px 12px rgba(0,0,0,.175)
-}
-.dropdown-menu.pull-right{
- right:0;
- left:auto
-}
-.dropdown-menu .divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.dropdown-menu>li>a{
- display:block;
- padding:3px 20px;
- clear:both;
- font-weight:400;
- line-height:1.42857143;
- color:#333;
- white-space:nowrap
-}
-.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{
- color:#262626;
- text-decoration:none;
- background-color:#f5f5f5
-}
-.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{
- color:#fff;
- text-decoration:none;
- background-color:#337ab7;
- outline:0
-}
-.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- color:#777
-}
-.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent;
- background-image:none;
- filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)
-}
-.open>.dropdown-menu{
- display:block
-}
-.open>a{
- outline:0
-}
-.dropdown-menu-right{
- right:0;
- left:auto
-}
-.dropdown-menu-left{
- right:auto;
- left:0
-}
-.dropdown-header{
- display:block;
- padding:3px 20px;
- font-size:12px;
- line-height:1.42857143;
- color:#777;
- white-space:nowrap
-}
-.dropdown-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:990
-}
-.pull-right>.dropdown-menu{
- right:0;
- left:auto
-}
-.dropup .caret,.navbar-fixed-bottom .dropdown .caret{
- content:"";
- border-top:0;
- border-bottom:4px dashed;
- border-bottom:4px solid\9
-}
-.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{
- top:auto;
- bottom:100%;
- margin-bottom:2px
-}
-@media (min-width:768px){
- .navbar-right .dropdown-menu{
- right:0;
- left:auto
- }
- .navbar-right .dropdown-menu-left{
- right:auto;
- left:0
- }
-}
-.btn-group,.btn-group-vertical{
- position:relative;
- display:inline-block;
- vertical-align:middle
-}
-.btn-group-vertical>.btn,.btn-group>.btn{
- position:relative;
- float:left
-}
-.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{
- z-index:2
-}
-.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{
- margin-left:-1px
-}
-.btn-toolbar{
- margin-left:-5px
-}
-.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{
- float:left
-}
-.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{
- margin-left:5px
-}
-.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){
- border-radius:0
-}
-.btn-group>.btn:first-child{
- margin-left:0
-}
-.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group>.btn-group{
- float:left
-}
-.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{
- outline:0
-}
-.btn-group>.btn+.dropdown-toggle{
- padding-right:8px;
- padding-left:8px
-}
-.btn-group>.btn-lg+.dropdown-toggle{
- padding-right:12px;
- padding-left:12px
-}
-.btn-group.open .dropdown-toggle{
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn-group.open .dropdown-toggle.btn-link{
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn .caret{
- margin-left:0
-}
-.btn-lg .caret{
- border-width:5px 5px 0;
- border-bottom-width:0
-}
-.dropup .btn-lg .caret{
- border-width:0 5px 5px
-}
-.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{
- display:block;
- float:none;
- width:100%;
- max-width:100%
-}
-.btn-group-vertical>.btn-group>.btn{
- float:none
-}
-.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{
- margin-top:-1px;
- margin-left:0
-}
-.btn-group-vertical>.btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.btn-group-vertical>.btn:first-child:not(:last-child){
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn:last-child:not(:first-child){
- border-top-left-radius:0;
- border-top-right-radius:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.btn-group-justified{
- display:table;
- width:100%;
- table-layout:fixed;
- border-collapse:separate
-}
-.btn-group-justified>.btn,.btn-group-justified>.btn-group{
- display:table-cell;
- float:none;
- width:1%
-}
-.btn-group-justified>.btn-group .btn{
- width:100%
-}
-.btn-group-justified>.btn-group .dropdown-menu{
- left:auto
-}
-[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{
- position:absolute;
- clip:rect(0,0,0,0);
- pointer-events:none
-}
-.input-group{
- position:relative;
- display:table;
- border-collapse:separate
-}
-.input-group[class*=col-]{
- float:none;
- padding-right:0;
- padding-left:0
-}
-.input-group .form-control{
- position:relative;
- z-index:2;
- float:left;
- width:100%;
- margin-bottom:0
-}
-.input-group .form-control:focus{
- z-index:3
-}
-.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{
- height:46px;
- line-height:46px
-}
-select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{
- height:auto
-}
-.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{
- height:30px;
- line-height:30px
-}
-select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{
- height:auto
-}
-.input-group .form-control,.input-group-addon,.input-group-btn{
- display:table-cell
-}
-.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.input-group-addon,.input-group-btn{
- width:1%;
- white-space:nowrap;
- vertical-align:middle
-}
-.input-group-addon{
- padding:6px 12px;
- font-size:14px;
- font-weight:400;
- line-height:1;
- color:#555;
- text-align:center;
- background-color:#eee;
- border:1px solid #ccc;
- border-radius:4px
-}
-.input-group-addon.input-sm{
- padding:5px 10px;
- font-size:12px;
- border-radius:3px
-}
-.input-group-addon.input-lg{
- padding:10px 16px;
- font-size:18px;
- border-radius:6px
-}
-.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{
- margin-top:0
-}
-.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.input-group-addon:first-child{
- border-right:0
-}
-.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.input-group-addon:last-child{
- border-left:0
-}
-.input-group-btn{
- position:relative;
- font-size:0;
- white-space:nowrap
-}
-.input-group-btn>.btn{
- position:relative
-}
-.input-group-btn>.btn+.btn{
- margin-left:-1px
-}
-.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{
- z-index:2
-}
-.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{
- margin-right:-1px
-}
-.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{
- z-index:2;
- margin-left:-1px
-}
-.nav{
- padding-left:0;
- margin-bottom:0;
- list-style:none
-}
-.nav>li{
- position:relative;
- display:block
-}
-.nav>li>a{
- position:relative;
- display:block;
- padding:10px 15px
-}
-.nav>li>a:focus,.nav>li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.nav>li.disabled>a{
- color:#777
-}
-.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{
- color:#777;
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent
-}
-.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{
- background-color:#eee;
- border-color:#337ab7
-}
-.nav .nav-divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.nav>li>a>img{
- max-width:none
-}
-.nav-tabs{
- border-bottom:1px solid #ddd
-}
-.nav-tabs>li{
- float:left;
- margin-bottom:-1px
-}
-.nav-tabs>li>a{
- margin-right:2px;
- line-height:1.42857143;
- border:1px solid transparent;
- border-radius:4px 4px 0 0
-}
-.nav-tabs>li>a:hover{
- border-color:#eee #eee #ddd
-}
-.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{
- color:#555;
- cursor:default;
- background-color:#fff;
- border:1px solid #ddd;
- border-bottom-color:transparent
-}
-.nav-tabs.nav-justified{
- width:100%;
- border-bottom:0
-}
-.nav-tabs.nav-justified>li{
- float:none
-}
-.nav-tabs.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-tabs.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-tabs.nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs.nav-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.nav-pills>li{
- float:left
-}
-.nav-pills>li>a{
- border-radius:4px
-}
-.nav-pills>li+li{
- margin-left:2px
-}
-.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{
- color:#fff;
- background-color:#337ab7
-}
-.nav-stacked>li{
- float:none
-}
-.nav-stacked>li+li{
- margin-top:2px;
- margin-left:0
-}
-.nav-justified{
- width:100%
-}
-.nav-justified>li{
- float:none
-}
-.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs-justified{
- border-bottom:0
-}
-.nav-tabs-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.tab-content>.tab-pane{
- display:none
-}
-.tab-content>.active{
- display:block
-}
-.nav-tabs .dropdown-menu{
- margin-top:-1px;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar{
- position:relative;
- min-height:50px;
- margin-bottom:20px;
- border:1px solid transparent
-}
-@media (min-width:768px){
- .navbar{
- border-radius:4px
- }
-}
-@media (min-width:768px){
- .navbar-header{
- float:left
- }
-}
-.navbar-collapse{
- padding-right:15px;
- padding-left:15px;
- overflow-x:visible;
- -webkit-overflow-scrolling:touch;
- border-top:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1)
-}
-.navbar-collapse.in{
- overflow-y:auto
-}
-@media (min-width:768px){
- .navbar-collapse{
- width:auto;
- border-top:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-collapse.collapse{
- display:block!important;
- height:auto!important;
- padding-bottom:0;
- overflow:visible!important
- }
- .navbar-collapse.in{
- overflow-y:visible
- }
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{
- padding-right:0;
- padding-left:0
- }
-}
-.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:340px
-}
-@media (max-device-width:480px) and (orientation:landscape){
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:200px
- }
-}
-.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:0;
- margin-left:0
- }
-}
-.navbar-static-top{
- z-index:1000;
- border-width:0 0 1px
-}
-@media (min-width:768px){
- .navbar-static-top{
- border-radius:0
- }
-}
-.navbar-fixed-bottom,.navbar-fixed-top{
- position:fixed;
- right:0;
- left:0;
- z-index:1030
-}
-@media (min-width:768px){
- .navbar-fixed-bottom,.navbar-fixed-top{
- border-radius:0
- }
-}
-.navbar-fixed-top{
- top:0;
- border-width:0 0 1px
-}
-.navbar-fixed-bottom{
- bottom:0;
- margin-bottom:0;
- border-width:1px 0 0
-}
-.navbar-brand{
- float:left;
- height:50px;
- padding:15px 15px;
- font-size:18px;
- line-height:20px
-}
-.navbar-brand:focus,.navbar-brand:hover{
- text-decoration:none
-}
-.navbar-brand>img{
- display:block
-}
-@media (min-width:768px){
- .navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{
- margin-left:-15px
- }
-}
-.navbar-toggle{
- position:relative;
- float:right;
- padding:9px 10px;
- margin-top:8px;
- margin-right:15px;
- margin-bottom:8px;
- background-color:transparent;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.navbar-toggle:focus{
- outline:0
-}
-.navbar-toggle .icon-bar{
- display:block;
- width:22px;
- height:2px;
- border-radius:1px
-}
-.navbar-toggle .icon-bar+.icon-bar{
- margin-top:4px
-}
-@media (min-width:768px){
- .navbar-toggle{
- display:none
- }
-}
-.navbar-nav{
- margin:7.5px -15px
-}
-.navbar-nav>li>a{
- padding-top:10px;
- padding-bottom:10px;
- line-height:20px
-}
-@media (max-width:767px){
- .navbar-nav .open .dropdown-menu{
- position:static;
- float:none;
- width:auto;
- margin-top:0;
- background-color:transparent;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{
- padding:5px 15px 5px 25px
- }
- .navbar-nav .open .dropdown-menu>li>a{
- line-height:20px
- }
- .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{
- background-image:none
- }
-}
-@media (min-width:768px){
- .navbar-nav{
- float:left;
- margin:0
- }
- .navbar-nav>li{
- float:left
- }
- .navbar-nav>li>a{
- padding-top:15px;
- padding-bottom:15px
- }
-}
-.navbar-form{
- padding:10px 15px;
- margin-top:8px;
- margin-right:-15px;
- margin-bottom:8px;
- margin-left:-15px;
- border-top:1px solid transparent;
- border-bottom:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)
-}
-@media (min-width:768px){
- .navbar-form .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .navbar-form .form-control-static{
- display:inline-block
- }
- .navbar-form .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{
- width:auto
- }
- .navbar-form .input-group>.form-control{
- width:100%
- }
- .navbar-form .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox,.navbar-form .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox label,.navbar-form .radio label{
- padding-left:0
- }
- .navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .navbar-form .has-feedback .form-control-feedback{
- top:0
- }
-}
-@media (max-width:767px){
- .navbar-form .form-group{
- margin-bottom:5px
- }
- .navbar-form .form-group:last-child{
- margin-bottom:0
- }
-}
-@media (min-width:768px){
- .navbar-form{
- width:auto;
- padding-top:0;
- padding-bottom:0;
- margin-right:0;
- margin-left:0;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
-}
-.navbar-nav>li>.dropdown-menu{
- margin-top:0;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{
- margin-bottom:0;
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.navbar-btn{
- margin-top:8px;
- margin-bottom:8px
-}
-.navbar-btn.btn-sm{
- margin-top:10px;
- margin-bottom:10px
-}
-.navbar-btn.btn-xs{
- margin-top:14px;
- margin-bottom:14px
-}
-.navbar-text{
- margin-top:15px;
- margin-bottom:15px
-}
-@media (min-width:768px){
- .navbar-text{
- float:left;
- margin-right:15px;
- margin-left:15px
- }
-}
-@media (min-width:768px){
- .navbar-left{
- float:left!important
- }
- .navbar-right{
- float:right!important;
- margin-right:-15px
- }
- .navbar-right~.navbar-right{
- margin-right:0
- }
-}
-.navbar-default{
- background-color:#f8f8f8;
- border-color:#e7e7e7
-}
-.navbar-default .navbar-brand{
- color:#777
-}
-.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{
- color:#5e5e5e;
- background-color:transparent
-}
-.navbar-default .navbar-text{
- color:#777
-}
-.navbar-default .navbar-nav>li>a{
- color:#777
-}
-.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{
- color:#333;
- background-color:transparent
-}
-.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
-}
-.navbar-default .navbar-toggle{
- border-color:#ddd
-}
-.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{
- background-color:#ddd
-}
-.navbar-default .navbar-toggle .icon-bar{
- background-color:#888
-}
-.navbar-default .navbar-collapse,.navbar-default .navbar-form{
- border-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-@media (max-width:767px){
- .navbar-default .navbar-nav .open .dropdown-menu>li>a{
- color:#777
- }
- .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#333;
- background-color:transparent
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
- }
-}
-.navbar-default .navbar-link{
- color:#777
-}
-.navbar-default .navbar-link:hover{
- color:#333
-}
-.navbar-default .btn-link{
- color:#777
-}
-.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{
- color:#333
-}
-.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{
- color:#ccc
-}
-.navbar-inverse{
- background-color:#222;
- border-color:#080808
-}
-.navbar-inverse .navbar-brand{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-text{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{
- color:#fff;
- background-color:#080808
-}
-.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{
- color:#444;
- background-color:transparent
-}
-.navbar-inverse .navbar-toggle{
- border-color:#333
-}
-.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{
- background-color:#333
-}
-.navbar-inverse .navbar-toggle .icon-bar{
- background-color:#fff
-}
-.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{
- border-color:#101010
-}
-.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{
- color:#fff;
- background-color:#080808
-}
-@media (max-width:767px){
- .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{
- border-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider{
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{
- color:#9d9d9d
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#fff;
- background-color:transparent
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#fff;
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#444;
- background-color:transparent
- }
-}
-.navbar-inverse .navbar-link{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link{
- color:#9d9d9d
-}
-.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{
- color:#444
-}
-.breadcrumb{
- padding:8px 15px;
- margin-bottom:20px;
- list-style:none;
- background-color:#f5f5f5;
- border-radius:4px
-}
-.breadcrumb>li{
- display:inline-block
-}
-.breadcrumb>li+li:before{
- padding:0 5px;
- color:#ccc;
- content:"/\00a0"
-}
-.breadcrumb>.active{
- color:#777
-}
-.pagination{
- display:inline-block;
- padding-left:0;
- margin:20px 0;
- border-radius:4px
-}
-.pagination>li{
- display:inline
-}
-.pagination>li>a,.pagination>li>span{
- position:relative;
- float:left;
- padding:6px 12px;
- margin-left:-1px;
- line-height:1.42857143;
- color:#337ab7;
- text-decoration:none;
- background-color:#fff;
- border:1px solid #ddd
-}
-.pagination>li:first-child>a,.pagination>li:first-child>span{
- margin-left:0;
- border-top-left-radius:4px;
- border-bottom-left-radius:4px
-}
-.pagination>li:last-child>a,.pagination>li:last-child>span{
- border-top-right-radius:4px;
- border-bottom-right-radius:4px
-}
-.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{
- z-index:2;
- color:#23527c;
- background-color:#eee;
- border-color:#ddd
-}
-.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{
- z-index:3;
- color:#fff;
- cursor:default;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#fff;
- border-color:#ddd
-}
-.pagination-lg>li>a,.pagination-lg>li>span{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{
- border-top-left-radius:6px;
- border-bottom-left-radius:6px
-}
-.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{
- border-top-right-radius:6px;
- border-bottom-right-radius:6px
-}
-.pagination-sm>li>a,.pagination-sm>li>span{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5
-}
-.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{
- border-top-left-radius:3px;
- border-bottom-left-radius:3px
-}
-.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{
- border-top-right-radius:3px;
- border-bottom-right-radius:3px
-}
-.pager{
- padding-left:0;
- margin:20px 0;
- text-align:center;
- list-style:none
-}
-.pager li{
- display:inline
-}
-.pager li>a,.pager li>span{
- display:inline-block;
- padding:5px 14px;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:15px
-}
-.pager li>a:focus,.pager li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.pager .next>a,.pager .next>span{
- float:right
-}
-.pager .previous>a,.pager .previous>span{
- float:left
-}
-.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{
- color:#777;
- cursor:not-allowed;
- background-color:#fff
-}
-.label{
- display:inline;
- padding:.2em .6em .3em;
- font-size:75%;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:baseline;
- border-radius:.25em
-}
-a.label:focus,a.label:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.label:empty{
- display:none
-}
-.btn .label{
- position:relative;
- top:-1px
-}
-.label-default{
- background-color:#777
-}
-.label-default[href]:focus,.label-default[href]:hover{
- background-color:#5e5e5e
-}
-.label-primary{
- background-color:#337ab7
-}
-.label-primary[href]:focus,.label-primary[href]:hover{
- background-color:#286090
-}
-.label-success{
- background-color:#5cb85c
-}
-.label-success[href]:focus,.label-success[href]:hover{
- background-color:#449d44
-}
-.label-info{
- background-color:#5bc0de
-}
-.label-info[href]:focus,.label-info[href]:hover{
- background-color:#31b0d5
-}
-.label-warning{
- background-color:#f0ad4e
-}
-.label-warning[href]:focus,.label-warning[href]:hover{
- background-color:#ec971f
-}
-.label-danger{
- background-color:#d9534f
-}
-.label-danger[href]:focus,.label-danger[href]:hover{
- background-color:#c9302c
-}
-.badge{
- display:inline-block;
- min-width:10px;
- padding:3px 7px;
- font-size:12px;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- background-color:#777;
- border-radius:10px
-}
-.badge:empty{
- display:none
-}
-.btn .badge{
- position:relative;
- top:-1px
-}
-.btn-group-xs>.btn .badge,.btn-xs .badge{
- top:0;
- padding:1px 5px
-}
-a.badge:focus,a.badge:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.list-group-item.active>.badge,.nav-pills>.active>a>.badge{
- color:#337ab7;
- background-color:#fff
-}
-.list-group-item>.badge{
- float:right
-}
-.list-group-item>.badge+.badge{
- margin-right:5px
-}
-.nav-pills>li>a>.badge{
- margin-left:3px
-}
-.jumbotron{
- padding-top:30px;
- padding-bottom:30px;
- margin-bottom:30px;
- color:inherit;
- background-color:#eee
-}
-.jumbotron .h1,.jumbotron h1{
- color:inherit
-}
-.jumbotron p{
- margin-bottom:15px;
- font-size:21px;
- font-weight:200
-}
-.jumbotron>hr{
- border-top-color:#d5d5d5
-}
-.container .jumbotron,.container-fluid .jumbotron{
- padding-right:15px;
- padding-left:15px;
- border-radius:6px
-}
-.jumbotron .container{
- max-width:100%
-}
-@media screen and (min-width:768px){
- .jumbotron{
- padding-top:48px;
- padding-bottom:48px
- }
- .container .jumbotron,.container-fluid .jumbotron{
- padding-right:60px;
- padding-left:60px
- }
- .jumbotron .h1,.jumbotron h1{
- font-size:63px
- }
-}
-.thumbnail{
- display:block;
- padding:4px;
- margin-bottom:20px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:border .2s ease-in-out;
- -o-transition:border .2s ease-in-out;
- transition:border .2s ease-in-out
-}
-.thumbnail a>img,.thumbnail>img{
- margin-right:auto;
- margin-left:auto
-}
-a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{
- border-color:#337ab7
-}
-.thumbnail .caption{
- padding:9px;
- color:#333
-}
-.alert{
- padding:15px;
- margin-bottom:20px;
- border:1px solid transparent;
- border-radius:4px
-}
-.alert h4{
- margin-top:0;
- color:inherit
-}
-.alert .alert-link{
- font-weight:700
-}
-.alert>p,.alert>ul{
- margin-bottom:0
-}
-.alert>p+p{
- margin-top:5px
-}
-.alert-dismissable,.alert-dismissible{
- padding-right:35px
-}
-.alert-dismissable .close,.alert-dismissible .close{
- position:relative;
- top:-2px;
- right:-21px;
- color:inherit
-}
-.alert-success{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.alert-success hr{
- border-top-color:#c9e2b3
-}
-.alert-success .alert-link{
- color:#2b542c
-}
-.alert-info{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.alert-info hr{
- border-top-color:#a6e1ec
-}
-.alert-info .alert-link{
- color:#245269
-}
-.alert-warning{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.alert-warning hr{
- border-top-color:#f7e1b5
-}
-.alert-warning .alert-link{
- color:#66512c
-}
-.alert-danger{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.alert-danger hr{
- border-top-color:#e4b9c0
-}
-.alert-danger .alert-link{
- color:#843534
-}
-@-webkit-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@-o-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-.progress{
- height:20px;
- margin-bottom:20px;
- overflow:hidden;
- background-color:#f5f5f5;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
- box-shadow:inset 0 1px 2px rgba(0,0,0,.1)
-}
-.progress-bar{
- float:left;
- width:0;
- height:100%;
- font-size:12px;
- line-height:20px;
- color:#fff;
- text-align:center;
- background-color:#337ab7;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- -webkit-transition:width .6s ease;
- -o-transition:width .6s ease;
- transition:width .6s ease
-}
-.progress-bar-striped,.progress-striped .progress-bar{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- -webkit-background-size:40px 40px;
- background-size:40px 40px
-}
-.progress-bar.active,.progress.active .progress-bar{
- -webkit-animation:progress-bar-stripes 2s linear infinite;
- -o-animation:progress-bar-stripes 2s linear infinite;
- animation:progress-bar-stripes 2s linear infinite
-}
-.progress-bar-success{
- background-color:#5cb85c
-}
-.progress-striped .progress-bar-success{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-info{
- background-color:#5bc0de
-}
-.progress-striped .progress-bar-info{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-warning{
- background-color:#f0ad4e
-}
-.progress-striped .progress-bar-warning{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-danger{
- background-color:#d9534f
-}
-.progress-striped .progress-bar-danger{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.media{
- margin-top:15px
-}
-.media:first-child{
- margin-top:0
-}
-.media,.media-body{
- overflow:hidden;
- zoom:1
-}
-.media-body{
- width:10000px
-}
-.media-object{
- display:block
-}
-.media-object.img-thumbnail{
- max-width:none
-}
-.media-right,.media>.pull-right{
- padding-left:10px
-}
-.media-left,.media>.pull-left{
- padding-right:10px
-}
-.media-body,.media-left,.media-right{
- display:table-cell;
- vertical-align:top
-}
-.media-middle{
- vertical-align:middle
-}
-.media-bottom{
- vertical-align:bottom
-}
-.media-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.media-list{
- padding-left:0;
- list-style:none
-}
-.list-group{
- padding-left:0;
- margin-bottom:20px
-}
-.list-group-item{
- position:relative;
- display:block;
- padding:10px 15px;
- margin-bottom:-1px;
- background-color:#fff;
- border:1px solid #ddd
-}
-.list-group-item:first-child{
- border-top-left-radius:4px;
- border-top-right-radius:4px
-}
-.list-group-item:last-child{
- margin-bottom:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-a.list-group-item,button.list-group-item{
- color:#555
-}
-a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{
- color:#333
-}
-a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{
- color:#555;
- text-decoration:none;
- background-color:#f5f5f5
-}
-button.list-group-item{
- width:100%;
- text-align:left
-}
-.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#eee
-}
-.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{
- color:inherit
-}
-.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{
- color:#777
-}
-.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{
- z-index:2;
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{
- color:inherit
-}
-.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{
- color:#c7ddef
-}
-.list-group-item-success{
- color:#3c763d;
- background-color:#dff0d8
-}
-a.list-group-item-success,button.list-group-item-success{
- color:#3c763d
-}
-a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{
- color:#3c763d;
- background-color:#d0e9c6
-}
-a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{
- color:#fff;
- background-color:#3c763d;
- border-color:#3c763d
-}
-.list-group-item-info{
- color:#31708f;
- background-color:#d9edf7
-}
-a.list-group-item-info,button.list-group-item-info{
- color:#31708f
-}
-a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{
- color:#31708f;
- background-color:#c4e3f3
-}
-a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{
- color:#fff;
- background-color:#31708f;
- border-color:#31708f
-}
-.list-group-item-warning{
- color:#8a6d3b;
- background-color:#fcf8e3
-}
-a.list-group-item-warning,button.list-group-item-warning{
- color:#8a6d3b
-}
-a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{
- color:#8a6d3b;
- background-color:#faf2cc
-}
-a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{
- color:#fff;
- background-color:#8a6d3b;
- border-color:#8a6d3b
-}
-.list-group-item-danger{
- color:#a94442;
- background-color:#f2dede
-}
-a.list-group-item-danger,button.list-group-item-danger{
- color:#a94442
-}
-a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{
- color:#a94442;
- background-color:#ebcccc
-}
-a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{
- color:#fff;
- background-color:#a94442;
- border-color:#a94442
-}
-.list-group-item-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.list-group-item-text{
- margin-bottom:0;
- line-height:1.3
-}
-.panel{
- margin-bottom:20px;
- background-color:#fff;
- border:1px solid transparent;
- border-radius:4px;
- -webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);
- box-shadow:0 1px 1px rgba(0,0,0,.05)
-}
-.panel-body{
- padding:15px
-}
-.panel-heading{
- padding:10px 15px;
- border-bottom:1px solid transparent;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel-heading>.dropdown .dropdown-toggle{
- color:inherit
-}
-.panel-title{
- margin-top:0;
- margin-bottom:0;
- font-size:16px;
- color:inherit
-}
-.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{
- color:inherit
-}
-.panel-footer{
- padding:10px 15px;
- background-color:#f5f5f5;
- border-top:1px solid #ddd;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.list-group,.panel>.panel-collapse>.list-group{
- margin-bottom:0
-}
-.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{
- border-width:1px 0;
- border-radius:0
-}
-.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{
- border-top:0;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{
- border-bottom:0;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.panel-heading+.list-group .list-group-item:first-child{
- border-top-width:0
-}
-.list-group+.panel-footer{
- border-top-width:0
-}
-.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{
- margin-bottom:0
-}
-.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{
- padding-right:15px;
- padding-left:15px
-}
-.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{
- border-top-left-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{
- border-top-right-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{
- border-bottom-right-radius:3px
-}
-.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{
- border-top:1px solid #ddd
-}
-.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{
- border-top:0
-}
-.panel>.table-bordered,.panel>.table-responsive>.table-bordered{
- border:0
-}
-.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
-}
-.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
-}
-.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{
- border-bottom:0
-}
-.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
-}
-.panel>.table-responsive{
- margin-bottom:0;
- border:0
-}
-.panel-group{
- margin-bottom:20px
-}
-.panel-group .panel{
- margin-bottom:0;
- border-radius:4px
-}
-.panel-group .panel+.panel{
- margin-top:5px
-}
-.panel-group .panel-heading{
- border-bottom:0
-}
-.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{
- border-top:1px solid #ddd
-}
-.panel-group .panel-footer{
- border-top:0
-}
-.panel-group .panel-footer+.panel-collapse .panel-body{
- border-bottom:1px solid #ddd
-}
-.panel-default{
- border-color:#ddd
-}
-.panel-default>.panel-heading{
- color:#333;
- background-color:#f5f5f5;
- border-color:#ddd
-}
-.panel-default>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ddd
-}
-.panel-default>.panel-heading .badge{
- color:#f5f5f5;
- background-color:#333
-}
-.panel-default>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ddd
-}
-.panel-primary{
- border-color:#337ab7
-}
-.panel-primary>.panel-heading{
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.panel-primary>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#337ab7
-}
-.panel-primary>.panel-heading .badge{
- color:#337ab7;
- background-color:#fff
-}
-.panel-primary>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#337ab7
-}
-.panel-success{
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#d6e9c6
-}
-.panel-success>.panel-heading .badge{
- color:#dff0d8;
- background-color:#3c763d
-}
-.panel-success>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#d6e9c6
-}
-.panel-info{
- border-color:#bce8f1
-}
-.panel-info>.panel-heading{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.panel-info>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#bce8f1
-}
-.panel-info>.panel-heading .badge{
- color:#d9edf7;
- background-color:#31708f
-}
-.panel-info>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#bce8f1
-}
-.panel-warning{
- border-color:#faebcc
-}
-.panel-warning>.panel-heading{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.panel-warning>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#faebcc
-}
-.panel-warning>.panel-heading .badge{
- color:#fcf8e3;
- background-color:#8a6d3b
-}
-.panel-warning>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#faebcc
-}
-.panel-danger{
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ebccd1
-}
-.panel-danger>.panel-heading .badge{
- color:#f2dede;
- background-color:#a94442
-}
-.panel-danger>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ebccd1
-}
-.embed-responsive{
- position:relative;
- display:block;
- height:0;
- padding:0;
- overflow:hidden
-}
-.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:100%;
- height:100%;
- border:0
-}
-.embed-responsive-16by9{
- padding-bottom:56.25%
-}
-.embed-responsive-4by3{
- padding-bottom:75%
-}
-.well{
- min-height:20px;
- padding:19px;
- margin-bottom:20px;
- background-color:#f5f5f5;
- border:1px solid #e3e3e3;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.05)
-}
-.well blockquote{
- border-color:#ddd;
- border-color:rgba(0,0,0,.15)
-}
-.well-lg{
- padding:24px;
- border-radius:6px
-}
-.well-sm{
- padding:9px;
- border-radius:3px
-}
-.close{
- float:right;
- font-size:21px;
- font-weight:700;
- line-height:1;
- color:#000;
- text-shadow:0 1px 0 #fff;
- filter:alpha(opacity=20);
- opacity:.2
-}
-.close:focus,.close:hover{
- color:#000;
- text-decoration:none;
- cursor:pointer;
- filter:alpha(opacity=50);
- opacity:.5
-}
-button.close{
- -webkit-appearance:none;
- padding:0;
- cursor:pointer;
- background:0 0;
- border:0
-}
-.modal-open{
- overflow:hidden
-}
-.modal{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1050;
- display:none;
- overflow:hidden;
- -webkit-overflow-scrolling:touch;
- outline:0
-}
-.modal.fade .modal-dialog{
- -webkit-transition:-webkit-transform .3s ease-out;
- -o-transition:-o-transform .3s ease-out;
- transition:transform .3s ease-out;
- -webkit-transform:translate(0,-25%);
- -ms-transform:translate(0,-25%);
- -o-transform:translate(0,-25%);
- transform:translate(0,-25%)
-}
-.modal.in .modal-dialog{
- -webkit-transform:translate(0,0);
- -ms-transform:translate(0,0);
- -o-transform:translate(0,0);
- transform:translate(0,0)
-}
-.modal-open .modal{
- overflow-x:hidden;
- overflow-y:auto
-}
-.modal-dialog{
- position:relative;
- width:auto;
- margin:10px
-}
-.modal-content{
- position:relative;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #999;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- outline:0;
- -webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);
- box-shadow:0 3px 9px rgba(0,0,0,.5)
-}
-.modal-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1040;
- background-color:#000
-}
-.modal-backdrop.fade{
- filter:alpha(opacity=0);
- opacity:0
-}
-.modal-backdrop.in{
- filter:alpha(opacity=50);
- opacity:.5
-}
-.modal-header{
- padding:15px;
- border-bottom:1px solid #e5e5e5
-}
-.modal-header .close{
- margin-top:-2px
-}
-.modal-title{
- margin:0;
- line-height:1.42857143
-}
-.modal-body{
- position:relative;
- padding:15px
-}
-.modal-footer{
- padding:15px;
- text-align:right;
- border-top:1px solid #e5e5e5
-}
-.modal-footer .btn+.btn{
- margin-bottom:0;
- margin-left:5px
-}
-.modal-footer .btn-group .btn+.btn{
- margin-left:-1px
-}
-.modal-footer .btn-block+.btn-block{
- margin-left:0
-}
-.modal-scrollbar-measure{
- position:absolute;
- top:-9999px;
- width:50px;
- height:50px;
- overflow:scroll
-}
-@media (min-width:768px){
- .modal-dialog{
- width:600px;
- margin:30px auto
- }
- .modal-content{
- -webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);
- box-shadow:0 5px 15px rgba(0,0,0,.5)
- }
- .modal-sm{
- width:300px
- }
-}
-@media (min-width:992px){
- .modal-lg{
- width:900px
- }
-}
-.tooltip{
- position:absolute;
- z-index:1070;
- display:block;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:12px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- filter:alpha(opacity=0);
- opacity:0;
- line-break:auto
-}
-.tooltip.in{
- filter:alpha(opacity=90);
- opacity:.9
-}
-.tooltip.top{
- padding:5px 0;
- margin-top:-3px
-}
-.tooltip.right{
- padding:0 5px;
- margin-left:3px
-}
-.tooltip.bottom{
- padding:5px 0;
- margin-top:3px
-}
-.tooltip.left{
- padding:0 5px;
- margin-left:-3px
-}
-.tooltip-inner{
- max-width:200px;
- padding:3px 8px;
- color:#fff;
- text-align:center;
- background-color:#000;
- border-radius:4px
-}
-.tooltip-arrow{
- position:absolute;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.tooltip.top .tooltip-arrow{
- bottom:0;
- left:50%;
- margin-left:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-left .tooltip-arrow{
- right:5px;
- bottom:0;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-right .tooltip-arrow{
- bottom:0;
- left:5px;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.right .tooltip-arrow{
- top:50%;
- left:0;
- margin-top:-5px;
- border-width:5px 5px 5px 0;
- border-right-color:#000
-}
-.tooltip.left .tooltip-arrow{
- top:50%;
- right:0;
- margin-top:-5px;
- border-width:5px 0 5px 5px;
- border-left-color:#000
-}
-.tooltip.bottom .tooltip-arrow{
- top:0;
- left:50%;
- margin-left:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-left .tooltip-arrow{
- top:0;
- right:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-right .tooltip-arrow{
- top:0;
- left:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.popover{
- position:absolute;
- top:0;
- left:0;
- z-index:1060;
- display:none;
- max-width:276px;
- padding:1px;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- -webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);
- box-shadow:0 5px 10px rgba(0,0,0,.2);
- line-break:auto
-}
-.popover.top{
- margin-top:-10px
-}
-.popover.right{
- margin-left:10px
-}
-.popover.bottom{
- margin-top:10px
-}
-.popover.left{
- margin-left:-10px
-}
-.popover-title{
- padding:8px 14px;
- margin:0;
- font-size:14px;
- background-color:#f7f7f7;
- border-bottom:1px solid #ebebeb;
- border-radius:5px 5px 0 0
-}
-.popover-content{
- padding:9px 14px
-}
-.popover>.arrow,.popover>.arrow:after{
- position:absolute;
- display:block;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.popover>.arrow{
- border-width:11px
-}
-.popover>.arrow:after{
- content:"";
- border-width:10px
-}
-.popover.top>.arrow{
- bottom:-11px;
- left:50%;
- margin-left:-11px;
- border-top-color:#999;
- border-top-color:rgba(0,0,0,.25);
- border-bottom-width:0
-}
-.popover.top>.arrow:after{
- bottom:1px;
- margin-left:-10px;
- content:" ";
- border-top-color:#fff;
- border-bottom-width:0
-}
-.popover.right>.arrow{
- top:50%;
- left:-11px;
- margin-top:-11px;
- border-right-color:#999;
- border-right-color:rgba(0,0,0,.25);
- border-left-width:0
-}
-.popover.right>.arrow:after{
- bottom:-10px;
- left:1px;
- content:" ";
- border-right-color:#fff;
- border-left-width:0
-}
-.popover.bottom>.arrow{
- top:-11px;
- left:50%;
- margin-left:-11px;
- border-top-width:0;
- border-bottom-color:#999;
- border-bottom-color:rgba(0,0,0,.25)
-}
-.popover.bottom>.arrow:after{
- top:1px;
- margin-left:-10px;
- content:" ";
- border-top-width:0;
- border-bottom-color:#fff
-}
-.popover.left>.arrow{
- top:50%;
- right:-11px;
- margin-top:-11px;
- border-right-width:0;
- border-left-color:#999;
- border-left-color:rgba(0,0,0,.25)
-}
-.popover.left>.arrow:after{
- right:1px;
- bottom:-10px;
- content:" ";
- border-right-width:0;
- border-left-color:#fff
-}
-.carousel{
- position:relative
-}
-.carousel-inner{
- position:relative;
- width:100%;
- overflow:hidden
-}
-.carousel-inner>.item{
- position:relative;
- display:none;
- -webkit-transition:.6s ease-in-out left;
- -o-transition:.6s ease-in-out left;
- transition:.6s ease-in-out left
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img{
- line-height:1
-}
-@media all and (transform-3d),(-webkit-transform-3d){
- .carousel-inner>.item{
- -webkit-transition:-webkit-transform .6s ease-in-out;
- -o-transition:-o-transform .6s ease-in-out;
- transition:transform .6s ease-in-out;
- -webkit-backface-visibility:hidden;
- backface-visibility:hidden;
- -webkit-perspective:1000px;
- perspective:1000px
- }
- .carousel-inner>.item.active.right,.carousel-inner>.item.next{
- left:0;
- -webkit-transform:translate3d(100%,0,0);
- transform:translate3d(100%,0,0)
- }
- .carousel-inner>.item.active.left,.carousel-inner>.item.prev{
- left:0;
- -webkit-transform:translate3d(-100%,0,0);
- transform:translate3d(-100%,0,0)
- }
- .carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{
- left:0;
- -webkit-transform:translate3d(0,0,0);
- transform:translate3d(0,0,0)
- }
-}
-.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{
- display:block
-}
-.carousel-inner>.active{
- left:0
-}
-.carousel-inner>.next,.carousel-inner>.prev{
- position:absolute;
- top:0;
- width:100%
-}
-.carousel-inner>.next{
- left:100%
-}
-.carousel-inner>.prev{
- left:-100%
-}
-.carousel-inner>.next.left,.carousel-inner>.prev.right{
- left:0
-}
-.carousel-inner>.active.left{
- left:-100%
-}
-.carousel-inner>.active.right{
- left:100%
-}
-.carousel-control{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:15%;
- font-size:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6);
- background-color:rgba(0,0,0,0);
- filter:alpha(opacity=50);
- opacity:.5
-}
-.carousel-control.left{
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));
- background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control.right{
- right:0;
- left:auto;
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));
- background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control:focus,.carousel-control:hover{
- color:#fff;
- text-decoration:none;
- filter:alpha(opacity=90);
- outline:0;
- opacity:.9
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- position:absolute;
- top:50%;
- z-index:5;
- display:inline-block;
- margin-top:-10px
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- left:50%;
- margin-left:-10px
-}
-.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- right:50%;
- margin-right:-10px
-}
-.carousel-control .icon-next,.carousel-control .icon-prev{
- width:20px;
- height:20px;
- font-family:serif;
- line-height:1
-}
-.carousel-control .icon-prev:before{
- content:'\2039'
-}
-.carousel-control .icon-next:before{
- content:'\203a'
-}
-.carousel-indicators{
- position:absolute;
- bottom:10px;
- left:50%;
- z-index:15;
- width:60%;
- padding-left:0;
- margin-left:-30%;
- text-align:center;
- list-style:none
-}
-.carousel-indicators li{
- display:inline-block;
- width:10px;
- height:10px;
- margin:1px;
- text-indent:-999px;
- cursor:pointer;
- background-color:#000\9;
- background-color:rgba(0,0,0,0);
- border:1px solid #fff;
- border-radius:10px
-}
-.carousel-indicators .active{
- width:12px;
- height:12px;
- margin:0;
- background-color:#fff
-}
-.carousel-caption{
- position:absolute;
- right:15%;
- bottom:20px;
- left:15%;
- z-index:10;
- padding-top:20px;
- padding-bottom:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6)
-}
-.carousel-caption .btn{
- text-shadow:none
-}
-@media screen and (min-width:768px){
- .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- width:30px;
- height:30px;
- margin-top:-10px;
- font-size:30px
- }
- .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- margin-left:-10px
- }
- .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- margin-right:-10px
- }
- .carousel-caption{
- right:20%;
- left:20%;
- padding-bottom:30px
- }
- .carousel-indicators{
- bottom:20px
- }
-}
-.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{
- display:table;
- content:" "
-}
-.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{
- clear:both
-}
-.center-block{
- display:block;
- margin-right:auto;
- margin-left:auto
-}
-.pull-right{
- float:right!important
-}
-.pull-left{
- float:left!important
-}
-.hide{
- display:none!important
-}
-.show{
- display:block!important
-}
-.invisible{
- visibility:hidden
-}
-.text-hide{
- font:0/0 a;
- color:transparent;
- text-shadow:none;
- background-color:transparent;
- border:0
-}
-.hidden{
- display:none!important
-}
-.affix{
- position:fixed
-}
-@-ms-viewport{
- width:device-width
-}
-.visible-lg,.visible-md,.visible-sm,.visible-xs{
- display:none!important
-}
-.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{
- display:none!important
-}
-@media (max-width:767px){
- .visible-xs{
- display:block!important
- }
- table.visible-xs{
- display:table!important
- }
- tr.visible-xs{
- display:table-row!important
- }
- td.visible-xs,th.visible-xs{
- display:table-cell!important
- }
-}
-@media (max-width:767px){
- .visible-xs-block{
- display:block!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline{
- display:inline!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm{
- display:block!important
- }
- table.visible-sm{
- display:table!important
- }
- tr.visible-sm{
- display:table-row!important
- }
- td.visible-sm,th.visible-sm{
- display:table-cell!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-block{
- display:block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline{
- display:inline!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md{
- display:block!important
- }
- table.visible-md{
- display:table!important
- }
- tr.visible-md{
- display:table-row!important
- }
- td.visible-md,th.visible-md{
- display:table-cell!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-block{
- display:block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline{
- display:inline!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg{
- display:block!important
- }
- table.visible-lg{
- display:table!important
- }
- tr.visible-lg{
- display:table-row!important
- }
- td.visible-lg,th.visible-lg{
- display:table-cell!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-block{
- display:block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline{
- display:inline!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline-block{
- display:inline-block!important
- }
-}
-@media (max-width:767px){
- .hidden-xs{
- display:none!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .hidden-sm{
- display:none!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .hidden-md{
- display:none!important
- }
-}
-@media (min-width:1200px){
- .hidden-lg{
- display:none!important
- }
-}
-.visible-print{
- display:none!important
-}
-@media print{
- .visible-print{
- display:block!important
- }
- table.visible-print{
- display:table!important
- }
- tr.visible-print{
- display:table-row!important
- }
- td.visible-print,th.visible-print{
- display:table-cell!important
- }
-}
-.visible-print-block{
- display:none!important
-}
-@media print{
- .visible-print-block{
- display:block!important
- }
-}
-.visible-print-inline{
- display:none!important
-}
-@media print{
- .visible-print-inline{
- display:inline!important
- }
-}
-.visible-print-inline-block{
- display:none!important
-}
-@media print{
- .visible-print-inline-block{
- display:inline-block!important
- }
-}
-@media print{
- .hidden-print{
- display:none!important
- }
-}
-/*# sourceMappingURL=bootstrap.min.css.map */
-
diff --git a/themes/matrix/client/src/css/01-main.css b/themes/matrix/client/src/css/01-main.css
deleted file mode 100644
index e62ff8dd0..000000000
--- a/themes/matrix/client/src/css/01-main.css
+++ /dev/null
@@ -1,77 +0,0 @@
-body {
- /*background-image: url("//*img//*LargeTriangles.svg");*/
- /*background-image: url("//*img//*RandomizedPattern.svg");*/
- /*background-image: url("//*img//*background.svg");*/
- background-color:#000000;
-}
-canvas{
- position:absolute;
- top:0;
- left:0;
-}
-.authelia-brand {
- font-weight: bold;
- font-style: italic;
- color: #ffffff
-}
-.poweredby-block {
- margin: 0px 30px;
- margin-top: 10px;
- padding-top: 15px;
- border-top: 1px solid rgba(0, 0, 0, 0.15);
-
-}
-.poweredby {
- font-size: 0.7em;
- color: white;
-}
-/* notifications */
-.notification {
- padding: 10px;
- margin: 15px 0px;
- border-radius: 6px;
- display: none;
- position: absolute;
-}
-.notification img {
- width: 24px;
- margin-right: 10px;
-}
-.notification i,
-.notification span {
- display:table-cell;
- vertical-align:middle;
-}
-.info {
- border: 1px solid #9cb1ff;
- background-color: rgb(192, 220, 255);
-}
-.success {
- border: 1px solid #65ec7c;
- background-color: rgb(163, 255, 157);
-}
-.error {
- border: 1px solid #ffa3a3;
- background-color: rgb(255, 175, 175);
-}
-.warning {
- border: 1px solid #ffd743;
- background-color: rgb(255, 230, 143);
-}
-.bottom-right-links {
- text-align: right;
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-.header {
- background-color: #000000;
- color: white;
- margin: 0px;
-}
-.body {
- padding: 10px;
-}
-h1 {
- font-size: 25px;
-}
diff --git a/themes/matrix/client/src/css/02-login.css b/themes/matrix/client/src/css/02-login.css
deleted file mode 100644
index a6984267b..000000000
--- a/themes/matrix/client/src/css/02-login.css
+++ /dev/null
@@ -1,136 +0,0 @@
-.form-signin
-{
- margin: 0 auto;
-}
-
-.form-signin .form-signin-heading, .form-signin .checkbox
-{
- margin-bottom: 10px;
-}
-
-.form-signin .checkbox
-{
- font-weight: normal;
-}
-
-.form-signin .form-control
-{
- position: relative;
- font-size: 16px;
- height: auto;
- padding: 10px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.form-signin .form-control:focus
-{
- z-index: 2;
-}
-.form-signin input[type="text"]
-{
- margin-bottom: -1px;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-.form-signin input[type="password"]
-{
- /* margin-bottom: 10px; */
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.account-wall
-{
- border: 1px solid #000;
- margin-top: 20px;
- padding-bottom: 20px;
- background-color: #000000;
- -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
-}
-.account-wall h1
-{
- margin-bottom: 15px;
- margin-top: 15px;
- font-weight: 800;
- display: block;
- text-align: center;
-}
-.account-wall h3
-{
- display: block;
- text-align: center;
-}
-.account-wall p
-{
- text-align: center;
- margin: 10px;
- color: white;
-}
-.account-wall .form-inputs
-{
- margin-bottom: 10px;
- border-color: #b20c0c;
-}
-.account-wall hr {
- border-color: #c5c5c5;
-}
-
-.header-img
-{
- width: 96px;
- height: 96px;
- margin: 0 auto 10px;
- display: block;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
- border-radius: 50%;
-}
-
-.link
-{
- margin-top: 10px;
- color: white;
-}
-
-.btn-primary.totp
-{
- background-color: rgb(102, 135, 162);
-}
-
-.btn-primary.u2f
-{
- background-color: rgb(83, 149, 204);
-}
-
-.u2f-token {
- text-align: center;
-}
-
-.u2f-token img {
- width: 70px;
-}
-
-.keep-me-logged-in {
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-
-.keep-me-logged-in input[type=checkbox] {
- transform: scale(0.8);
- margin: 0;
- margin-right: 4px;
-}
-
-.keep-me-logged-in label {
- font-weight: 300;
-}
-
-.keep-me-logged-in input,
-.keep-me-logged-in label {
- display: inline-block;
- margin-bottom: 0; /* I added this after I posted my reply */
- vertical-align: middle; /* Fixes any weird issues in Firefox and IE */
-}
diff --git a/themes/matrix/client/src/css/03-errors.css b/themes/matrix/client/src/css/03-errors.css
deleted file mode 100644
index e9f97f33b..000000000
--- a/themes/matrix/client/src/css/03-errors.css
+++ /dev/null
@@ -1,12 +0,0 @@
-
-.error-401 .header-img {
- border-radius: 0%;
-}
-
-.error-403 .header-img {
- border-radius: 0%;
-}
-
-.error-404 .header-img {
- border-radius: 0%;
-}
\ No newline at end of file
diff --git a/themes/matrix/client/src/css/03-password-reset-form.css b/themes/matrix/client/src/css/03-password-reset-form.css
deleted file mode 100644
index 34066bc24..000000000
--- a/themes/matrix/client/src/css/03-password-reset-form.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-form .header-img {
- border-radius: 0%;
-}
diff --git a/themes/matrix/client/src/css/03-password-reset-request.css b/themes/matrix/client/src/css/03-password-reset-request.css
deleted file mode 100644
index 1a2ad4df8..000000000
--- a/themes/matrix/client/src/css/03-password-reset-request.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-request .header-img {
- border-radius: 0%;
-}
diff --git a/themes/matrix/client/src/css/03-totp-register.css b/themes/matrix/client/src/css/03-totp-register.css
deleted file mode 100644
index cb76720ad..000000000
--- a/themes/matrix/client/src/css/03-totp-register.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.totp-register #secret {
- background-color: white;
- font-size: 0.9em;
- font-weight: bold;
- padding: 5px;
- border: 1px solid #c7c7c7;
- word-wrap: break-word;
-}
-.totp-register #qrcode img {
- margin: 10px auto;
-}
-.totp-register .need-google-authenticator {
- text-align: center;
- margin-top: 20px;
-}
-.totp-register .store-badges {
- margin-top: 5px;
-}
-.totp-register .store-badge {
- width: 110px;
- height: 30px;
-}
\ No newline at end of file
diff --git a/themes/matrix/client/src/css/03-u2f-register.css b/themes/matrix/client/src/css/03-u2f-register.css
deleted file mode 100644
index e54cddf89..000000000
--- a/themes/matrix/client/src/css/03-u2f-register.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
-.u2f-register img {
- display: block;
- margin: 20px auto;
-}
\ No newline at end of file
diff --git a/themes/matrix/client/src/img/background.jpg b/themes/matrix/client/src/img/background.jpg
deleted file mode 100644
index 974ea273f..000000000
Binary files a/themes/matrix/client/src/img/background.jpg and /dev/null differ
diff --git a/themes/matrix/client/src/img/icon.png b/themes/matrix/client/src/img/icon.png
deleted file mode 100644
index 040d10c1a..000000000
Binary files a/themes/matrix/client/src/img/icon.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/mail.png b/themes/matrix/client/src/img/mail.png
deleted file mode 100644
index 834bfce91..000000000
Binary files a/themes/matrix/client/src/img/mail.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/matrix_circle_128x128.png b/themes/matrix/client/src/img/matrix_circle_128x128.png
deleted file mode 100644
index 856e01556..000000000
Binary files a/themes/matrix/client/src/img/matrix_circle_128x128.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/notifications/.directory b/themes/matrix/client/src/img/notifications/.directory
deleted file mode 100644
index 7c8b80541..000000000
--- a/themes/matrix/client/src/img/notifications/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,35
-Version=3
-ViewMode=1
diff --git a/themes/matrix/client/src/img/notifications/error.png b/themes/matrix/client/src/img/notifications/error.png
deleted file mode 100644
index bf64d28f7..000000000
Binary files a/themes/matrix/client/src/img/notifications/error.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/notifications/info.png b/themes/matrix/client/src/img/notifications/info.png
deleted file mode 100644
index 67928e88c..000000000
Binary files a/themes/matrix/client/src/img/notifications/info.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/notifications/success.png b/themes/matrix/client/src/img/notifications/success.png
deleted file mode 100644
index d3998392d..000000000
Binary files a/themes/matrix/client/src/img/notifications/success.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/notifications/warning.png b/themes/matrix/client/src/img/notifications/warning.png
deleted file mode 100644
index ab8b54ffc..000000000
Binary files a/themes/matrix/client/src/img/notifications/warning.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/padlock.png b/themes/matrix/client/src/img/padlock.png
deleted file mode 100644
index 31abbaeef..000000000
Binary files a/themes/matrix/client/src/img/padlock.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/password_white.png b/themes/matrix/client/src/img/password_white.png
deleted file mode 100644
index 0b93ef3fb..000000000
Binary files a/themes/matrix/client/src/img/password_white.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/pendrive.png b/themes/matrix/client/src/img/pendrive.png
deleted file mode 100644
index fa49178c3..000000000
Binary files a/themes/matrix/client/src/img/pendrive.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/stores/.directory b/themes/matrix/client/src/img/stores/.directory
deleted file mode 100644
index 7bdc8daf8..000000000
--- a/themes/matrix/client/src/img/stores/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,25
-Version=3
-ViewMode=1
diff --git a/themes/matrix/client/src/img/stores/applestore-badge.svg b/themes/matrix/client/src/img/stores/applestore-badge.svg
deleted file mode 100644
index ac111e597..000000000
--- a/themes/matrix/client/src/img/stores/applestore-badge.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/matrix/client/src/img/stores/googleplay-badge.svg b/themes/matrix/client/src/img/stores/googleplay-badge.svg
deleted file mode 100644
index 9e33e3aa2..000000000
--- a/themes/matrix/client/src/img/stores/googleplay-badge.svg
+++ /dev/null
@@ -1,429 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/themes/matrix/client/src/img/success.png b/themes/matrix/client/src/img/success.png
deleted file mode 100644
index ee9d6841b..000000000
Binary files a/themes/matrix/client/src/img/success.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/user.png b/themes/matrix/client/src/img/user.png
deleted file mode 100644
index 00941399d..000000000
Binary files a/themes/matrix/client/src/img/user.png and /dev/null differ
diff --git a/themes/matrix/client/src/img/warning.png b/themes/matrix/client/src/img/warning.png
deleted file mode 100644
index c6acd953b..000000000
Binary files a/themes/matrix/client/src/img/warning.png and /dev/null differ
diff --git a/themes/matrix/client/src/thirdparties/matrix.js b/themes/matrix/client/src/thirdparties/matrix.js
deleted file mode 100644
index f9c8d51d4..000000000
--- a/themes/matrix/client/src/thirdparties/matrix.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// Parameters
-const fontSize = 12;
-const spdMult = 0.5;
-const fadeSpd = 0.03;
-const headColor = '#FFFFFF';
-const tailColor = '#00FF00';
-
-canvas.width = window.innerWidth;
-canvas.height = window.innerHeight;
-let ctx = canvas.getContext('2d');
-let pos, spd, time, chars;
-
-function init() {
- pos = []; spd = []; time = []; chars = [];
- ctx.font = fontSize + 'pt Consolas';
- for (let i = 0; i < canvas.width / fontSize; i++) {
- pos[i] = Math.random() * (canvas.height / fontSize);
- spd[i] = (Math.random() + 0.2) * spdMult;
- time[i] = 0;
- chars[i] = ' ';
- }
-}
-
-function render() {
- requestAnimationFrame(render);
-
- ctx.fillStyle = tailColor;
- for (let i = 0; i < chars.length; ++i) { // Tails
- ctx.fillText(chars[i], i * fontSize + 1, pos[i] * fontSize);
- }
- ctx.fillStyle = `rgba(0, 0, 0, ${fadeSpd})`;
- ctx.fillRect(0, 0, canvas.width, canvas.height); // Fading
-
- ctx.fillStyle = headColor;
- for (let x = 0; x < pos.length; ++x){ // Chars
- if (time[x] > 1) {
- let charCode = (Math.random() < 0.9) ? Math.random() * 93 + 33
- : Math.random() * 15 + 12688;
- chars[x] = String.fromCharCode(charCode);
- ctx.fillText(chars[x], x * fontSize + 1, pos[x] * fontSize + fontSize);
- pos[x]++;
- if (pos[x] * fontSize > canvas.height) pos[x] = 0;
- time[x] = 0;
- }
- time[x] += spd[x];
- }
-}
-
-window.onload = function() {
- window.onresize = () => {
- canvas.width = window.innerWidth;
- canvas.height = window.innerHeight;
- ctx.clearRect(0, 0, canvas.width, canvas.height);
- init();
- };
- init();
- render();
-};
diff --git a/themes/matrix/client/src/thirdparties/qrcode.min.js b/themes/matrix/client/src/thirdparties/qrcode.min.js
deleted file mode 100644
index 993e88f39..000000000
--- a/themes/matrix/client/src/thirdparties/qrcode.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push(' ');g.push(" ")}g.push("
"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
diff --git a/themes/matrix/client/src/thirdparties/u2f-api.js b/themes/matrix/client/src/thirdparties/u2f-api.js
deleted file mode 100644
index 8c7801e3b..000000000
--- a/themes/matrix/client/src/thirdparties/u2f-api.js
+++ /dev/null
@@ -1,749 +0,0 @@
-//Copyright 2014-2015 Google Inc. All rights reserved.
-
-//Use of this source code is governed by a BSD-style
-//license that can be found in the LICENSE file or at
-//https://developers.google.com/open-source/licenses/bsd
-
-/**
- * @fileoverview The U2F api.
- */
-'use strict';
-
-
-/**
- * Namespace for the U2F api.
- * @type {Object}
- */
-var u2f = u2f || {};
-
-/**
- * FIDO U2F Javascript API Version
- * @number
- */
-var js_api_version;
-
-/**
- * The U2F extension id
- * @const {string}
- */
-// The Chrome packaged app extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the package Chrome app and does not require installing the U2F Chrome extension.
- u2f.EXTENSION_ID = 'kmendfapggjehodndflmmgagdbamhnfd';
-// The U2F Chrome extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the U2F Chrome extension to authenticate.
-// u2f.EXTENSION_ID = 'pfboblefjcgdjicmnffhdgionmgcdmne';
-
-
-/**
- * Message types for messsages to/from the extension
- * @const
- * @enum {string}
- */
-u2f.MessageTypes = {
- 'U2F_REGISTER_REQUEST': 'u2f_register_request',
- 'U2F_REGISTER_RESPONSE': 'u2f_register_response',
- 'U2F_SIGN_REQUEST': 'u2f_sign_request',
- 'U2F_SIGN_RESPONSE': 'u2f_sign_response',
- 'U2F_GET_API_VERSION_REQUEST': 'u2f_get_api_version_request',
- 'U2F_GET_API_VERSION_RESPONSE': 'u2f_get_api_version_response'
-};
-
-
-/**
- * Response status codes
- * @const
- * @enum {number}
- */
-u2f.ErrorCodes = {
- 'OK': 0,
- 'OTHER_ERROR': 1,
- 'BAD_REQUEST': 2,
- 'CONFIGURATION_UNSUPPORTED': 3,
- 'DEVICE_INELIGIBLE': 4,
- 'TIMEOUT': 5
-};
-
-
-/**
- * A message for registration requests
- * @typedef {{
- * type: u2f.MessageTypes,
- * appId: ?string,
- * timeoutSeconds: ?number,
- * requestId: ?number
- * }}
- */
-u2f.U2fRequest;
-
-
-/**
- * A message for registration responses
- * @typedef {{
- * type: u2f.MessageTypes,
- * responseData: (u2f.Error | u2f.RegisterResponse | u2f.SignResponse),
- * requestId: ?number
- * }}
- */
-u2f.U2fResponse;
-
-
-/**
- * An error object for responses
- * @typedef {{
- * errorCode: u2f.ErrorCodes,
- * errorMessage: ?string
- * }}
- */
-u2f.Error;
-
-/**
- * Data object for a single sign request.
- * @typedef {enum {BLUETOOTH_RADIO, BLUETOOTH_LOW_ENERGY, USB, NFC}}
- */
-u2f.Transport;
-
-
-/**
- * Data object for a single sign request.
- * @typedef {Array}
- */
-u2f.Transports;
-
-/**
- * Data object for a single sign request.
- * @typedef {{
- * version: string,
- * challenge: string,
- * keyHandle: string,
- * appId: string
- * }}
- */
-u2f.SignRequest;
-
-
-/**
- * Data object for a sign response.
- * @typedef {{
- * keyHandle: string,
- * signatureData: string,
- * clientData: string
- * }}
- */
-u2f.SignResponse;
-
-
-/**
- * Data object for a registration request.
- * @typedef {{
- * version: string,
- * challenge: string
- * }}
- */
-u2f.RegisterRequest;
-
-
-/**
- * Data object for a registration response.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: Transports,
- * appId: string
- * }}
- */
-u2f.RegisterResponse;
-
-
-/**
- * Data object for a registered key.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: ?Transports,
- * appId: ?string
- * }}
- */
-u2f.RegisteredKey;
-
-
-/**
- * Data object for a get API register response.
- * @typedef {{
- * js_api_version: number
- * }}
- */
-u2f.GetJsApiVersionResponse;
-
-
-//Low level MessagePort API support
-
-/**
- * Sets up a MessagePort to the U2F extension using the
- * available mechanisms.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- */
-u2f.getMessagePort = function(callback) {
- if (typeof chrome != 'undefined' && chrome.runtime) {
- // The actual message here does not matter, but we need to get a reply
- // for the callback to run. Thus, send an empty signature request
- // in order to get a failure response.
- var msg = {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: []
- };
- chrome.runtime.sendMessage(u2f.EXTENSION_ID, msg, function() {
- if (!chrome.runtime.lastError) {
- // We are on a whitelisted origin and can talk directly
- // with the extension.
- u2f.getChromeRuntimePort_(callback);
- } else {
- // chrome.runtime was available, but we couldn't message
- // the extension directly, use iframe
- u2f.getIframePort_(callback);
- }
- });
- } else if (u2f.isAndroidChrome_()) {
- u2f.getAuthenticatorPort_(callback);
- } else if (u2f.isIosChrome_()) {
- u2f.getIosPort_(callback);
- } else {
- // chrome.runtime was not available at all, which is normal
- // when this origin doesn't have access to any extensions.
- u2f.getIframePort_(callback);
- }
-};
-
-/**
- * Detect chrome running on android based on the browser's useragent.
- * @private
- */
-u2f.isAndroidChrome_ = function() {
- var userAgent = navigator.userAgent;
- return userAgent.indexOf('Chrome') != -1 &&
- userAgent.indexOf('Android') != -1;
-};
-
-/**
- * Detect chrome running on iOS based on the browser's platform.
- * @private
- */
-u2f.isIosChrome_ = function() {
- return ["iPhone", "iPad", "iPod"].indexOf(navigator.platform) > -1;
-};
-
-/**
- * Connects directly to the extension via chrome.runtime.connect.
- * @param {function(u2f.WrappedChromeRuntimePort_)} callback
- * @private
- */
-u2f.getChromeRuntimePort_ = function(callback) {
- var port = chrome.runtime.connect(u2f.EXTENSION_ID,
- {'includeTlsChannelId': true});
- setTimeout(function() {
- callback(new u2f.WrappedChromeRuntimePort_(port));
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the Authenticator app.
- * @param {function(u2f.WrappedAuthenticatorPort_)} callback
- * @private
- */
-u2f.getAuthenticatorPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedAuthenticatorPort_());
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the iOS client app.
- * @param {function(u2f.WrappedIosPort_)} callback
- * @private
- */
-u2f.getIosPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedIosPort_());
- }, 0);
-};
-
-/**
- * A wrapper for chrome.runtime.Port that is compatible with MessagePort.
- * @param {Port} port
- * @constructor
- * @private
- */
-u2f.WrappedChromeRuntimePort_ = function(port) {
- this.port_ = port;
-};
-
-/**
- * Format and return a sign request compliant with the JS API version supported by the extension.
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatSignRequest_ =
- function(appId, challenge, registeredKeys, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: challenge,
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: signRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- appId: appId,
- challenge: challenge,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-/**
- * Format and return a register request compliant with the JS API version supported by the extension..
- * @param {Array} signRequests
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatRegisterRequest_ =
- function(appId, registeredKeys, registerRequests, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- for (var i = 0; i < registerRequests.length; i++) {
- registerRequests[i].appId = appId;
- }
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: registerRequests[0],
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- signRequests: signRequests,
- registerRequests: registerRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- appId: appId,
- registerRequests: registerRequests,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-
-/**
- * Posts a message on the underlying channel.
- * @param {Object} message
- */
-u2f.WrappedChromeRuntimePort_.prototype.postMessage = function(message) {
- this.port_.postMessage(message);
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface. Works only for the
- * onmessage event, which is hooked up to the chrome.runtime.Port.onMessage.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedChromeRuntimePort_.prototype.addEventListener =
- function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message' || name == 'onmessage') {
- this.port_.onMessage.addListener(function(message) {
- // Emulate a minimal MessageEvent object
- handler({'data': message});
- });
- } else {
- console.error('WrappedChromeRuntimePort only supports onMessage');
- }
-};
-
-/**
- * Wrap the Authenticator app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedAuthenticatorPort_ = function() {
- this.requestId_ = -1;
- this.requestObject_ = null;
-}
-
-/**
- * Launch the Authenticator intent.
- * @param {Object} message
- */
-u2f.WrappedAuthenticatorPort_.prototype.postMessage = function(message) {
- var intentUrl =
- u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ +
- ';S.request=' + encodeURIComponent(JSON.stringify(message)) +
- ';end';
- document.location = intentUrl;
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedAuthenticatorPort_.prototype.getPortType = function() {
- return "WrappedAuthenticatorPort_";
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedAuthenticatorPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message') {
- var self = this;
- /* Register a callback to that executes when
- * chrome injects the response. */
- window.addEventListener(
- 'message', self.onRequestUpdate_.bind(self, handler), false);
- } else {
- console.error('WrappedAuthenticatorPort only supports message');
- }
-};
-
-/**
- * Callback invoked when a response is received from the Authenticator.
- * @param function({data: Object}) callback
- * @param {Object} message message Object
- */
-u2f.WrappedAuthenticatorPort_.prototype.onRequestUpdate_ =
- function(callback, message) {
- var messageObject = JSON.parse(message.data);
- var intentUrl = messageObject['intentURL'];
-
- var errorCode = messageObject['errorCode'];
- var responseObject = null;
- if (messageObject.hasOwnProperty('data')) {
- responseObject = /** @type {Object} */ (
- JSON.parse(messageObject['data']));
- }
-
- callback({'data': responseObject});
-};
-
-/**
- * Base URL for intents to Authenticator.
- * @const
- * @private
- */
-u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ =
- 'intent:#Intent;action=com.google.android.apps.authenticator.AUTHENTICATE';
-
-/**
- * Wrap the iOS client app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedIosPort_ = function() {};
-
-/**
- * Launch the iOS client app request
- * @param {Object} message
- */
-u2f.WrappedIosPort_.prototype.postMessage = function(message) {
- var str = JSON.stringify(message);
- var url = "u2f://auth?" + encodeURI(str);
- location.replace(url);
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedIosPort_.prototype.getPortType = function() {
- return "WrappedIosPort_";
-};
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedIosPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name !== 'message') {
- console.error('WrappedIosPort only supports message');
- }
-};
-
-/**
- * Sets up an embedded trampoline iframe, sourced from the extension.
- * @param {function(MessagePort)} callback
- * @private
- */
-u2f.getIframePort_ = function(callback) {
- // Create the iframe
- var iframeOrigin = 'chrome-extension://' + u2f.EXTENSION_ID;
- var iframe = document.createElement('iframe');
- iframe.src = iframeOrigin + '/u2f-comms.html';
- iframe.setAttribute('style', 'display:none');
- document.body.appendChild(iframe);
-
- var channel = new MessageChannel();
- var ready = function(message) {
- if (message.data == 'ready') {
- channel.port1.removeEventListener('message', ready);
- callback(channel.port1);
- } else {
- console.error('First event on iframe port was not "ready"');
- }
- };
- channel.port1.addEventListener('message', ready);
- channel.port1.start();
-
- iframe.addEventListener('load', function() {
- // Deliver the port to the iframe and initialize
- iframe.contentWindow.postMessage('init', iframeOrigin, [channel.port2]);
- });
-};
-
-
-//High-level JS API
-
-/**
- * Default extension response timeout in seconds.
- * @const
- */
-u2f.EXTENSION_TIMEOUT_SEC = 30;
-
-/**
- * A singleton instance for a MessagePort to the extension.
- * @type {MessagePort|u2f.WrappedChromeRuntimePort_}
- * @private
- */
-u2f.port_ = null;
-
-/**
- * Callbacks waiting for a port
- * @type {Array}
- * @private
- */
-u2f.waitingForPort_ = [];
-
-/**
- * A counter for requestIds.
- * @type {number}
- * @private
- */
-u2f.reqCounter_ = 0;
-
-/**
- * A map from requestIds to client callbacks
- * @type {Object.}
- * @private
- */
-u2f.callbackMap_ = {};
-
-/**
- * Creates or retrieves the MessagePort singleton to use.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- * @private
- */
-u2f.getPortSingleton_ = function(callback) {
- if (u2f.port_) {
- callback(u2f.port_);
- } else {
- if (u2f.waitingForPort_.length == 0) {
- u2f.getMessagePort(function(port) {
- u2f.port_ = port;
- u2f.port_.addEventListener('message',
- /** @type {function(Event)} */ (u2f.responseHandler_));
-
- // Careful, here be async callbacks. Maybe.
- while (u2f.waitingForPort_.length)
- u2f.waitingForPort_.shift()(u2f.port_);
- });
- }
- u2f.waitingForPort_.push(callback);
- }
-};
-
-/**
- * Handles response messages from the extension.
- * @param {MessageEvent.} message
- * @private
- */
-u2f.responseHandler_ = function(message) {
- var response = message.data;
- var reqId = response['requestId'];
- if (!reqId || !u2f.callbackMap_[reqId]) {
- console.error('Unknown or missing requestId in response.');
- return;
- }
- var cb = u2f.callbackMap_[reqId];
- delete u2f.callbackMap_[reqId];
- cb(response['responseData']);
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the sign request.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sign = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual sign request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0 : response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual sign request in the supported API version.
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendSignRequest = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatSignRequest_(appId, challenge, registeredKeys, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the register request.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.register = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual register request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0: response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual register request in the supported API version.
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendRegisterRequest = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatRegisterRequest_(
- appId, registeredKeys, registerRequests, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-
-/**
- * Dispatches a message to the extension to find out the supported
- * JS API version.
- * If the user is on a mobile phone and is thus using Google Authenticator instead
- * of the Chrome extension, don't send the request and simply return 0.
- * @param {function((u2f.Error|u2f.GetJsApiVersionResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.getApiVersion = function(callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- // If we are using Android Google Authenticator or iOS client app,
- // do not fire an intent to ask which JS API version to use.
- if (port.getPortType) {
- var apiVersion;
- switch (port.getPortType()) {
- case 'WrappedIosPort_':
- case 'WrappedAuthenticatorPort_':
- apiVersion = 1.1;
- break;
-
- default:
- apiVersion = 0;
- break;
- }
- callback({ 'js_api_version': apiVersion });
- return;
- }
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var req = {
- type: u2f.MessageTypes.U2F_GET_API_VERSION_REQUEST,
- timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),
- requestId: reqId
- };
- port.postMessage(req);
- });
-};
-
diff --git a/themes/matrix/server/.directory b/themes/matrix/server/.directory
deleted file mode 100644
index b7754766c..000000000
--- a/themes/matrix/server/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,58,20
-Version=3
-ViewMode=1
diff --git a/themes/matrix/server/src/resources/email-template.ejs b/themes/matrix/server/src/resources/email-template.ejs
deleted file mode 100644
index f59c2f944..000000000
--- a/themes/matrix/server/src/resources/email-template.ejs
+++ /dev/null
@@ -1,254 +0,0 @@
-
-
-
-
-
- Simples-Minimalistic Responsive Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <%= title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This email has been sent to you in order to validate your identity. Please ignore it if you do not know why you received it.
-
-
-
-
-
-
-
-
-
-
-
- <%= button_title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Please ignore this email if you did not initiate the process.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/matrix/server/src/views/already-logged-in.pug b/themes/matrix/server/src/views/already-logged-in.pug
deleted file mode 100644
index 137bbea30..000000000
--- a/themes/matrix/server/src/views/already-logged-in.pug
+++ /dev/null
@@ -1,14 +0,0 @@
-extends layout/layout.pug
-
-block form-header
- h1 Sign in
-
-block content
- img(class="header-img" src="/img/success.png" alt="success")
- if redirection_url
- p You are already logged in as #{ username } .
- | If you are not redirected in few seconds, click here .
- | Otherwise, click here to log off.
- else
- p You are already logged in as #{ username } .
- | Click here to log off.
diff --git a/themes/matrix/server/src/views/errors/.directory b/themes/matrix/server/src/views/errors/.directory
deleted file mode 100644
index 33f71bea4..000000000
--- a/themes/matrix/server/src/views/errors/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,59,57
-Version=3
-ViewMode=1
diff --git a/themes/matrix/server/src/views/errors/401.pug b/themes/matrix/server/src/views/errors/401.pug
deleted file mode 100644
index b7a222ad0..000000000
--- a/themes/matrix/server/src/views/errors/401.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-401";
-
-block form-header
- h1 Error 401
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You are not authorized to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You are not authorized to access this resource.
\ No newline at end of file
diff --git a/themes/matrix/server/src/views/errors/403.pug b/themes/matrix/server/src/views/errors/403.pug
deleted file mode 100644
index f4b5ca8a2..000000000
--- a/themes/matrix/server/src/views/errors/403.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-403";
-
-block form-header
- h1 Error 403
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You don't have enough privileges to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You don't have enough privileges to access this resource.
diff --git a/themes/matrix/server/src/views/errors/404.pug b/themes/matrix/server/src/views/errors/404.pug
deleted file mode 100644
index 06d6375fc..000000000
--- a/themes/matrix/server/src/views/errors/404.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-404";
-
-block form-header
- Error 404
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- p Page not found.
diff --git a/themes/matrix/server/src/views/firstfactor.pug b/themes/matrix/server/src/views/firstfactor.pug
deleted file mode 100644
index 5e85e570c..000000000
--- a/themes/matrix/server/src/views/firstfactor.pug
+++ /dev/null
@@ -1,23 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "firstfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/matrix_circle_128x128.png" alt="user profile")
- p Enter your credentials to sign in
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" id="username" placeholder="Username" required autofocus)
- input(type="password" class="form-control" id="password" placeholder="Password" required)
- button(id="signin" class="btn btn-lg btn-primary btn-block" type="submit") Sign in
- div(class="keep-me-logged-in pull-left")
- input(type="checkbox" id="keep_me_logged_in" name="keep_me_logged_in" value="true")
- label(for="keep_me_logged_in") Keep me logged in
- div(class="bottom-right-links pull-right")
- a(href=reset_password_request_endpoint, class="link forgot-password") Forgot password?
- span(class="clearfix")
diff --git a/themes/matrix/server/src/views/layout/layout.pug b/themes/matrix/server/src/views/layout/layout.pug
deleted file mode 100644
index 1d845be49..000000000
--- a/themes/matrix/server/src/views/layout/layout.pug
+++ /dev/null
@@ -1,30 +0,0 @@
-block variables
-
-doctype html
-html
- head
- title Authelia - 2FA
- meta(name="viewport", content="width=device-width, initial-scale=1.0")
- meta(name="robots", content="noindex, nofollow, nosnippet, noarchive")
- meta(http-equiv="Content-Security-Policy", content="default-src 'self'; img-src 'self' data:;")
- link(rel="icon", href="/img/icon.png" type="image/png" sizes="32x32")
- link(rel="stylesheet", type="text/css", href="/css/authelia.css")
- if redirection_url
- meta(http-equiv="refresh" content="4;url=" + redirection_url)
- body
- canvas#canvas(width='400', height='300')
- script(src='/js/matrix.js')
- div(class="container")
- div(class="row")
- div(class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3")
- div(class="account-wall " + page_classname)
- div(class="row header")
- block form-header
- div(class="row body")
- div(class="form col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2")
- block content
- div(class="row footer poweredby-block")
- div(class="poweredby col-xs-6 col-xs-offset-4 col-sm-6 col-sm-offset-4 col-md-6 col-md-offset-4")
- | Powered by Authelia
- block entrypoint
- script(src="/js/authelia.js", type="text/javascript")
diff --git a/themes/matrix/server/src/views/need-identity-validation.pug b/themes/matrix/server/src/views/need-identity-validation.pug
deleted file mode 100644
index 4cfd62717..000000000
--- a/themes/matrix/server/src/views/need-identity-validation.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "identity-validation";
-
-block form-header
- h1 Registration
-
-block content
- img(class="header-img" src="/img/mail.png" alt="mail")
- p A confirmation email has been sent to your mailbox.
- | Please open it and click on the link within 15 minutes to confirm the registration.
diff --git a/themes/matrix/server/src/views/password-reset-form.pug b/themes/matrix/server/src/views/password-reset-form.pug
deleted file mode 100644
index fd9311892..000000000
--- a/themes/matrix/server/src/views/password-reset-form.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-form";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/password_white.png" alt="password")
- p Set your new password and confirm it.
- form(class="form-signin")
- div(class="form-inputs")
- input(class="form-control" type="password" name="password1" id="password1" placeholder="New password" required="required")
- input(class="form-control" type="password" name="password2" id="password2" placeholder="Password confirmation" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/matrix/server/src/views/password-reset-request.pug b/themes/matrix/server/src/views/password-reset-request.pug
deleted file mode 100644
index 855b5998b..000000000
--- a/themes/matrix/server/src/views/password-reset-request.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-request";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- div
- img(class="header-img" src="/img/password_white.png" alt="password")
- p After giving your username, you will receive an email to change your password.
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" name="username" id="username" placeholder="Your username" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/matrix/server/src/views/secondfactor.pug b/themes/matrix/server/src/views/secondfactor.pug
deleted file mode 100644
index 87b578185..000000000
--- a/themes/matrix/server/src/views/secondfactor.pug
+++ /dev/null
@@ -1,31 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "secondfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div
- div(class="notification notification-totp")
- h3 Hi #{username}
- div(class="row")
- div(class="u2f-token")
- img(src="/img/pendrive.png", alt="security key")
- p
- | Please, touch your security key
- b Or
- | Get a one-time password
- form(class="form-signin totp")
- div(class="form-inputs")
- input(type="text" autocomplete="off" class="form-control" id="token" placeholder="Token" required autofocus)
- button(class="btn btn-lg btn-primary btn-block totp-button" type="submit") Sign in
- div(class="pull-right bottom-right-links")
- div Need to register?
- div
- a(href=u2f_identity_start_endpoint, class="link register-u2f", data-toggle="tooltip", title="A security key is required to register.") Security key
- | |
- a(href=totp_identity_start_endpoint, class="link register-totp") Google Authenticator
- span(class="clearfix")
- script(src="/js/u2f-api.js", type="text/javascript")
diff --git a/themes/matrix/server/src/views/totp-register.pug b/themes/matrix/server/src/views/totp-register.pug
deleted file mode 100644
index 1b4d98354..000000000
--- a/themes/matrix/server/src/views/totp-register.pug
+++ /dev/null
@@ -1,25 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "totp-register";
-
-block form-header
- h1 One-time passwords
-
-block content
- p Open Google Authenticator and add this entry
- p(id="secret") #{ base32_secret }
- p or scan this barcode
- div(id="qrcode") #{ otpauth_url }
- p
- a(href=login_endpoint, id="login-button") Login
- div(class="need-google-authenticator")
- | Need Google Authenticator?
- div(class="store-badges")
- a(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
- img(alt='Get it on Google Play', src='/img/stores/googleplay-badge.svg', class="store-badge")
- a(href='https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8', target="_blank")
- img(alt='Get it on Apple Store' src='/img/stores/applestore-badge.svg' class="store-badge")
-
-block entrypoint
- script(src="/js/qrcode.min.js", type="text/javascript" )
diff --git a/themes/matrix/server/src/views/u2f-register.pug b/themes/matrix/server/src/views/u2f-register.pug
deleted file mode 100644
index d52eba6ca..000000000
--- a/themes/matrix/server/src/views/u2f-register.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "u2f-register";
-
-block form-header
- h1 Register your security key
-
-block content
- p Touch the token to register your security key.
- img(src="/img/pendrive.png" alt="pendrive")
- script(src="/js/u2f-api.js", type="text/javascript")
\ No newline at end of file
diff --git a/themes/squares/client/src/css/.directory b/themes/squares/client/src/css/.directory
deleted file mode 100644
index 6e4b3f639..000000000
--- a/themes/squares/client/src/css/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,56,41
-Version=3
-ViewMode=1
diff --git a/themes/squares/client/src/css/00-bootstrap.min.css b/themes/squares/client/src/css/00-bootstrap.min.css
deleted file mode 100644
index dfeacbb88..000000000
--- a/themes/squares/client/src/css/00-bootstrap.min.css
+++ /dev/null
@@ -1,5768 +0,0 @@
-/*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html{
- font-family:sans-serif;
- -webkit-text-size-adjust:100%;
- -ms-text-size-adjust:100%
-}
-body{
- margin:0
-}
-article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{
- display:block
-}
-audio,canvas,progress,video{
- display:inline-block;
- vertical-align:baseline
-}
-audio:not([controls]){
- display:none;
- height:0
-}
-[hidden],template{
- display:none
-}
-a{
- background-color:transparent
-}
-a:active,a:hover{
- outline:0
-}
-abbr[title]{
- border-bottom:1px dotted
-}
-b,strong{
- font-weight:700
-}
-dfn{
- font-style:italic
-}
-h1{
- margin:.67em 0;
- font-size:2em
-}
-mark{
- color:#000;
- background:#ff0
-}
-small{
- font-size:80%
-}
-sub,sup{
- position:relative;
- font-size:75%;
- line-height:0;
- vertical-align:baseline
-}
-sup{
- top:-.5em
-}
-sub{
- bottom:-.25em
-}
-img{
- border:0
-}
-svg:not(:root){
- overflow:hidden
-}
-figure{
- margin:1em 40px
-}
-hr{
- height:0;
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box
-}
-pre{
- overflow:auto
-}
-code,kbd,pre,samp{
- font-family:monospace,monospace;
- font-size:1em
-}
-button,input,optgroup,select,textarea{
- margin:0;
- font:inherit;
- color:inherit
-}
-button{
- overflow:visible
-}
-button,select{
- text-transform:none
-}
-button,html input[type=button],input[type=reset],input[type=submit]{
- -webkit-appearance:button;
- cursor:pointer
-}
-button[disabled],html input[disabled]{
- cursor:default
-}
-button::-moz-focus-inner,input::-moz-focus-inner{
- padding:0;
- border:0
-}
-input{
- line-height:normal
-}
-input[type=checkbox],input[type=radio]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box;
- padding:0
-}
-input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{
- height:auto
-}
-input[type=search]{
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box;
- -webkit-appearance:textfield
-}
-input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{
- -webkit-appearance:none
-}
-fieldset{
- padding:.35em .625em .75em;
- margin:0 2px;
- border:1px solid silver
-}
-legend{
- padding:0;
- border:0
-}
-textarea{
- overflow:auto
-}
-optgroup{
- font-weight:700
-}
-table{
- border-spacing:0;
- border-collapse:collapse
-}
-td,th{
- padding:0
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print{
- *,:after,:before{
- color:#000!important;
- text-shadow:none!important;
- background:0 0!important;
- -webkit-box-shadow:none!important;
- box-shadow:none!important
- }
- a,a:visited{
- text-decoration:underline
- }
- a[href]:after{
- content:" (" attr(href) ")"
- }
- abbr[title]:after{
- content:" (" attr(title) ")"
- }
- a[href^="javascript:"]:after,a[href^="#"]:after{
- content:""
- }
- blockquote,pre{
- border:1px solid #999;
- page-break-inside:avoid
- }
- thead{
- display:table-header-group
- }
- img,tr{
- page-break-inside:avoid
- }
- img{
- max-width:100%!important
- }
- h2,h3,p{
- orphans:3;
- widows:3
- }
- h2,h3{
- page-break-after:avoid
- }
- .navbar{
- display:none
- }
- .btn>.caret,.dropup>.btn>.caret{
- border-top-color:#000!important
- }
- .label{
- border:1px solid #000
- }
- .table{
- border-collapse:collapse!important
- }
- .table td,.table th{
- background-color:#fff!important
- }
- .table-bordered td,.table-bordered th{
- border:1px solid #ddd!important
- }
-}
-@font-face{
- font-family:'Glyphicons Halflings';
- src:url(../fonts/glyphicons-halflings-regular.eot);
- src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')
-}
-.glyphicon{
- position:relative;
- top:1px;
- display:inline-block;
- font-family:'Glyphicons Halflings';
- font-style:normal;
- font-weight:400;
- line-height:1;
- -webkit-font-smoothing:antialiased;
- -moz-osx-font-smoothing:grayscale
-}
-.glyphicon-asterisk:before{
- content:"\002a"
-}
-.glyphicon-plus:before{
- content:"\002b"
-}
-.glyphicon-eur:before,.glyphicon-euro:before{
- content:"\20ac"
-}
-.glyphicon-minus:before{
- content:"\2212"
-}
-.glyphicon-cloud:before{
- content:"\2601"
-}
-.glyphicon-envelope:before{
- content:"\2709"
-}
-.glyphicon-pencil:before{
- content:"\270f"
-}
-.glyphicon-glass:before{
- content:"\e001"
-}
-.glyphicon-music:before{
- content:"\e002"
-}
-.glyphicon-search:before{
- content:"\e003"
-}
-.glyphicon-heart:before{
- content:"\e005"
-}
-.glyphicon-star:before{
- content:"\e006"
-}
-.glyphicon-star-empty:before{
- content:"\e007"
-}
-.glyphicon-user:before{
- content:"\e008"
-}
-.glyphicon-film:before{
- content:"\e009"
-}
-.glyphicon-th-large:before{
- content:"\e010"
-}
-.glyphicon-th:before{
- content:"\e011"
-}
-.glyphicon-th-list:before{
- content:"\e012"
-}
-.glyphicon-ok:before{
- content:"\e013"
-}
-.glyphicon-remove:before{
- content:"\e014"
-}
-.glyphicon-zoom-in:before{
- content:"\e015"
-}
-.glyphicon-zoom-out:before{
- content:"\e016"
-}
-.glyphicon-off:before{
- content:"\e017"
-}
-.glyphicon-signal:before{
- content:"\e018"
-}
-.glyphicon-cog:before{
- content:"\e019"
-}
-.glyphicon-trash:before{
- content:"\e020"
-}
-.glyphicon-home:before{
- content:"\e021"
-}
-.glyphicon-file:before{
- content:"\e022"
-}
-.glyphicon-time:before{
- content:"\e023"
-}
-.glyphicon-road:before{
- content:"\e024"
-}
-.glyphicon-download-alt:before{
- content:"\e025"
-}
-.glyphicon-download:before{
- content:"\e026"
-}
-.glyphicon-upload:before{
- content:"\e027"
-}
-.glyphicon-inbox:before{
- content:"\e028"
-}
-.glyphicon-play-circle:before{
- content:"\e029"
-}
-.glyphicon-repeat:before{
- content:"\e030"
-}
-.glyphicon-refresh:before{
- content:"\e031"
-}
-.glyphicon-list-alt:before{
- content:"\e032"
-}
-.glyphicon-lock:before{
- content:"\e033"
-}
-.glyphicon-flag:before{
- content:"\e034"
-}
-.glyphicon-headphones:before{
- content:"\e035"
-}
-.glyphicon-volume-off:before{
- content:"\e036"
-}
-.glyphicon-volume-down:before{
- content:"\e037"
-}
-.glyphicon-volume-up:before{
- content:"\e038"
-}
-.glyphicon-qrcode:before{
- content:"\e039"
-}
-.glyphicon-barcode:before{
- content:"\e040"
-}
-.glyphicon-tag:before{
- content:"\e041"
-}
-.glyphicon-tags:before{
- content:"\e042"
-}
-.glyphicon-book:before{
- content:"\e043"
-}
-.glyphicon-bookmark:before{
- content:"\e044"
-}
-.glyphicon-print:before{
- content:"\e045"
-}
-.glyphicon-camera:before{
- content:"\e046"
-}
-.glyphicon-font:before{
- content:"\e047"
-}
-.glyphicon-bold:before{
- content:"\e048"
-}
-.glyphicon-italic:before{
- content:"\e049"
-}
-.glyphicon-text-height:before{
- content:"\e050"
-}
-.glyphicon-text-width:before{
- content:"\e051"
-}
-.glyphicon-align-left:before{
- content:"\e052"
-}
-.glyphicon-align-center:before{
- content:"\e053"
-}
-.glyphicon-align-right:before{
- content:"\e054"
-}
-.glyphicon-align-justify:before{
- content:"\e055"
-}
-.glyphicon-list:before{
- content:"\e056"
-}
-.glyphicon-indent-left:before{
- content:"\e057"
-}
-.glyphicon-indent-right:before{
- content:"\e058"
-}
-.glyphicon-facetime-video:before{
- content:"\e059"
-}
-.glyphicon-picture:before{
- content:"\e060"
-}
-.glyphicon-map-marker:before{
- content:"\e062"
-}
-.glyphicon-adjust:before{
- content:"\e063"
-}
-.glyphicon-tint:before{
- content:"\e064"
-}
-.glyphicon-edit:before{
- content:"\e065"
-}
-.glyphicon-share:before{
- content:"\e066"
-}
-.glyphicon-check:before{
- content:"\e067"
-}
-.glyphicon-move:before{
- content:"\e068"
-}
-.glyphicon-step-backward:before{
- content:"\e069"
-}
-.glyphicon-fast-backward:before{
- content:"\e070"
-}
-.glyphicon-backward:before{
- content:"\e071"
-}
-.glyphicon-play:before{
- content:"\e072"
-}
-.glyphicon-pause:before{
- content:"\e073"
-}
-.glyphicon-stop:before{
- content:"\e074"
-}
-.glyphicon-forward:before{
- content:"\e075"
-}
-.glyphicon-fast-forward:before{
- content:"\e076"
-}
-.glyphicon-step-forward:before{
- content:"\e077"
-}
-.glyphicon-eject:before{
- content:"\e078"
-}
-.glyphicon-chevron-left:before{
- content:"\e079"
-}
-.glyphicon-chevron-right:before{
- content:"\e080"
-}
-.glyphicon-plus-sign:before{
- content:"\e081"
-}
-.glyphicon-minus-sign:before{
- content:"\e082"
-}
-.glyphicon-remove-sign:before{
- content:"\e083"
-}
-.glyphicon-ok-sign:before{
- content:"\e084"
-}
-.glyphicon-question-sign:before{
- content:"\e085"
-}
-.glyphicon-info-sign:before{
- content:"\e086"
-}
-.glyphicon-screenshot:before{
- content:"\e087"
-}
-.glyphicon-remove-circle:before{
- content:"\e088"
-}
-.glyphicon-ok-circle:before{
- content:"\e089"
-}
-.glyphicon-ban-circle:before{
- content:"\e090"
-}
-.glyphicon-arrow-left:before{
- content:"\e091"
-}
-.glyphicon-arrow-right:before{
- content:"\e092"
-}
-.glyphicon-arrow-up:before{
- content:"\e093"
-}
-.glyphicon-arrow-down:before{
- content:"\e094"
-}
-.glyphicon-share-alt:before{
- content:"\e095"
-}
-.glyphicon-resize-full:before{
- content:"\e096"
-}
-.glyphicon-resize-small:before{
- content:"\e097"
-}
-.glyphicon-exclamation-sign:before{
- content:"\e101"
-}
-.glyphicon-gift:before{
- content:"\e102"
-}
-.glyphicon-leaf:before{
- content:"\e103"
-}
-.glyphicon-fire:before{
- content:"\e104"
-}
-.glyphicon-eye-open:before{
- content:"\e105"
-}
-.glyphicon-eye-close:before{
- content:"\e106"
-}
-.glyphicon-warning-sign:before{
- content:"\e107"
-}
-.glyphicon-plane:before{
- content:"\e108"
-}
-.glyphicon-calendar:before{
- content:"\e109"
-}
-.glyphicon-random:before{
- content:"\e110"
-}
-.glyphicon-comment:before{
- content:"\e111"
-}
-.glyphicon-magnet:before{
- content:"\e112"
-}
-.glyphicon-chevron-up:before{
- content:"\e113"
-}
-.glyphicon-chevron-down:before{
- content:"\e114"
-}
-.glyphicon-retweet:before{
- content:"\e115"
-}
-.glyphicon-shopping-cart:before{
- content:"\e116"
-}
-.glyphicon-folder-close:before{
- content:"\e117"
-}
-.glyphicon-folder-open:before{
- content:"\e118"
-}
-.glyphicon-resize-vertical:before{
- content:"\e119"
-}
-.glyphicon-resize-horizontal:before{
- content:"\e120"
-}
-.glyphicon-hdd:before{
- content:"\e121"
-}
-.glyphicon-bullhorn:before{
- content:"\e122"
-}
-.glyphicon-bell:before{
- content:"\e123"
-}
-.glyphicon-certificate:before{
- content:"\e124"
-}
-.glyphicon-thumbs-up:before{
- content:"\e125"
-}
-.glyphicon-thumbs-down:before{
- content:"\e126"
-}
-.glyphicon-hand-right:before{
- content:"\e127"
-}
-.glyphicon-hand-left:before{
- content:"\e128"
-}
-.glyphicon-hand-up:before{
- content:"\e129"
-}
-.glyphicon-hand-down:before{
- content:"\e130"
-}
-.glyphicon-circle-arrow-right:before{
- content:"\e131"
-}
-.glyphicon-circle-arrow-left:before{
- content:"\e132"
-}
-.glyphicon-circle-arrow-up:before{
- content:"\e133"
-}
-.glyphicon-circle-arrow-down:before{
- content:"\e134"
-}
-.glyphicon-globe:before{
- content:"\e135"
-}
-.glyphicon-wrench:before{
- content:"\e136"
-}
-.glyphicon-tasks:before{
- content:"\e137"
-}
-.glyphicon-filter:before{
- content:"\e138"
-}
-.glyphicon-briefcase:before{
- content:"\e139"
-}
-.glyphicon-fullscreen:before{
- content:"\e140"
-}
-.glyphicon-dashboard:before{
- content:"\e141"
-}
-.glyphicon-paperclip:before{
- content:"\e142"
-}
-.glyphicon-heart-empty:before{
- content:"\e143"
-}
-.glyphicon-link:before{
- content:"\e144"
-}
-.glyphicon-phone:before{
- content:"\e145"
-}
-.glyphicon-pushpin:before{
- content:"\e146"
-}
-.glyphicon-usd:before{
- content:"\e148"
-}
-.glyphicon-gbp:before{
- content:"\e149"
-}
-.glyphicon-sort:before{
- content:"\e150"
-}
-.glyphicon-sort-by-alphabet:before{
- content:"\e151"
-}
-.glyphicon-sort-by-alphabet-alt:before{
- content:"\e152"
-}
-.glyphicon-sort-by-order:before{
- content:"\e153"
-}
-.glyphicon-sort-by-order-alt:before{
- content:"\e154"
-}
-.glyphicon-sort-by-attributes:before{
- content:"\e155"
-}
-.glyphicon-sort-by-attributes-alt:before{
- content:"\e156"
-}
-.glyphicon-unchecked:before{
- content:"\e157"
-}
-.glyphicon-expand:before{
- content:"\e158"
-}
-.glyphicon-collapse-down:before{
- content:"\e159"
-}
-.glyphicon-collapse-up:before{
- content:"\e160"
-}
-.glyphicon-log-in:before{
- content:"\e161"
-}
-.glyphicon-flash:before{
- content:"\e162"
-}
-.glyphicon-log-out:before{
- content:"\e163"
-}
-.glyphicon-new-window:before{
- content:"\e164"
-}
-.glyphicon-record:before{
- content:"\e165"
-}
-.glyphicon-save:before{
- content:"\e166"
-}
-.glyphicon-open:before{
- content:"\e167"
-}
-.glyphicon-saved:before{
- content:"\e168"
-}
-.glyphicon-import:before{
- content:"\e169"
-}
-.glyphicon-export:before{
- content:"\e170"
-}
-.glyphicon-send:before{
- content:"\e171"
-}
-.glyphicon-floppy-disk:before{
- content:"\e172"
-}
-.glyphicon-floppy-saved:before{
- content:"\e173"
-}
-.glyphicon-floppy-remove:before{
- content:"\e174"
-}
-.glyphicon-floppy-save:before{
- content:"\e175"
-}
-.glyphicon-floppy-open:before{
- content:"\e176"
-}
-.glyphicon-credit-card:before{
- content:"\e177"
-}
-.glyphicon-transfer:before{
- content:"\e178"
-}
-.glyphicon-cutlery:before{
- content:"\e179"
-}
-.glyphicon-header:before{
- content:"\e180"
-}
-.glyphicon-compressed:before{
- content:"\e181"
-}
-.glyphicon-earphone:before{
- content:"\e182"
-}
-.glyphicon-phone-alt:before{
- content:"\e183"
-}
-.glyphicon-tower:before{
- content:"\e184"
-}
-.glyphicon-stats:before{
- content:"\e185"
-}
-.glyphicon-sd-video:before{
- content:"\e186"
-}
-.glyphicon-hd-video:before{
- content:"\e187"
-}
-.glyphicon-subtitles:before{
- content:"\e188"
-}
-.glyphicon-sound-stereo:before{
- content:"\e189"
-}
-.glyphicon-sound-dolby:before{
- content:"\e190"
-}
-.glyphicon-sound-5-1:before{
- content:"\e191"
-}
-.glyphicon-sound-6-1:before{
- content:"\e192"
-}
-.glyphicon-sound-7-1:before{
- content:"\e193"
-}
-.glyphicon-copyright-mark:before{
- content:"\e194"
-}
-.glyphicon-registration-mark:before{
- content:"\e195"
-}
-.glyphicon-cloud-download:before{
- content:"\e197"
-}
-.glyphicon-cloud-upload:before{
- content:"\e198"
-}
-.glyphicon-tree-conifer:before{
- content:"\e199"
-}
-.glyphicon-tree-deciduous:before{
- content:"\e200"
-}
-.glyphicon-cd:before{
- content:"\e201"
-}
-.glyphicon-save-file:before{
- content:"\e202"
-}
-.glyphicon-open-file:before{
- content:"\e203"
-}
-.glyphicon-level-up:before{
- content:"\e204"
-}
-.glyphicon-copy:before{
- content:"\e205"
-}
-.glyphicon-paste:before{
- content:"\e206"
-}
-.glyphicon-alert:before{
- content:"\e209"
-}
-.glyphicon-equalizer:before{
- content:"\e210"
-}
-.glyphicon-king:before{
- content:"\e211"
-}
-.glyphicon-queen:before{
- content:"\e212"
-}
-.glyphicon-pawn:before{
- content:"\e213"
-}
-.glyphicon-bishop:before{
- content:"\e214"
-}
-.glyphicon-knight:before{
- content:"\e215"
-}
-.glyphicon-baby-formula:before{
- content:"\e216"
-}
-.glyphicon-tent:before{
- content:"\26fa"
-}
-.glyphicon-blackboard:before{
- content:"\e218"
-}
-.glyphicon-bed:before{
- content:"\e219"
-}
-.glyphicon-apple:before{
- content:"\f8ff"
-}
-.glyphicon-erase:before{
- content:"\e221"
-}
-.glyphicon-hourglass:before{
- content:"\231b"
-}
-.glyphicon-lamp:before{
- content:"\e223"
-}
-.glyphicon-duplicate:before{
- content:"\e224"
-}
-.glyphicon-piggy-bank:before{
- content:"\e225"
-}
-.glyphicon-scissors:before{
- content:"\e226"
-}
-.glyphicon-bitcoin:before{
- content:"\e227"
-}
-.glyphicon-btc:before{
- content:"\e227"
-}
-.glyphicon-xbt:before{
- content:"\e227"
-}
-.glyphicon-yen:before{
- content:"\00a5"
-}
-.glyphicon-jpy:before{
- content:"\00a5"
-}
-.glyphicon-ruble:before{
- content:"\20bd"
-}
-.glyphicon-rub:before{
- content:"\20bd"
-}
-.glyphicon-scale:before{
- content:"\e230"
-}
-.glyphicon-ice-lolly:before{
- content:"\e231"
-}
-.glyphicon-ice-lolly-tasted:before{
- content:"\e232"
-}
-.glyphicon-education:before{
- content:"\e233"
-}
-.glyphicon-option-horizontal:before{
- content:"\e234"
-}
-.glyphicon-option-vertical:before{
- content:"\e235"
-}
-.glyphicon-menu-hamburger:before{
- content:"\e236"
-}
-.glyphicon-modal-window:before{
- content:"\e237"
-}
-.glyphicon-oil:before{
- content:"\e238"
-}
-.glyphicon-grain:before{
- content:"\e239"
-}
-.glyphicon-sunglasses:before{
- content:"\e240"
-}
-.glyphicon-text-size:before{
- content:"\e241"
-}
-.glyphicon-text-color:before{
- content:"\e242"
-}
-.glyphicon-text-background:before{
- content:"\e243"
-}
-.glyphicon-object-align-top:before{
- content:"\e244"
-}
-.glyphicon-object-align-bottom:before{
- content:"\e245"
-}
-.glyphicon-object-align-horizontal:before{
- content:"\e246"
-}
-.glyphicon-object-align-left:before{
- content:"\e247"
-}
-.glyphicon-object-align-vertical:before{
- content:"\e248"
-}
-.glyphicon-object-align-right:before{
- content:"\e249"
-}
-.glyphicon-triangle-right:before{
- content:"\e250"
-}
-.glyphicon-triangle-left:before{
- content:"\e251"
-}
-.glyphicon-triangle-bottom:before{
- content:"\e252"
-}
-.glyphicon-triangle-top:before{
- content:"\e253"
-}
-.glyphicon-console:before{
- content:"\e254"
-}
-.glyphicon-superscript:before{
- content:"\e255"
-}
-.glyphicon-subscript:before{
- content:"\e256"
-}
-.glyphicon-menu-left:before{
- content:"\e257"
-}
-.glyphicon-menu-right:before{
- content:"\e258"
-}
-.glyphicon-menu-down:before{
- content:"\e259"
-}
-.glyphicon-menu-up:before{
- content:"\e260"
-}
-*{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-:after,:before{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-html{
- font-size:10px;
- -webkit-tap-highlight-color:rgba(0,0,0,0)
-}
-body{
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- line-height:1.42857143;
- color:#333;
- background-color:#fff
-}
-button,input,select,textarea{
- font-family:inherit;
- font-size:inherit;
- line-height:inherit
-}
-a{
- color:#337ab7;
- text-decoration:none
-}
-a:focus,a:hover{
- color:#23527c;
- text-decoration:underline
-}
-a:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-figure{
- margin:0
-}
-img{
- vertical-align:middle
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{
- display:block;
- max-width:100%;
- height:auto
-}
-.img-rounded{
- border-radius:6px
-}
-.img-thumbnail{
- display:inline-block;
- max-width:100%;
- height:auto;
- padding:4px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:all .2s ease-in-out;
- -o-transition:all .2s ease-in-out;
- transition:all .2s ease-in-out
-}
-.img-circle{
- border-radius:50%
-}
-hr{
- margin-top:20px;
- margin-bottom:20px;
- border:0;
- border-top:1px solid #eee
-}
-.sr-only{
- position:absolute;
- width:1px;
- height:1px;
- padding:0;
- margin:-1px;
- overflow:hidden;
- clip:rect(0,0,0,0);
- border:0
-}
-.sr-only-focusable:active,.sr-only-focusable:focus{
- position:static;
- width:auto;
- height:auto;
- margin:0;
- overflow:visible;
- clip:auto
-}
-[role=button]{
- cursor:pointer
-}
-.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{
- font-family:inherit;
- font-weight:500;
- line-height:1.1;
- color:inherit
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-weight:400;
- line-height:1;
- color:#777
-}
-.h1,.h2,.h3,h1,h2,h3{
- margin-top:20px;
- margin-bottom:10px
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{
- font-size:65%
-}
-.h4,.h5,.h6,h4,h5,h6{
- margin-top:10px;
- margin-bottom:10px
-}
-.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-size:75%
-}
-.h1,h1{
- font-size:36px
-}
-.h2,h2{
- font-size:30px
-}
-.h3,h3{
- font-size:24px
-}
-.h4,h4{
- font-size:18px
-}
-.h5,h5{
- font-size:14px
-}
-.h6,h6{
- font-size:12px
-}
-p{
- margin:0 0 10px
-}
-.lead{
- margin-bottom:20px;
- font-size:16px;
- font-weight:300;
- line-height:1.4
-}
-@media (min-width:768px){
- .lead{
- font-size:21px
- }
-}
-.small,small{
- font-size:85%
-}
-.mark,mark{
- padding:.2em;
- background-color:#fcf8e3
-}
-.text-left{
- text-align:left
-}
-.text-right{
- text-align:right
-}
-.text-center{
- text-align:center
-}
-.text-justify{
- text-align:justify
-}
-.text-nowrap{
- white-space:nowrap
-}
-.text-lowercase{
- text-transform:lowercase
-}
-.text-uppercase{
- text-transform:uppercase
-}
-.text-capitalize{
- text-transform:capitalize
-}
-.text-muted{
- color:#777
-}
-.text-primary{
- color:#337ab7
-}
-a.text-primary:focus,a.text-primary:hover{
- color:#286090
-}
-.text-success{
- color:#3c763d
-}
-a.text-success:focus,a.text-success:hover{
- color:#2b542c
-}
-.text-info{
- color:#31708f
-}
-a.text-info:focus,a.text-info:hover{
- color:#245269
-}
-.text-warning{
- color:#8a6d3b
-}
-a.text-warning:focus,a.text-warning:hover{
- color:#66512c
-}
-.text-danger{
- color:#a94442
-}
-a.text-danger:focus,a.text-danger:hover{
- color:#843534
-}
-.bg-primary{
- color:#fff;
- background-color:#337ab7
-}
-a.bg-primary:focus,a.bg-primary:hover{
- background-color:#286090
-}
-.bg-success{
- background-color:#dff0d8
-}
-a.bg-success:focus,a.bg-success:hover{
- background-color:#c1e2b3
-}
-.bg-info{
- background-color:#d9edf7
-}
-a.bg-info:focus,a.bg-info:hover{
- background-color:#afd9ee
-}
-.bg-warning{
- background-color:#fcf8e3
-}
-a.bg-warning:focus,a.bg-warning:hover{
- background-color:#f7ecb5
-}
-.bg-danger{
- background-color:#f2dede
-}
-a.bg-danger:focus,a.bg-danger:hover{
- background-color:#e4b9b9
-}
-.page-header{
- padding-bottom:9px;
- margin:40px 0 20px;
- border-bottom:1px solid #eee
-}
-ol,ul{
- margin-top:0;
- margin-bottom:10px
-}
-ol ol,ol ul,ul ol,ul ul{
- margin-bottom:0
-}
-.list-unstyled{
- padding-left:0;
- list-style:none
-}
-.list-inline{
- padding-left:0;
- margin-left:-5px;
- list-style:none
-}
-.list-inline>li{
- display:inline-block;
- padding-right:5px;
- padding-left:5px
-}
-dl{
- margin-top:0;
- margin-bottom:20px
-}
-dd,dt{
- line-height:1.42857143
-}
-dt{
- font-weight:700
-}
-dd{
- margin-left:0
-}
-@media (min-width:768px){
- .dl-horizontal dt{
- float:left;
- width:160px;
- overflow:hidden;
- clear:left;
- text-align:right;
- text-overflow:ellipsis;
- white-space:nowrap
- }
- .dl-horizontal dd{
- margin-left:180px
- }
-}
-abbr[data-original-title],abbr[title]{
- cursor:help;
- border-bottom:1px dotted #777
-}
-.initialism{
- font-size:90%;
- text-transform:uppercase
-}
-blockquote{
- padding:10px 20px;
- margin:0 0 20px;
- font-size:17.5px;
- border-left:5px solid #eee
-}
-blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{
- margin-bottom:0
-}
-blockquote .small,blockquote footer,blockquote small{
- display:block;
- font-size:80%;
- line-height:1.42857143;
- color:#777
-}
-blockquote .small:before,blockquote footer:before,blockquote small:before{
- content:'\2014 \00A0'
-}
-.blockquote-reverse,blockquote.pull-right{
- padding-right:15px;
- padding-left:0;
- text-align:right;
- border-right:5px solid #eee;
- border-left:0
-}
-.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{
- content:''
-}
-.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{
- content:'\00A0 \2014'
-}
-address{
- margin-bottom:20px;
- font-style:normal;
- line-height:1.42857143
-}
-code,kbd,pre,samp{
- font-family:Menlo,Monaco,Consolas,"Courier New",monospace
-}
-code{
- padding:2px 4px;
- font-size:90%;
- color:#c7254e;
- background-color:#f9f2f4;
- border-radius:4px
-}
-kbd{
- padding:2px 4px;
- font-size:90%;
- color:#fff;
- background-color:#333;
- border-radius:3px;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)
-}
-kbd kbd{
- padding:0;
- font-size:100%;
- font-weight:700;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-pre{
- display:block;
- padding:9.5px;
- margin:0 0 10px;
- font-size:13px;
- line-height:1.42857143;
- color:#333;
- word-break:break-all;
- word-wrap:break-word;
- background-color:#f5f5f5;
- border:1px solid #ccc;
- border-radius:4px
-}
-pre code{
- padding:0;
- font-size:inherit;
- color:inherit;
- white-space:pre-wrap;
- background-color:transparent;
- border-radius:0
-}
-.pre-scrollable{
- max-height:340px;
- overflow-y:scroll
-}
-.container{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-@media (min-width:768px){
- .container{
- width:750px
- }
-}
-@media (min-width:992px){
- .container{
- width:970px
- }
-}
-@media (min-width:1200px){
- .container{
- width:1170px
- }
-}
-.container-fluid{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-.row{
- margin-right:-15px;
- margin-left:-15px
-}
-.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- position:relative;
- min-height:1px;
- padding-right:15px;
- padding-left:15px
-}
-.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- float:left
-}
-.col-xs-12{
- width:100%
-}
-.col-xs-11{
- width:91.66666667%
-}
-.col-xs-10{
- width:83.33333333%
-}
-.col-xs-9{
- width:75%
-}
-.col-xs-8{
- width:66.66666667%
-}
-.col-xs-7{
- width:58.33333333%
-}
-.col-xs-6{
- width:50%
-}
-.col-xs-5{
- width:41.66666667%
-}
-.col-xs-4{
- width:33.33333333%
-}
-.col-xs-3{
- width:25%
-}
-.col-xs-2{
- width:16.66666667%
-}
-.col-xs-1{
- width:8.33333333%
-}
-.col-xs-pull-12{
- right:100%
-}
-.col-xs-pull-11{
- right:91.66666667%
-}
-.col-xs-pull-10{
- right:83.33333333%
-}
-.col-xs-pull-9{
- right:75%
-}
-.col-xs-pull-8{
- right:66.66666667%
-}
-.col-xs-pull-7{
- right:58.33333333%
-}
-.col-xs-pull-6{
- right:50%
-}
-.col-xs-pull-5{
- right:41.66666667%
-}
-.col-xs-pull-4{
- right:33.33333333%
-}
-.col-xs-pull-3{
- right:25%
-}
-.col-xs-pull-2{
- right:16.66666667%
-}
-.col-xs-pull-1{
- right:8.33333333%
-}
-.col-xs-pull-0{
- right:auto
-}
-.col-xs-push-12{
- left:100%
-}
-.col-xs-push-11{
- left:91.66666667%
-}
-.col-xs-push-10{
- left:83.33333333%
-}
-.col-xs-push-9{
- left:75%
-}
-.col-xs-push-8{
- left:66.66666667%
-}
-.col-xs-push-7{
- left:58.33333333%
-}
-.col-xs-push-6{
- left:50%
-}
-.col-xs-push-5{
- left:41.66666667%
-}
-.col-xs-push-4{
- left:33.33333333%
-}
-.col-xs-push-3{
- left:25%
-}
-.col-xs-push-2{
- left:16.66666667%
-}
-.col-xs-push-1{
- left:8.33333333%
-}
-.col-xs-push-0{
- left:auto
-}
-.col-xs-offset-12{
- margin-left:100%
-}
-.col-xs-offset-11{
- margin-left:91.66666667%
-}
-.col-xs-offset-10{
- margin-left:83.33333333%
-}
-.col-xs-offset-9{
- margin-left:75%
-}
-.col-xs-offset-8{
- margin-left:66.66666667%
-}
-.col-xs-offset-7{
- margin-left:58.33333333%
-}
-.col-xs-offset-6{
- margin-left:50%
-}
-.col-xs-offset-5{
- margin-left:41.66666667%
-}
-.col-xs-offset-4{
- margin-left:33.33333333%
-}
-.col-xs-offset-3{
- margin-left:25%
-}
-.col-xs-offset-2{
- margin-left:16.66666667%
-}
-.col-xs-offset-1{
- margin-left:8.33333333%
-}
-.col-xs-offset-0{
- margin-left:0
-}
-@media (min-width:768px){
- .col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{
- float:left
- }
- .col-sm-12{
- width:100%
- }
- .col-sm-11{
- width:91.66666667%
- }
- .col-sm-10{
- width:83.33333333%
- }
- .col-sm-9{
- width:75%
- }
- .col-sm-8{
- width:66.66666667%
- }
- .col-sm-7{
- width:58.33333333%
- }
- .col-sm-6{
- width:50%
- }
- .col-sm-5{
- width:41.66666667%
- }
- .col-sm-4{
- width:33.33333333%
- }
- .col-sm-3{
- width:25%
- }
- .col-sm-2{
- width:16.66666667%
- }
- .col-sm-1{
- width:8.33333333%
- }
- .col-sm-pull-12{
- right:100%
- }
- .col-sm-pull-11{
- right:91.66666667%
- }
- .col-sm-pull-10{
- right:83.33333333%
- }
- .col-sm-pull-9{
- right:75%
- }
- .col-sm-pull-8{
- right:66.66666667%
- }
- .col-sm-pull-7{
- right:58.33333333%
- }
- .col-sm-pull-6{
- right:50%
- }
- .col-sm-pull-5{
- right:41.66666667%
- }
- .col-sm-pull-4{
- right:33.33333333%
- }
- .col-sm-pull-3{
- right:25%
- }
- .col-sm-pull-2{
- right:16.66666667%
- }
- .col-sm-pull-1{
- right:8.33333333%
- }
- .col-sm-pull-0{
- right:auto
- }
- .col-sm-push-12{
- left:100%
- }
- .col-sm-push-11{
- left:91.66666667%
- }
- .col-sm-push-10{
- left:83.33333333%
- }
- .col-sm-push-9{
- left:75%
- }
- .col-sm-push-8{
- left:66.66666667%
- }
- .col-sm-push-7{
- left:58.33333333%
- }
- .col-sm-push-6{
- left:50%
- }
- .col-sm-push-5{
- left:41.66666667%
- }
- .col-sm-push-4{
- left:33.33333333%
- }
- .col-sm-push-3{
- left:25%
- }
- .col-sm-push-2{
- left:16.66666667%
- }
- .col-sm-push-1{
- left:8.33333333%
- }
- .col-sm-push-0{
- left:auto
- }
- .col-sm-offset-12{
- margin-left:100%
- }
- .col-sm-offset-11{
- margin-left:91.66666667%
- }
- .col-sm-offset-10{
- margin-left:83.33333333%
- }
- .col-sm-offset-9{
- margin-left:75%
- }
- .col-sm-offset-8{
- margin-left:66.66666667%
- }
- .col-sm-offset-7{
- margin-left:58.33333333%
- }
- .col-sm-offset-6{
- margin-left:50%
- }
- .col-sm-offset-5{
- margin-left:41.66666667%
- }
- .col-sm-offset-4{
- margin-left:33.33333333%
- }
- .col-sm-offset-3{
- margin-left:25%
- }
- .col-sm-offset-2{
- margin-left:16.66666667%
- }
- .col-sm-offset-1{
- margin-left:8.33333333%
- }
- .col-sm-offset-0{
- margin-left:0
- }
-}
-@media (min-width:992px){
- .col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{
- float:left
- }
- .col-md-12{
- width:100%
- }
- .col-md-11{
- width:91.66666667%
- }
- .col-md-10{
- width:83.33333333%
- }
- .col-md-9{
- width:75%
- }
- .col-md-8{
- width:66.66666667%
- }
- .col-md-7{
- width:58.33333333%
- }
- .col-md-6{
- width:50%
- }
- .col-md-5{
- width:41.66666667%
- }
- .col-md-4{
- width:33.33333333%
- }
- .col-md-3{
- width:25%
- }
- .col-md-2{
- width:16.66666667%
- }
- .col-md-1{
- width:8.33333333%
- }
- .col-md-pull-12{
- right:100%
- }
- .col-md-pull-11{
- right:91.66666667%
- }
- .col-md-pull-10{
- right:83.33333333%
- }
- .col-md-pull-9{
- right:75%
- }
- .col-md-pull-8{
- right:66.66666667%
- }
- .col-md-pull-7{
- right:58.33333333%
- }
- .col-md-pull-6{
- right:50%
- }
- .col-md-pull-5{
- right:41.66666667%
- }
- .col-md-pull-4{
- right:33.33333333%
- }
- .col-md-pull-3{
- right:25%
- }
- .col-md-pull-2{
- right:16.66666667%
- }
- .col-md-pull-1{
- right:8.33333333%
- }
- .col-md-pull-0{
- right:auto
- }
- .col-md-push-12{
- left:100%
- }
- .col-md-push-11{
- left:91.66666667%
- }
- .col-md-push-10{
- left:83.33333333%
- }
- .col-md-push-9{
- left:75%
- }
- .col-md-push-8{
- left:66.66666667%
- }
- .col-md-push-7{
- left:58.33333333%
- }
- .col-md-push-6{
- left:50%
- }
- .col-md-push-5{
- left:41.66666667%
- }
- .col-md-push-4{
- left:33.33333333%
- }
- .col-md-push-3{
- left:25%
- }
- .col-md-push-2{
- left:16.66666667%
- }
- .col-md-push-1{
- left:8.33333333%
- }
- .col-md-push-0{
- left:auto
- }
- .col-md-offset-12{
- margin-left:100%
- }
- .col-md-offset-11{
- margin-left:91.66666667%
- }
- .col-md-offset-10{
- margin-left:83.33333333%
- }
- .col-md-offset-9{
- margin-left:75%
- }
- .col-md-offset-8{
- margin-left:66.66666667%
- }
- .col-md-offset-7{
- margin-left:58.33333333%
- }
- .col-md-offset-6{
- margin-left:50%
- }
- .col-md-offset-5{
- margin-left:41.66666667%
- }
- .col-md-offset-4{
- margin-left:33.33333333%
- }
- .col-md-offset-3{
- margin-left:25%
- }
- .col-md-offset-2{
- margin-left:16.66666667%
- }
- .col-md-offset-1{
- margin-left:8.33333333%
- }
- .col-md-offset-0{
- margin-left:0
- }
-}
-@media (min-width:1200px){
- .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{
- float:left
- }
- .col-lg-12{
- width:100%
- }
- .col-lg-11{
- width:91.66666667%
- }
- .col-lg-10{
- width:83.33333333%
- }
- .col-lg-9{
- width:75%
- }
- .col-lg-8{
- width:66.66666667%
- }
- .col-lg-7{
- width:58.33333333%
- }
- .col-lg-6{
- width:50%
- }
- .col-lg-5{
- width:41.66666667%
- }
- .col-lg-4{
- width:33.33333333%
- }
- .col-lg-3{
- width:25%
- }
- .col-lg-2{
- width:16.66666667%
- }
- .col-lg-1{
- width:8.33333333%
- }
- .col-lg-pull-12{
- right:100%
- }
- .col-lg-pull-11{
- right:91.66666667%
- }
- .col-lg-pull-10{
- right:83.33333333%
- }
- .col-lg-pull-9{
- right:75%
- }
- .col-lg-pull-8{
- right:66.66666667%
- }
- .col-lg-pull-7{
- right:58.33333333%
- }
- .col-lg-pull-6{
- right:50%
- }
- .col-lg-pull-5{
- right:41.66666667%
- }
- .col-lg-pull-4{
- right:33.33333333%
- }
- .col-lg-pull-3{
- right:25%
- }
- .col-lg-pull-2{
- right:16.66666667%
- }
- .col-lg-pull-1{
- right:8.33333333%
- }
- .col-lg-pull-0{
- right:auto
- }
- .col-lg-push-12{
- left:100%
- }
- .col-lg-push-11{
- left:91.66666667%
- }
- .col-lg-push-10{
- left:83.33333333%
- }
- .col-lg-push-9{
- left:75%
- }
- .col-lg-push-8{
- left:66.66666667%
- }
- .col-lg-push-7{
- left:58.33333333%
- }
- .col-lg-push-6{
- left:50%
- }
- .col-lg-push-5{
- left:41.66666667%
- }
- .col-lg-push-4{
- left:33.33333333%
- }
- .col-lg-push-3{
- left:25%
- }
- .col-lg-push-2{
- left:16.66666667%
- }
- .col-lg-push-1{
- left:8.33333333%
- }
- .col-lg-push-0{
- left:auto
- }
- .col-lg-offset-12{
- margin-left:100%
- }
- .col-lg-offset-11{
- margin-left:91.66666667%
- }
- .col-lg-offset-10{
- margin-left:83.33333333%
- }
- .col-lg-offset-9{
- margin-left:75%
- }
- .col-lg-offset-8{
- margin-left:66.66666667%
- }
- .col-lg-offset-7{
- margin-left:58.33333333%
- }
- .col-lg-offset-6{
- margin-left:50%
- }
- .col-lg-offset-5{
- margin-left:41.66666667%
- }
- .col-lg-offset-4{
- margin-left:33.33333333%
- }
- .col-lg-offset-3{
- margin-left:25%
- }
- .col-lg-offset-2{
- margin-left:16.66666667%
- }
- .col-lg-offset-1{
- margin-left:8.33333333%
- }
- .col-lg-offset-0{
- margin-left:0
- }
-}
-table{
- background-color:transparent
-}
-caption{
- padding-top:8px;
- padding-bottom:8px;
- color:#777;
- text-align:left
-}
-th{
- text-align:left
-}
-.table{
- width:100%;
- max-width:100%;
- margin-bottom:20px
-}
-.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{
- padding:8px;
- line-height:1.42857143;
- vertical-align:top;
- border-top:1px solid #ddd
-}
-.table>thead>tr>th{
- vertical-align:bottom;
- border-bottom:2px solid #ddd
-}
-.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{
- border-top:0
-}
-.table>tbody+tbody{
- border-top:2px solid #ddd
-}
-.table .table{
- background-color:#fff
-}
-.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{
- padding:5px
-}
-.table-bordered{
- border:1px solid #ddd
-}
-.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border:1px solid #ddd
-}
-.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border-bottom-width:2px
-}
-.table-striped>tbody>tr:nth-of-type(odd){
- background-color:#f9f9f9
-}
-.table-hover>tbody>tr:hover{
- background-color:#f5f5f5
-}
-table col[class*=col-]{
- position:static;
- display:table-column;
- float:none
-}
-table td[class*=col-],table th[class*=col-]{
- position:static;
- display:table-cell;
- float:none
-}
-.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{
- background-color:#f5f5f5
-}
-.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{
- background-color:#e8e8e8
-}
-.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{
- background-color:#dff0d8
-}
-.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{
- background-color:#d0e9c6
-}
-.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{
- background-color:#d9edf7
-}
-.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{
- background-color:#c4e3f3
-}
-.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{
- background-color:#fcf8e3
-}
-.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{
- background-color:#faf2cc
-}
-.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{
- background-color:#f2dede
-}
-.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{
- background-color:#ebcccc
-}
-.table-responsive{
- min-height:.01%;
- overflow-x:auto
-}
-@media screen and (max-width:767px){
- .table-responsive{
- width:100%;
- margin-bottom:15px;
- overflow-y:hidden;
- -ms-overflow-style:-ms-autohiding-scrollbar;
- border:1px solid #ddd
- }
- .table-responsive>.table{
- margin-bottom:0
- }
- .table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{
- white-space:nowrap
- }
- .table-responsive>.table-bordered{
- border:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
- }
- .table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
- }
-}
-fieldset{
- min-width:0;
- padding:0;
- margin:0;
- border:0
-}
-legend{
- display:block;
- width:100%;
- padding:0;
- margin-bottom:20px;
- font-size:21px;
- line-height:inherit;
- color:#333;
- border:0;
- border-bottom:1px solid #e5e5e5
-}
-label{
- display:inline-block;
- max-width:100%;
- margin-bottom:5px;
- font-weight:700
-}
-input[type=search]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-input[type=checkbox],input[type=radio]{
- margin:4px 0 0;
- margin-top:1px\9;
- line-height:normal
-}
-input[type=file]{
- display:block
-}
-input[type=range]{
- display:block;
- width:100%
-}
-select[multiple],select[size]{
- height:auto
-}
-input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-output{
- display:block;
- padding-top:7px;
- font-size:14px;
- line-height:1.42857143;
- color:#555
-}
-.form-control{
- display:block;
- width:100%;
- height:34px;
- padding:6px 12px;
- font-size:14px;
- line-height:1.42857143;
- color:#555;
- background-color:#fff;
- background-image:none;
- border:1px solid #ccc;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- -webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
- -o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;
- transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s
-}
-.form-control:focus{
- border-color:#66afe9;
- outline:0;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)
-}
-.form-control::-moz-placeholder{
- color:#999;
- opacity:1
-}
-.form-control:-ms-input-placeholder{
- color:#999
-}
-.form-control::-webkit-input-placeholder{
- color:#999
-}
-.form-control::-ms-expand{
- background-color:transparent;
- border:0
-}
-.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{
- background-color:#eee;
- opacity:1
-}
-.form-control[disabled],fieldset[disabled] .form-control{
- cursor:not-allowed
-}
-textarea.form-control{
- height:auto
-}
-input[type=search]{
- -webkit-appearance:none
-}
-@media screen and (-webkit-min-device-pixel-ratio:0){
- input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{
- line-height:34px
- }
- .input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{
- line-height:30px
- }
- .input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{
- line-height:46px
- }
-}
-.form-group{
- margin-bottom:15px
-}
-.checkbox,.radio{
- position:relative;
- display:block;
- margin-top:10px;
- margin-bottom:10px
-}
-.checkbox label,.radio label{
- min-height:20px;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- cursor:pointer
-}
-.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{
- position:absolute;
- margin-top:4px\9;
- margin-left:-20px
-}
-.checkbox+.checkbox,.radio+.radio{
- margin-top:-5px
-}
-.checkbox-inline,.radio-inline{
- position:relative;
- display:inline-block;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- vertical-align:middle;
- cursor:pointer
-}
-.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{
- margin-top:0;
- margin-left:10px
-}
-fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{
- cursor:not-allowed
-}
-.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{
- cursor:not-allowed
-}
-.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{
- cursor:not-allowed
-}
-.form-control-static{
- min-height:34px;
- padding-top:7px;
- padding-bottom:7px;
- margin-bottom:0
-}
-.form-control-static.input-lg,.form-control-static.input-sm{
- padding-right:0;
- padding-left:0
-}
-.input-sm{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-sm{
- height:30px;
- line-height:30px
-}
-select[multiple].input-sm,textarea.input-sm{
- height:auto
-}
-.form-group-sm .form-control{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.form-group-sm select.form-control{
- height:30px;
- line-height:30px
-}
-.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{
- height:auto
-}
-.form-group-sm .form-control-static{
- height:30px;
- min-height:32px;
- padding:6px 10px;
- font-size:12px;
- line-height:1.5
-}
-.input-lg{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-lg{
- height:46px;
- line-height:46px
-}
-select[multiple].input-lg,textarea.input-lg{
- height:auto
-}
-.form-group-lg .form-control{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.form-group-lg select.form-control{
- height:46px;
- line-height:46px
-}
-.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{
- height:auto
-}
-.form-group-lg .form-control-static{
- height:46px;
- min-height:38px;
- padding:11px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.has-feedback{
- position:relative
-}
-.has-feedback .form-control{
- padding-right:42.5px
-}
-.form-control-feedback{
- position:absolute;
- top:0;
- right:0;
- z-index:2;
- display:block;
- width:34px;
- height:34px;
- line-height:34px;
- text-align:center;
- pointer-events:none
-}
-.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{
- width:46px;
- height:46px;
- line-height:46px
-}
-.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{
- width:30px;
- height:30px;
- line-height:30px
-}
-.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{
- color:#3c763d
-}
-.has-success .form-control{
- border-color:#3c763d;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-success .form-control:focus{
- border-color:#2b542c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168
-}
-.has-success .input-group-addon{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#3c763d
-}
-.has-success .form-control-feedback{
- color:#3c763d
-}
-.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{
- color:#8a6d3b
-}
-.has-warning .form-control{
- border-color:#8a6d3b;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-warning .form-control:focus{
- border-color:#66512c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b
-}
-.has-warning .input-group-addon{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#8a6d3b
-}
-.has-warning .form-control-feedback{
- color:#8a6d3b
-}
-.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{
- color:#a94442
-}
-.has-error .form-control{
- border-color:#a94442;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-error .form-control:focus{
- border-color:#843534;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483
-}
-.has-error .input-group-addon{
- color:#a94442;
- background-color:#f2dede;
- border-color:#a94442
-}
-.has-error .form-control-feedback{
- color:#a94442
-}
-.has-feedback label~.form-control-feedback{
- top:25px
-}
-.has-feedback label.sr-only~.form-control-feedback{
- top:0
-}
-.help-block{
- display:block;
- margin-top:5px;
- margin-bottom:10px;
- color:#737373
-}
-@media (min-width:768px){
- .form-inline .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .form-inline .form-control-static{
- display:inline-block
- }
- .form-inline .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{
- width:auto
- }
- .form-inline .input-group>.form-control{
- width:100%
- }
- .form-inline .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox,.form-inline .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox label,.form-inline .radio label{
- padding-left:0
- }
- .form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .form-inline .has-feedback .form-control-feedback{
- top:0
- }
-}
-.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{
- padding-top:7px;
- margin-top:0;
- margin-bottom:0
-}
-.form-horizontal .checkbox,.form-horizontal .radio{
- min-height:27px
-}
-.form-horizontal .form-group{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .form-horizontal .control-label{
- padding-top:7px;
- margin-bottom:0;
- text-align:right
- }
-}
-.form-horizontal .has-feedback .form-control-feedback{
- right:15px
-}
-@media (min-width:768px){
- .form-horizontal .form-group-lg .control-label{
- padding-top:11px;
- font-size:18px
- }
-}
-@media (min-width:768px){
- .form-horizontal .form-group-sm .control-label{
- padding-top:6px;
- font-size:12px
- }
-}
-.btn{
- display:inline-block;
- padding:6px 12px;
- margin-bottom:0;
- font-size:14px;
- font-weight:400;
- line-height:1.42857143;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- -ms-touch-action:manipulation;
- touch-action:manipulation;
- cursor:pointer;
- -webkit-user-select:none;
- -moz-user-select:none;
- -ms-user-select:none;
- user-select:none;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-.btn.focus,.btn:focus,.btn:hover{
- color:#333;
- text-decoration:none
-}
-.btn.active,.btn:active{
- background-image:none;
- outline:0;
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn.disabled,.btn[disabled],fieldset[disabled] .btn{
- cursor:not-allowed;
- filter:alpha(opacity=65);
- -webkit-box-shadow:none;
- box-shadow:none;
- opacity:.65
-}
-a.btn.disabled,fieldset[disabled] a.btn{
- pointer-events:none
-}
-.btn-default{
- color:#333;
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default.focus,.btn-default:focus{
- color:#333;
- background-color:#e6e6e6;
- border-color:#8c8c8c
-}
-.btn-default:hover{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{
- color:#333;
- background-color:#d4d4d4;
- border-color:#8c8c8c
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- background-image:none
-}
-.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default .badge{
- color:#fff;
- background-color:#333
-}
-.btn-primary{
- color:#fff;
- background-color:#d11010;
- border-color:#c40f0f
-}
-.btn-primary.focus,.btn-primary:focus{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary:hover{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- background-image:none
-}
-.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary .badge{
- color:#337ab7;
- background-color:#fff
-}
-.btn-success{
- color:#fff;
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success.focus,.btn-success:focus{
- color:#fff;
- background-color:#449d44;
- border-color:#255625
-}
-.btn-success:hover{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{
- color:#fff;
- background-color:#398439;
- border-color:#255625
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- background-image:none
-}
-.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success .badge{
- color:#5cb85c;
- background-color:#fff
-}
-.btn-info{
- color:#fff;
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info.focus,.btn-info:focus{
- color:#fff;
- background-color:#31b0d5;
- border-color:#1b6d85
-}
-.btn-info:hover{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{
- color:#fff;
- background-color:#269abc;
- border-color:#1b6d85
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- background-image:none
-}
-.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info .badge{
- color:#5bc0de;
- background-color:#fff
-}
-.btn-warning{
- color:#fff;
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning.focus,.btn-warning:focus{
- color:#fff;
- background-color:#ec971f;
- border-color:#985f0d
-}
-.btn-warning:hover{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{
- color:#fff;
- background-color:#d58512;
- border-color:#985f0d
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- background-image:none
-}
-.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning .badge{
- color:#f0ad4e;
- background-color:#fff
-}
-.btn-danger{
- color:#fff;
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger.focus,.btn-danger:focus{
- color:#fff;
- background-color:#c9302c;
- border-color:#761c19
-}
-.btn-danger:hover{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{
- color:#fff;
- background-color:#ac2925;
- border-color:#761c19
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- background-image:none
-}
-.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger .badge{
- color:#d9534f;
- background-color:#fff
-}
-.btn-link{
- font-weight:400;
- color:#337ab7;
- border-radius:0
-}
-.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{
- background-color:transparent;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{
- border-color:transparent
-}
-.btn-link:focus,.btn-link:hover{
- color:#23527c;
- text-decoration:underline;
- background-color:transparent
-}
-.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{
- color:#777;
- text-decoration:none
-}
-.btn-group-lg>.btn,.btn-lg{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.btn-group-sm>.btn,.btn-sm{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-group-xs>.btn,.btn-xs{
- padding:1px 5px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-block{
- display:block;
- width:100%
-}
-.btn-block+.btn-block{
- margin-top:5px
-}
-input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{
- width:100%
-}
-.fade{
- opacity:0;
- -webkit-transition:opacity .15s linear;
- -o-transition:opacity .15s linear;
- transition:opacity .15s linear
-}
-.fade.in{
- opacity:1
-}
-.collapse{
- display:none
-}
-.collapse.in{
- display:block
-}
-tr.collapse.in{
- display:table-row
-}
-tbody.collapse.in{
- display:table-row-group
-}
-.collapsing{
- position:relative;
- height:0;
- overflow:hidden;
- -webkit-transition-timing-function:ease;
- -o-transition-timing-function:ease;
- transition-timing-function:ease;
- -webkit-transition-duration:.35s;
- -o-transition-duration:.35s;
- transition-duration:.35s;
- -webkit-transition-property:height,visibility;
- -o-transition-property:height,visibility;
- transition-property:height,visibility
-}
-.caret{
- display:inline-block;
- width:0;
- height:0;
- margin-left:2px;
- vertical-align:middle;
- border-top:4px dashed;
- border-top:4px solid\9;
- border-right:4px solid transparent;
- border-left:4px solid transparent
-}
-.dropdown,.dropup{
- position:relative
-}
-.dropdown-toggle:focus{
- outline:0
-}
-.dropdown-menu{
- position:absolute;
- top:100%;
- left:0;
- z-index:1000;
- display:none;
- float:left;
- min-width:160px;
- padding:5px 0;
- margin:2px 0 0;
- font-size:14px;
- text-align:left;
- list-style:none;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.15);
- border-radius:4px;
- -webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);
- box-shadow:0 6px 12px rgba(0,0,0,.175)
-}
-.dropdown-menu.pull-right{
- right:0;
- left:auto
-}
-.dropdown-menu .divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.dropdown-menu>li>a{
- display:block;
- padding:3px 20px;
- clear:both;
- font-weight:400;
- line-height:1.42857143;
- color:#333;
- white-space:nowrap
-}
-.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{
- color:#262626;
- text-decoration:none;
- background-color:#f5f5f5
-}
-.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{
- color:#fff;
- text-decoration:none;
- background-color:#337ab7;
- outline:0
-}
-.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- color:#777
-}
-.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent;
- background-image:none;
- filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)
-}
-.open>.dropdown-menu{
- display:block
-}
-.open>a{
- outline:0
-}
-.dropdown-menu-right{
- right:0;
- left:auto
-}
-.dropdown-menu-left{
- right:auto;
- left:0
-}
-.dropdown-header{
- display:block;
- padding:3px 20px;
- font-size:12px;
- line-height:1.42857143;
- color:#777;
- white-space:nowrap
-}
-.dropdown-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:990
-}
-.pull-right>.dropdown-menu{
- right:0;
- left:auto
-}
-.dropup .caret,.navbar-fixed-bottom .dropdown .caret{
- content:"";
- border-top:0;
- border-bottom:4px dashed;
- border-bottom:4px solid\9
-}
-.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{
- top:auto;
- bottom:100%;
- margin-bottom:2px
-}
-@media (min-width:768px){
- .navbar-right .dropdown-menu{
- right:0;
- left:auto
- }
- .navbar-right .dropdown-menu-left{
- right:auto;
- left:0
- }
-}
-.btn-group,.btn-group-vertical{
- position:relative;
- display:inline-block;
- vertical-align:middle
-}
-.btn-group-vertical>.btn,.btn-group>.btn{
- position:relative;
- float:left
-}
-.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{
- z-index:2
-}
-.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{
- margin-left:-1px
-}
-.btn-toolbar{
- margin-left:-5px
-}
-.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{
- float:left
-}
-.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{
- margin-left:5px
-}
-.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){
- border-radius:0
-}
-.btn-group>.btn:first-child{
- margin-left:0
-}
-.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group>.btn-group{
- float:left
-}
-.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{
- outline:0
-}
-.btn-group>.btn+.dropdown-toggle{
- padding-right:8px;
- padding-left:8px
-}
-.btn-group>.btn-lg+.dropdown-toggle{
- padding-right:12px;
- padding-left:12px
-}
-.btn-group.open .dropdown-toggle{
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn-group.open .dropdown-toggle.btn-link{
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn .caret{
- margin-left:0
-}
-.btn-lg .caret{
- border-width:5px 5px 0;
- border-bottom-width:0
-}
-.dropup .btn-lg .caret{
- border-width:0 5px 5px
-}
-.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{
- display:block;
- float:none;
- width:100%;
- max-width:100%
-}
-.btn-group-vertical>.btn-group>.btn{
- float:none
-}
-.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{
- margin-top:-1px;
- margin-left:0
-}
-.btn-group-vertical>.btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.btn-group-vertical>.btn:first-child:not(:last-child){
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn:last-child:not(:first-child){
- border-top-left-radius:0;
- border-top-right-radius:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.btn-group-justified{
- display:table;
- width:100%;
- table-layout:fixed;
- border-collapse:separate
-}
-.btn-group-justified>.btn,.btn-group-justified>.btn-group{
- display:table-cell;
- float:none;
- width:1%
-}
-.btn-group-justified>.btn-group .btn{
- width:100%
-}
-.btn-group-justified>.btn-group .dropdown-menu{
- left:auto
-}
-[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{
- position:absolute;
- clip:rect(0,0,0,0);
- pointer-events:none
-}
-.input-group{
- position:relative;
- display:table;
- border-collapse:separate
-}
-.input-group[class*=col-]{
- float:none;
- padding-right:0;
- padding-left:0
-}
-.input-group .form-control{
- position:relative;
- z-index:2;
- float:left;
- width:100%;
- margin-bottom:0
-}
-.input-group .form-control:focus{
- z-index:3
-}
-.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{
- height:46px;
- line-height:46px
-}
-select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{
- height:auto
-}
-.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{
- height:30px;
- line-height:30px
-}
-select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{
- height:auto
-}
-.input-group .form-control,.input-group-addon,.input-group-btn{
- display:table-cell
-}
-.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.input-group-addon,.input-group-btn{
- width:1%;
- white-space:nowrap;
- vertical-align:middle
-}
-.input-group-addon{
- padding:6px 12px;
- font-size:14px;
- font-weight:400;
- line-height:1;
- color:#555;
- text-align:center;
- background-color:#eee;
- border:1px solid #ccc;
- border-radius:4px
-}
-.input-group-addon.input-sm{
- padding:5px 10px;
- font-size:12px;
- border-radius:3px
-}
-.input-group-addon.input-lg{
- padding:10px 16px;
- font-size:18px;
- border-radius:6px
-}
-.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{
- margin-top:0
-}
-.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.input-group-addon:first-child{
- border-right:0
-}
-.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.input-group-addon:last-child{
- border-left:0
-}
-.input-group-btn{
- position:relative;
- font-size:0;
- white-space:nowrap
-}
-.input-group-btn>.btn{
- position:relative
-}
-.input-group-btn>.btn+.btn{
- margin-left:-1px
-}
-.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{
- z-index:2
-}
-.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{
- margin-right:-1px
-}
-.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{
- z-index:2;
- margin-left:-1px
-}
-.nav{
- padding-left:0;
- margin-bottom:0;
- list-style:none
-}
-.nav>li{
- position:relative;
- display:block
-}
-.nav>li>a{
- position:relative;
- display:block;
- padding:10px 15px
-}
-.nav>li>a:focus,.nav>li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.nav>li.disabled>a{
- color:#777
-}
-.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{
- color:#777;
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent
-}
-.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{
- background-color:#eee;
- border-color:#337ab7
-}
-.nav .nav-divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.nav>li>a>img{
- max-width:none
-}
-.nav-tabs{
- border-bottom:1px solid #ddd
-}
-.nav-tabs>li{
- float:left;
- margin-bottom:-1px
-}
-.nav-tabs>li>a{
- margin-right:2px;
- line-height:1.42857143;
- border:1px solid transparent;
- border-radius:4px 4px 0 0
-}
-.nav-tabs>li>a:hover{
- border-color:#eee #eee #ddd
-}
-.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{
- color:#555;
- cursor:default;
- background-color:#fff;
- border:1px solid #ddd;
- border-bottom-color:transparent
-}
-.nav-tabs.nav-justified{
- width:100%;
- border-bottom:0
-}
-.nav-tabs.nav-justified>li{
- float:none
-}
-.nav-tabs.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-tabs.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-tabs.nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs.nav-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.nav-pills>li{
- float:left
-}
-.nav-pills>li>a{
- border-radius:4px
-}
-.nav-pills>li+li{
- margin-left:2px
-}
-.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{
- color:#fff;
- background-color:#337ab7
-}
-.nav-stacked>li{
- float:none
-}
-.nav-stacked>li+li{
- margin-top:2px;
- margin-left:0
-}
-.nav-justified{
- width:100%
-}
-.nav-justified>li{
- float:none
-}
-.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs-justified{
- border-bottom:0
-}
-.nav-tabs-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.tab-content>.tab-pane{
- display:none
-}
-.tab-content>.active{
- display:block
-}
-.nav-tabs .dropdown-menu{
- margin-top:-1px;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar{
- position:relative;
- min-height:50px;
- margin-bottom:20px;
- border:1px solid transparent
-}
-@media (min-width:768px){
- .navbar{
- border-radius:4px
- }
-}
-@media (min-width:768px){
- .navbar-header{
- float:left
- }
-}
-.navbar-collapse{
- padding-right:15px;
- padding-left:15px;
- overflow-x:visible;
- -webkit-overflow-scrolling:touch;
- border-top:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1)
-}
-.navbar-collapse.in{
- overflow-y:auto
-}
-@media (min-width:768px){
- .navbar-collapse{
- width:auto;
- border-top:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-collapse.collapse{
- display:block!important;
- height:auto!important;
- padding-bottom:0;
- overflow:visible!important
- }
- .navbar-collapse.in{
- overflow-y:visible
- }
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{
- padding-right:0;
- padding-left:0
- }
-}
-.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:340px
-}
-@media (max-device-width:480px) and (orientation:landscape){
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:200px
- }
-}
-.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:0;
- margin-left:0
- }
-}
-.navbar-static-top{
- z-index:1000;
- border-width:0 0 1px
-}
-@media (min-width:768px){
- .navbar-static-top{
- border-radius:0
- }
-}
-.navbar-fixed-bottom,.navbar-fixed-top{
- position:fixed;
- right:0;
- left:0;
- z-index:1030
-}
-@media (min-width:768px){
- .navbar-fixed-bottom,.navbar-fixed-top{
- border-radius:0
- }
-}
-.navbar-fixed-top{
- top:0;
- border-width:0 0 1px
-}
-.navbar-fixed-bottom{
- bottom:0;
- margin-bottom:0;
- border-width:1px 0 0
-}
-.navbar-brand{
- float:left;
- height:50px;
- padding:15px 15px;
- font-size:18px;
- line-height:20px
-}
-.navbar-brand:focus,.navbar-brand:hover{
- text-decoration:none
-}
-.navbar-brand>img{
- display:block
-}
-@media (min-width:768px){
- .navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{
- margin-left:-15px
- }
-}
-.navbar-toggle{
- position:relative;
- float:right;
- padding:9px 10px;
- margin-top:8px;
- margin-right:15px;
- margin-bottom:8px;
- background-color:transparent;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.navbar-toggle:focus{
- outline:0
-}
-.navbar-toggle .icon-bar{
- display:block;
- width:22px;
- height:2px;
- border-radius:1px
-}
-.navbar-toggle .icon-bar+.icon-bar{
- margin-top:4px
-}
-@media (min-width:768px){
- .navbar-toggle{
- display:none
- }
-}
-.navbar-nav{
- margin:7.5px -15px
-}
-.navbar-nav>li>a{
- padding-top:10px;
- padding-bottom:10px;
- line-height:20px
-}
-@media (max-width:767px){
- .navbar-nav .open .dropdown-menu{
- position:static;
- float:none;
- width:auto;
- margin-top:0;
- background-color:transparent;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{
- padding:5px 15px 5px 25px
- }
- .navbar-nav .open .dropdown-menu>li>a{
- line-height:20px
- }
- .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{
- background-image:none
- }
-}
-@media (min-width:768px){
- .navbar-nav{
- float:left;
- margin:0
- }
- .navbar-nav>li{
- float:left
- }
- .navbar-nav>li>a{
- padding-top:15px;
- padding-bottom:15px
- }
-}
-.navbar-form{
- padding:10px 15px;
- margin-top:8px;
- margin-right:-15px;
- margin-bottom:8px;
- margin-left:-15px;
- border-top:1px solid transparent;
- border-bottom:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)
-}
-@media (min-width:768px){
- .navbar-form .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .navbar-form .form-control-static{
- display:inline-block
- }
- .navbar-form .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{
- width:auto
- }
- .navbar-form .input-group>.form-control{
- width:100%
- }
- .navbar-form .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox,.navbar-form .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox label,.navbar-form .radio label{
- padding-left:0
- }
- .navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .navbar-form .has-feedback .form-control-feedback{
- top:0
- }
-}
-@media (max-width:767px){
- .navbar-form .form-group{
- margin-bottom:5px
- }
- .navbar-form .form-group:last-child{
- margin-bottom:0
- }
-}
-@media (min-width:768px){
- .navbar-form{
- width:auto;
- padding-top:0;
- padding-bottom:0;
- margin-right:0;
- margin-left:0;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
-}
-.navbar-nav>li>.dropdown-menu{
- margin-top:0;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{
- margin-bottom:0;
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.navbar-btn{
- margin-top:8px;
- margin-bottom:8px
-}
-.navbar-btn.btn-sm{
- margin-top:10px;
- margin-bottom:10px
-}
-.navbar-btn.btn-xs{
- margin-top:14px;
- margin-bottom:14px
-}
-.navbar-text{
- margin-top:15px;
- margin-bottom:15px
-}
-@media (min-width:768px){
- .navbar-text{
- float:left;
- margin-right:15px;
- margin-left:15px
- }
-}
-@media (min-width:768px){
- .navbar-left{
- float:left!important
- }
- .navbar-right{
- float:right!important;
- margin-right:-15px
- }
- .navbar-right~.navbar-right{
- margin-right:0
- }
-}
-.navbar-default{
- background-color:#f8f8f8;
- border-color:#e7e7e7
-}
-.navbar-default .navbar-brand{
- color:#777
-}
-.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{
- color:#5e5e5e;
- background-color:transparent
-}
-.navbar-default .navbar-text{
- color:#777
-}
-.navbar-default .navbar-nav>li>a{
- color:#777
-}
-.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{
- color:#333;
- background-color:transparent
-}
-.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
-}
-.navbar-default .navbar-toggle{
- border-color:#ddd
-}
-.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{
- background-color:#ddd
-}
-.navbar-default .navbar-toggle .icon-bar{
- background-color:#888
-}
-.navbar-default .navbar-collapse,.navbar-default .navbar-form{
- border-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-@media (max-width:767px){
- .navbar-default .navbar-nav .open .dropdown-menu>li>a{
- color:#777
- }
- .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#333;
- background-color:transparent
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
- }
-}
-.navbar-default .navbar-link{
- color:#777
-}
-.navbar-default .navbar-link:hover{
- color:#333
-}
-.navbar-default .btn-link{
- color:#777
-}
-.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{
- color:#333
-}
-.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{
- color:#ccc
-}
-.navbar-inverse{
- background-color:#222;
- border-color:#080808
-}
-.navbar-inverse .navbar-brand{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-text{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{
- color:#fff;
- background-color:#080808
-}
-.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{
- color:#444;
- background-color:transparent
-}
-.navbar-inverse .navbar-toggle{
- border-color:#333
-}
-.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{
- background-color:#333
-}
-.navbar-inverse .navbar-toggle .icon-bar{
- background-color:#fff
-}
-.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{
- border-color:#101010
-}
-.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{
- color:#fff;
- background-color:#080808
-}
-@media (max-width:767px){
- .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{
- border-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider{
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{
- color:#9d9d9d
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#fff;
- background-color:transparent
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#fff;
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#444;
- background-color:transparent
- }
-}
-.navbar-inverse .navbar-link{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link{
- color:#9d9d9d
-}
-.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{
- color:#444
-}
-.breadcrumb{
- padding:8px 15px;
- margin-bottom:20px;
- list-style:none;
- background-color:#f5f5f5;
- border-radius:4px
-}
-.breadcrumb>li{
- display:inline-block
-}
-.breadcrumb>li+li:before{
- padding:0 5px;
- color:#ccc;
- content:"/\00a0"
-}
-.breadcrumb>.active{
- color:#777
-}
-.pagination{
- display:inline-block;
- padding-left:0;
- margin:20px 0;
- border-radius:4px
-}
-.pagination>li{
- display:inline
-}
-.pagination>li>a,.pagination>li>span{
- position:relative;
- float:left;
- padding:6px 12px;
- margin-left:-1px;
- line-height:1.42857143;
- color:#337ab7;
- text-decoration:none;
- background-color:#fff;
- border:1px solid #ddd
-}
-.pagination>li:first-child>a,.pagination>li:first-child>span{
- margin-left:0;
- border-top-left-radius:4px;
- border-bottom-left-radius:4px
-}
-.pagination>li:last-child>a,.pagination>li:last-child>span{
- border-top-right-radius:4px;
- border-bottom-right-radius:4px
-}
-.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{
- z-index:2;
- color:#23527c;
- background-color:#eee;
- border-color:#ddd
-}
-.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{
- z-index:3;
- color:#fff;
- cursor:default;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#fff;
- border-color:#ddd
-}
-.pagination-lg>li>a,.pagination-lg>li>span{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{
- border-top-left-radius:6px;
- border-bottom-left-radius:6px
-}
-.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{
- border-top-right-radius:6px;
- border-bottom-right-radius:6px
-}
-.pagination-sm>li>a,.pagination-sm>li>span{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5
-}
-.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{
- border-top-left-radius:3px;
- border-bottom-left-radius:3px
-}
-.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{
- border-top-right-radius:3px;
- border-bottom-right-radius:3px
-}
-.pager{
- padding-left:0;
- margin:20px 0;
- text-align:center;
- list-style:none
-}
-.pager li{
- display:inline
-}
-.pager li>a,.pager li>span{
- display:inline-block;
- padding:5px 14px;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:15px
-}
-.pager li>a:focus,.pager li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.pager .next>a,.pager .next>span{
- float:right
-}
-.pager .previous>a,.pager .previous>span{
- float:left
-}
-.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{
- color:#777;
- cursor:not-allowed;
- background-color:#fff
-}
-.label{
- display:inline;
- padding:.2em .6em .3em;
- font-size:75%;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:baseline;
- border-radius:.25em
-}
-a.label:focus,a.label:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.label:empty{
- display:none
-}
-.btn .label{
- position:relative;
- top:-1px
-}
-.label-default{
- background-color:#777
-}
-.label-default[href]:focus,.label-default[href]:hover{
- background-color:#5e5e5e
-}
-.label-primary{
- background-color:#337ab7
-}
-.label-primary[href]:focus,.label-primary[href]:hover{
- background-color:#286090
-}
-.label-success{
- background-color:#5cb85c
-}
-.label-success[href]:focus,.label-success[href]:hover{
- background-color:#449d44
-}
-.label-info{
- background-color:#5bc0de
-}
-.label-info[href]:focus,.label-info[href]:hover{
- background-color:#31b0d5
-}
-.label-warning{
- background-color:#f0ad4e
-}
-.label-warning[href]:focus,.label-warning[href]:hover{
- background-color:#ec971f
-}
-.label-danger{
- background-color:#d9534f
-}
-.label-danger[href]:focus,.label-danger[href]:hover{
- background-color:#c9302c
-}
-.badge{
- display:inline-block;
- min-width:10px;
- padding:3px 7px;
- font-size:12px;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- background-color:#777;
- border-radius:10px
-}
-.badge:empty{
- display:none
-}
-.btn .badge{
- position:relative;
- top:-1px
-}
-.btn-group-xs>.btn .badge,.btn-xs .badge{
- top:0;
- padding:1px 5px
-}
-a.badge:focus,a.badge:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.list-group-item.active>.badge,.nav-pills>.active>a>.badge{
- color:#337ab7;
- background-color:#fff
-}
-.list-group-item>.badge{
- float:right
-}
-.list-group-item>.badge+.badge{
- margin-right:5px
-}
-.nav-pills>li>a>.badge{
- margin-left:3px
-}
-.jumbotron{
- padding-top:30px;
- padding-bottom:30px;
- margin-bottom:30px;
- color:inherit;
- background-color:#eee
-}
-.jumbotron .h1,.jumbotron h1{
- color:inherit
-}
-.jumbotron p{
- margin-bottom:15px;
- font-size:21px;
- font-weight:200
-}
-.jumbotron>hr{
- border-top-color:#d5d5d5
-}
-.container .jumbotron,.container-fluid .jumbotron{
- padding-right:15px;
- padding-left:15px;
- border-radius:6px
-}
-.jumbotron .container{
- max-width:100%
-}
-@media screen and (min-width:768px){
- .jumbotron{
- padding-top:48px;
- padding-bottom:48px
- }
- .container .jumbotron,.container-fluid .jumbotron{
- padding-right:60px;
- padding-left:60px
- }
- .jumbotron .h1,.jumbotron h1{
- font-size:63px
- }
-}
-.thumbnail{
- display:block;
- padding:4px;
- margin-bottom:20px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:border .2s ease-in-out;
- -o-transition:border .2s ease-in-out;
- transition:border .2s ease-in-out
-}
-.thumbnail a>img,.thumbnail>img{
- margin-right:auto;
- margin-left:auto
-}
-a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{
- border-color:#337ab7
-}
-.thumbnail .caption{
- padding:9px;
- color:#333
-}
-.alert{
- padding:15px;
- margin-bottom:20px;
- border:1px solid transparent;
- border-radius:4px
-}
-.alert h4{
- margin-top:0;
- color:inherit
-}
-.alert .alert-link{
- font-weight:700
-}
-.alert>p,.alert>ul{
- margin-bottom:0
-}
-.alert>p+p{
- margin-top:5px
-}
-.alert-dismissable,.alert-dismissible{
- padding-right:35px
-}
-.alert-dismissable .close,.alert-dismissible .close{
- position:relative;
- top:-2px;
- right:-21px;
- color:inherit
-}
-.alert-success{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.alert-success hr{
- border-top-color:#c9e2b3
-}
-.alert-success .alert-link{
- color:#2b542c
-}
-.alert-info{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.alert-info hr{
- border-top-color:#a6e1ec
-}
-.alert-info .alert-link{
- color:#245269
-}
-.alert-warning{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.alert-warning hr{
- border-top-color:#f7e1b5
-}
-.alert-warning .alert-link{
- color:#66512c
-}
-.alert-danger{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.alert-danger hr{
- border-top-color:#e4b9c0
-}
-.alert-danger .alert-link{
- color:#843534
-}
-@-webkit-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@-o-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-.progress{
- height:20px;
- margin-bottom:20px;
- overflow:hidden;
- background-color:#f5f5f5;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
- box-shadow:inset 0 1px 2px rgba(0,0,0,.1)
-}
-.progress-bar{
- float:left;
- width:0;
- height:100%;
- font-size:12px;
- line-height:20px;
- color:#fff;
- text-align:center;
- background-color:#337ab7;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- -webkit-transition:width .6s ease;
- -o-transition:width .6s ease;
- transition:width .6s ease
-}
-.progress-bar-striped,.progress-striped .progress-bar{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- -webkit-background-size:40px 40px;
- background-size:40px 40px
-}
-.progress-bar.active,.progress.active .progress-bar{
- -webkit-animation:progress-bar-stripes 2s linear infinite;
- -o-animation:progress-bar-stripes 2s linear infinite;
- animation:progress-bar-stripes 2s linear infinite
-}
-.progress-bar-success{
- background-color:#5cb85c
-}
-.progress-striped .progress-bar-success{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-info{
- background-color:#5bc0de
-}
-.progress-striped .progress-bar-info{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-warning{
- background-color:#f0ad4e
-}
-.progress-striped .progress-bar-warning{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-danger{
- background-color:#d9534f
-}
-.progress-striped .progress-bar-danger{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.media{
- margin-top:15px
-}
-.media:first-child{
- margin-top:0
-}
-.media,.media-body{
- overflow:hidden;
- zoom:1
-}
-.media-body{
- width:10000px
-}
-.media-object{
- display:block
-}
-.media-object.img-thumbnail{
- max-width:none
-}
-.media-right,.media>.pull-right{
- padding-left:10px
-}
-.media-left,.media>.pull-left{
- padding-right:10px
-}
-.media-body,.media-left,.media-right{
- display:table-cell;
- vertical-align:top
-}
-.media-middle{
- vertical-align:middle
-}
-.media-bottom{
- vertical-align:bottom
-}
-.media-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.media-list{
- padding-left:0;
- list-style:none
-}
-.list-group{
- padding-left:0;
- margin-bottom:20px
-}
-.list-group-item{
- position:relative;
- display:block;
- padding:10px 15px;
- margin-bottom:-1px;
- background-color:#fff;
- border:1px solid #ddd
-}
-.list-group-item:first-child{
- border-top-left-radius:4px;
- border-top-right-radius:4px
-}
-.list-group-item:last-child{
- margin-bottom:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-a.list-group-item,button.list-group-item{
- color:#555
-}
-a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{
- color:#333
-}
-a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{
- color:#555;
- text-decoration:none;
- background-color:#f5f5f5
-}
-button.list-group-item{
- width:100%;
- text-align:left
-}
-.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#eee
-}
-.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{
- color:inherit
-}
-.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{
- color:#777
-}
-.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{
- z-index:2;
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{
- color:inherit
-}
-.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{
- color:#c7ddef
-}
-.list-group-item-success{
- color:#3c763d;
- background-color:#dff0d8
-}
-a.list-group-item-success,button.list-group-item-success{
- color:#3c763d
-}
-a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{
- color:#3c763d;
- background-color:#d0e9c6
-}
-a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{
- color:#fff;
- background-color:#3c763d;
- border-color:#3c763d
-}
-.list-group-item-info{
- color:#31708f;
- background-color:#d9edf7
-}
-a.list-group-item-info,button.list-group-item-info{
- color:#31708f
-}
-a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{
- color:#31708f;
- background-color:#c4e3f3
-}
-a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{
- color:#fff;
- background-color:#31708f;
- border-color:#31708f
-}
-.list-group-item-warning{
- color:#8a6d3b;
- background-color:#fcf8e3
-}
-a.list-group-item-warning,button.list-group-item-warning{
- color:#8a6d3b
-}
-a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{
- color:#8a6d3b;
- background-color:#faf2cc
-}
-a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{
- color:#fff;
- background-color:#8a6d3b;
- border-color:#8a6d3b
-}
-.list-group-item-danger{
- color:#a94442;
- background-color:#f2dede
-}
-a.list-group-item-danger,button.list-group-item-danger{
- color:#a94442
-}
-a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{
- color:#a94442;
- background-color:#ebcccc
-}
-a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{
- color:#fff;
- background-color:#a94442;
- border-color:#a94442
-}
-.list-group-item-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.list-group-item-text{
- margin-bottom:0;
- line-height:1.3
-}
-.panel{
- margin-bottom:20px;
- background-color:#fff;
- border:1px solid transparent;
- border-radius:4px;
- -webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);
- box-shadow:0 1px 1px rgba(0,0,0,.05)
-}
-.panel-body{
- padding:15px
-}
-.panel-heading{
- padding:10px 15px;
- border-bottom:1px solid transparent;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel-heading>.dropdown .dropdown-toggle{
- color:inherit
-}
-.panel-title{
- margin-top:0;
- margin-bottom:0;
- font-size:16px;
- color:inherit
-}
-.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{
- color:inherit
-}
-.panel-footer{
- padding:10px 15px;
- background-color:#f5f5f5;
- border-top:1px solid #ddd;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.list-group,.panel>.panel-collapse>.list-group{
- margin-bottom:0
-}
-.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{
- border-width:1px 0;
- border-radius:0
-}
-.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{
- border-top:0;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{
- border-bottom:0;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.panel-heading+.list-group .list-group-item:first-child{
- border-top-width:0
-}
-.list-group+.panel-footer{
- border-top-width:0
-}
-.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{
- margin-bottom:0
-}
-.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{
- padding-right:15px;
- padding-left:15px
-}
-.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{
- border-top-left-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{
- border-top-right-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{
- border-bottom-right-radius:3px
-}
-.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{
- border-top:1px solid #ddd
-}
-.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{
- border-top:0
-}
-.panel>.table-bordered,.panel>.table-responsive>.table-bordered{
- border:0
-}
-.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
-}
-.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
-}
-.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{
- border-bottom:0
-}
-.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
-}
-.panel>.table-responsive{
- margin-bottom:0;
- border:0
-}
-.panel-group{
- margin-bottom:20px
-}
-.panel-group .panel{
- margin-bottom:0;
- border-radius:4px
-}
-.panel-group .panel+.panel{
- margin-top:5px
-}
-.panel-group .panel-heading{
- border-bottom:0
-}
-.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{
- border-top:1px solid #ddd
-}
-.panel-group .panel-footer{
- border-top:0
-}
-.panel-group .panel-footer+.panel-collapse .panel-body{
- border-bottom:1px solid #ddd
-}
-.panel-default{
- border-color:#ddd
-}
-.panel-default>.panel-heading{
- color:#333;
- background-color:#f5f5f5;
- border-color:#ddd
-}
-.panel-default>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ddd
-}
-.panel-default>.panel-heading .badge{
- color:#f5f5f5;
- background-color:#333
-}
-.panel-default>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ddd
-}
-.panel-primary{
- border-color:#337ab7
-}
-.panel-primary>.panel-heading{
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.panel-primary>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#337ab7
-}
-.panel-primary>.panel-heading .badge{
- color:#337ab7;
- background-color:#fff
-}
-.panel-primary>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#337ab7
-}
-.panel-success{
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#d6e9c6
-}
-.panel-success>.panel-heading .badge{
- color:#dff0d8;
- background-color:#3c763d
-}
-.panel-success>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#d6e9c6
-}
-.panel-info{
- border-color:#bce8f1
-}
-.panel-info>.panel-heading{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.panel-info>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#bce8f1
-}
-.panel-info>.panel-heading .badge{
- color:#d9edf7;
- background-color:#31708f
-}
-.panel-info>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#bce8f1
-}
-.panel-warning{
- border-color:#faebcc
-}
-.panel-warning>.panel-heading{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.panel-warning>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#faebcc
-}
-.panel-warning>.panel-heading .badge{
- color:#fcf8e3;
- background-color:#8a6d3b
-}
-.panel-warning>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#faebcc
-}
-.panel-danger{
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ebccd1
-}
-.panel-danger>.panel-heading .badge{
- color:#f2dede;
- background-color:#a94442
-}
-.panel-danger>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ebccd1
-}
-.embed-responsive{
- position:relative;
- display:block;
- height:0;
- padding:0;
- overflow:hidden
-}
-.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:100%;
- height:100%;
- border:0
-}
-.embed-responsive-16by9{
- padding-bottom:56.25%
-}
-.embed-responsive-4by3{
- padding-bottom:75%
-}
-.well{
- min-height:20px;
- padding:19px;
- margin-bottom:20px;
- background-color:#f5f5f5;
- border:1px solid #e3e3e3;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.05)
-}
-.well blockquote{
- border-color:#ddd;
- border-color:rgba(0,0,0,.15)
-}
-.well-lg{
- padding:24px;
- border-radius:6px
-}
-.well-sm{
- padding:9px;
- border-radius:3px
-}
-.close{
- float:right;
- font-size:21px;
- font-weight:700;
- line-height:1;
- color:#000;
- text-shadow:0 1px 0 #fff;
- filter:alpha(opacity=20);
- opacity:.2
-}
-.close:focus,.close:hover{
- color:#000;
- text-decoration:none;
- cursor:pointer;
- filter:alpha(opacity=50);
- opacity:.5
-}
-button.close{
- -webkit-appearance:none;
- padding:0;
- cursor:pointer;
- background:0 0;
- border:0
-}
-.modal-open{
- overflow:hidden
-}
-.modal{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1050;
- display:none;
- overflow:hidden;
- -webkit-overflow-scrolling:touch;
- outline:0
-}
-.modal.fade .modal-dialog{
- -webkit-transition:-webkit-transform .3s ease-out;
- -o-transition:-o-transform .3s ease-out;
- transition:transform .3s ease-out;
- -webkit-transform:translate(0,-25%);
- -ms-transform:translate(0,-25%);
- -o-transform:translate(0,-25%);
- transform:translate(0,-25%)
-}
-.modal.in .modal-dialog{
- -webkit-transform:translate(0,0);
- -ms-transform:translate(0,0);
- -o-transform:translate(0,0);
- transform:translate(0,0)
-}
-.modal-open .modal{
- overflow-x:hidden;
- overflow-y:auto
-}
-.modal-dialog{
- position:relative;
- width:auto;
- margin:10px
-}
-.modal-content{
- position:relative;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #999;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- outline:0;
- -webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);
- box-shadow:0 3px 9px rgba(0,0,0,.5)
-}
-.modal-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1040;
- background-color:#000
-}
-.modal-backdrop.fade{
- filter:alpha(opacity=0);
- opacity:0
-}
-.modal-backdrop.in{
- filter:alpha(opacity=50);
- opacity:.5
-}
-.modal-header{
- padding:15px;
- border-bottom:1px solid #e5e5e5
-}
-.modal-header .close{
- margin-top:-2px
-}
-.modal-title{
- margin:0;
- line-height:1.42857143
-}
-.modal-body{
- position:relative;
- padding:15px
-}
-.modal-footer{
- padding:15px;
- text-align:right;
- border-top:1px solid #e5e5e5
-}
-.modal-footer .btn+.btn{
- margin-bottom:0;
- margin-left:5px
-}
-.modal-footer .btn-group .btn+.btn{
- margin-left:-1px
-}
-.modal-footer .btn-block+.btn-block{
- margin-left:0
-}
-.modal-scrollbar-measure{
- position:absolute;
- top:-9999px;
- width:50px;
- height:50px;
- overflow:scroll
-}
-@media (min-width:768px){
- .modal-dialog{
- width:600px;
- margin:30px auto
- }
- .modal-content{
- -webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);
- box-shadow:0 5px 15px rgba(0,0,0,.5)
- }
- .modal-sm{
- width:300px
- }
-}
-@media (min-width:992px){
- .modal-lg{
- width:900px
- }
-}
-.tooltip{
- position:absolute;
- z-index:1070;
- display:block;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:12px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- filter:alpha(opacity=0);
- opacity:0;
- line-break:auto
-}
-.tooltip.in{
- filter:alpha(opacity=90);
- opacity:.9
-}
-.tooltip.top{
- padding:5px 0;
- margin-top:-3px
-}
-.tooltip.right{
- padding:0 5px;
- margin-left:3px
-}
-.tooltip.bottom{
- padding:5px 0;
- margin-top:3px
-}
-.tooltip.left{
- padding:0 5px;
- margin-left:-3px
-}
-.tooltip-inner{
- max-width:200px;
- padding:3px 8px;
- color:#fff;
- text-align:center;
- background-color:#000;
- border-radius:4px
-}
-.tooltip-arrow{
- position:absolute;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.tooltip.top .tooltip-arrow{
- bottom:0;
- left:50%;
- margin-left:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-left .tooltip-arrow{
- right:5px;
- bottom:0;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-right .tooltip-arrow{
- bottom:0;
- left:5px;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.right .tooltip-arrow{
- top:50%;
- left:0;
- margin-top:-5px;
- border-width:5px 5px 5px 0;
- border-right-color:#000
-}
-.tooltip.left .tooltip-arrow{
- top:50%;
- right:0;
- margin-top:-5px;
- border-width:5px 0 5px 5px;
- border-left-color:#000
-}
-.tooltip.bottom .tooltip-arrow{
- top:0;
- left:50%;
- margin-left:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-left .tooltip-arrow{
- top:0;
- right:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-right .tooltip-arrow{
- top:0;
- left:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.popover{
- position:absolute;
- top:0;
- left:0;
- z-index:1060;
- display:none;
- max-width:276px;
- padding:1px;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- -webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);
- box-shadow:0 5px 10px rgba(0,0,0,.2);
- line-break:auto
-}
-.popover.top{
- margin-top:-10px
-}
-.popover.right{
- margin-left:10px
-}
-.popover.bottom{
- margin-top:10px
-}
-.popover.left{
- margin-left:-10px
-}
-.popover-title{
- padding:8px 14px;
- margin:0;
- font-size:14px;
- background-color:#f7f7f7;
- border-bottom:1px solid #ebebeb;
- border-radius:5px 5px 0 0
-}
-.popover-content{
- padding:9px 14px
-}
-.popover>.arrow,.popover>.arrow:after{
- position:absolute;
- display:block;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.popover>.arrow{
- border-width:11px
-}
-.popover>.arrow:after{
- content:"";
- border-width:10px
-}
-.popover.top>.arrow{
- bottom:-11px;
- left:50%;
- margin-left:-11px;
- border-top-color:#999;
- border-top-color:rgba(0,0,0,.25);
- border-bottom-width:0
-}
-.popover.top>.arrow:after{
- bottom:1px;
- margin-left:-10px;
- content:" ";
- border-top-color:#fff;
- border-bottom-width:0
-}
-.popover.right>.arrow{
- top:50%;
- left:-11px;
- margin-top:-11px;
- border-right-color:#999;
- border-right-color:rgba(0,0,0,.25);
- border-left-width:0
-}
-.popover.right>.arrow:after{
- bottom:-10px;
- left:1px;
- content:" ";
- border-right-color:#fff;
- border-left-width:0
-}
-.popover.bottom>.arrow{
- top:-11px;
- left:50%;
- margin-left:-11px;
- border-top-width:0;
- border-bottom-color:#999;
- border-bottom-color:rgba(0,0,0,.25)
-}
-.popover.bottom>.arrow:after{
- top:1px;
- margin-left:-10px;
- content:" ";
- border-top-width:0;
- border-bottom-color:#fff
-}
-.popover.left>.arrow{
- top:50%;
- right:-11px;
- margin-top:-11px;
- border-right-width:0;
- border-left-color:#999;
- border-left-color:rgba(0,0,0,.25)
-}
-.popover.left>.arrow:after{
- right:1px;
- bottom:-10px;
- content:" ";
- border-right-width:0;
- border-left-color:#fff
-}
-.carousel{
- position:relative
-}
-.carousel-inner{
- position:relative;
- width:100%;
- overflow:hidden
-}
-.carousel-inner>.item{
- position:relative;
- display:none;
- -webkit-transition:.6s ease-in-out left;
- -o-transition:.6s ease-in-out left;
- transition:.6s ease-in-out left
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img{
- line-height:1
-}
-@media all and (transform-3d),(-webkit-transform-3d){
- .carousel-inner>.item{
- -webkit-transition:-webkit-transform .6s ease-in-out;
- -o-transition:-o-transform .6s ease-in-out;
- transition:transform .6s ease-in-out;
- -webkit-backface-visibility:hidden;
- backface-visibility:hidden;
- -webkit-perspective:1000px;
- perspective:1000px
- }
- .carousel-inner>.item.active.right,.carousel-inner>.item.next{
- left:0;
- -webkit-transform:translate3d(100%,0,0);
- transform:translate3d(100%,0,0)
- }
- .carousel-inner>.item.active.left,.carousel-inner>.item.prev{
- left:0;
- -webkit-transform:translate3d(-100%,0,0);
- transform:translate3d(-100%,0,0)
- }
- .carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{
- left:0;
- -webkit-transform:translate3d(0,0,0);
- transform:translate3d(0,0,0)
- }
-}
-.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{
- display:block
-}
-.carousel-inner>.active{
- left:0
-}
-.carousel-inner>.next,.carousel-inner>.prev{
- position:absolute;
- top:0;
- width:100%
-}
-.carousel-inner>.next{
- left:100%
-}
-.carousel-inner>.prev{
- left:-100%
-}
-.carousel-inner>.next.left,.carousel-inner>.prev.right{
- left:0
-}
-.carousel-inner>.active.left{
- left:-100%
-}
-.carousel-inner>.active.right{
- left:100%
-}
-.carousel-control{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:15%;
- font-size:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6);
- background-color:rgba(0,0,0,0);
- filter:alpha(opacity=50);
- opacity:.5
-}
-.carousel-control.left{
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));
- background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control.right{
- right:0;
- left:auto;
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));
- background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control:focus,.carousel-control:hover{
- color:#fff;
- text-decoration:none;
- filter:alpha(opacity=90);
- outline:0;
- opacity:.9
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- position:absolute;
- top:50%;
- z-index:5;
- display:inline-block;
- margin-top:-10px
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- left:50%;
- margin-left:-10px
-}
-.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- right:50%;
- margin-right:-10px
-}
-.carousel-control .icon-next,.carousel-control .icon-prev{
- width:20px;
- height:20px;
- font-family:serif;
- line-height:1
-}
-.carousel-control .icon-prev:before{
- content:'\2039'
-}
-.carousel-control .icon-next:before{
- content:'\203a'
-}
-.carousel-indicators{
- position:absolute;
- bottom:10px;
- left:50%;
- z-index:15;
- width:60%;
- padding-left:0;
- margin-left:-30%;
- text-align:center;
- list-style:none
-}
-.carousel-indicators li{
- display:inline-block;
- width:10px;
- height:10px;
- margin:1px;
- text-indent:-999px;
- cursor:pointer;
- background-color:#000\9;
- background-color:rgba(0,0,0,0);
- border:1px solid #fff;
- border-radius:10px
-}
-.carousel-indicators .active{
- width:12px;
- height:12px;
- margin:0;
- background-color:#fff
-}
-.carousel-caption{
- position:absolute;
- right:15%;
- bottom:20px;
- left:15%;
- z-index:10;
- padding-top:20px;
- padding-bottom:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6)
-}
-.carousel-caption .btn{
- text-shadow:none
-}
-@media screen and (min-width:768px){
- .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- width:30px;
- height:30px;
- margin-top:-10px;
- font-size:30px
- }
- .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- margin-left:-10px
- }
- .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- margin-right:-10px
- }
- .carousel-caption{
- right:20%;
- left:20%;
- padding-bottom:30px
- }
- .carousel-indicators{
- bottom:20px
- }
-}
-.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{
- display:table;
- content:" "
-}
-.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{
- clear:both
-}
-.center-block{
- display:block;
- margin-right:auto;
- margin-left:auto
-}
-.pull-right{
- float:right!important
-}
-.pull-left{
- float:left!important
-}
-.hide{
- display:none!important
-}
-.show{
- display:block!important
-}
-.invisible{
- visibility:hidden
-}
-.text-hide{
- font:0/0 a;
- color:transparent;
- text-shadow:none;
- background-color:transparent;
- border:0
-}
-.hidden{
- display:none!important
-}
-.affix{
- position:fixed
-}
-@-ms-viewport{
- width:device-width
-}
-.visible-lg,.visible-md,.visible-sm,.visible-xs{
- display:none!important
-}
-.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{
- display:none!important
-}
-@media (max-width:767px){
- .visible-xs{
- display:block!important
- }
- table.visible-xs{
- display:table!important
- }
- tr.visible-xs{
- display:table-row!important
- }
- td.visible-xs,th.visible-xs{
- display:table-cell!important
- }
-}
-@media (max-width:767px){
- .visible-xs-block{
- display:block!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline{
- display:inline!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm{
- display:block!important
- }
- table.visible-sm{
- display:table!important
- }
- tr.visible-sm{
- display:table-row!important
- }
- td.visible-sm,th.visible-sm{
- display:table-cell!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-block{
- display:block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline{
- display:inline!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md{
- display:block!important
- }
- table.visible-md{
- display:table!important
- }
- tr.visible-md{
- display:table-row!important
- }
- td.visible-md,th.visible-md{
- display:table-cell!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-block{
- display:block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline{
- display:inline!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg{
- display:block!important
- }
- table.visible-lg{
- display:table!important
- }
- tr.visible-lg{
- display:table-row!important
- }
- td.visible-lg,th.visible-lg{
- display:table-cell!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-block{
- display:block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline{
- display:inline!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline-block{
- display:inline-block!important
- }
-}
-@media (max-width:767px){
- .hidden-xs{
- display:none!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .hidden-sm{
- display:none!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .hidden-md{
- display:none!important
- }
-}
-@media (min-width:1200px){
- .hidden-lg{
- display:none!important
- }
-}
-.visible-print{
- display:none!important
-}
-@media print{
- .visible-print{
- display:block!important
- }
- table.visible-print{
- display:table!important
- }
- tr.visible-print{
- display:table-row!important
- }
- td.visible-print,th.visible-print{
- display:table-cell!important
- }
-}
-.visible-print-block{
- display:none!important
-}
-@media print{
- .visible-print-block{
- display:block!important
- }
-}
-.visible-print-inline{
- display:none!important
-}
-@media print{
- .visible-print-inline{
- display:inline!important
- }
-}
-.visible-print-inline-block{
- display:none!important
-}
-@media print{
- .visible-print-inline-block{
- display:inline-block!important
- }
-}
-@media print{
- .hidden-print{
- display:none!important
- }
-}
-/*# sourceMappingURL=bootstrap.min.css.map */
-
diff --git a/themes/squares/client/src/css/01-main.css b/themes/squares/client/src/css/01-main.css
deleted file mode 100644
index be80c2227..000000000
--- a/themes/squares/client/src/css/01-main.css
+++ /dev/null
@@ -1,77 +0,0 @@
-body {
- /*background-image: url("//*img//*LargeTriangles.svg");*/
- /*background-image: url("//*img//*RandomizedPattern.svg");*/
- background-image: url("/img/background.svg");
- /*background-color:#000000;*/
-}
-canvas{
- position:absolute;
- top:0;
- left:0;
-}
-.authelia-brand {
- font-weight: bold;
- font-style: italic;
- color: #ffffff
-}
-.poweredby-block {
- margin: 0px 30px;
- margin-top: 10px;
- padding-top: 15px;
- border-top: 1px solid rgba(0, 0, 0, 0.15);
-
-}
-.poweredby {
- font-size: 0.7em;
- color: white;
-}
-/* notifications */
-.notification {
- padding: 10px;
- margin: 15px 0px;
- border-radius: 6px;
- display: none;
- position: absolute;
-}
-.notification img {
- width: 24px;
- margin-right: 10px;
-}
-.notification i,
-.notification span {
- display:table-cell;
- vertical-align:middle;
-}
-.info {
- border: 1px solid #9cb1ff;
- background-color: rgb(192, 220, 255);
-}
-.success {
- border: 1px solid #65ec7c;
- background-color: rgb(163, 255, 157);
-}
-.error {
- border: 1px solid #ffa3a3;
- background-color: rgb(255, 175, 175);
-}
-.warning {
- border: 1px solid #ffd743;
- background-color: rgb(255, 230, 143);
-}
-.bottom-right-links {
- text-align: right;
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-.header {
- background-color: #000000;
- color: white;
- margin: 0px;
-}
-.body {
- padding: 10px;
-}
-h1 {
- font-size: 25px;
-}
diff --git a/themes/squares/client/src/css/02-login.css b/themes/squares/client/src/css/02-login.css
deleted file mode 100644
index a6984267b..000000000
--- a/themes/squares/client/src/css/02-login.css
+++ /dev/null
@@ -1,136 +0,0 @@
-.form-signin
-{
- margin: 0 auto;
-}
-
-.form-signin .form-signin-heading, .form-signin .checkbox
-{
- margin-bottom: 10px;
-}
-
-.form-signin .checkbox
-{
- font-weight: normal;
-}
-
-.form-signin .form-control
-{
- position: relative;
- font-size: 16px;
- height: auto;
- padding: 10px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.form-signin .form-control:focus
-{
- z-index: 2;
-}
-.form-signin input[type="text"]
-{
- margin-bottom: -1px;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-.form-signin input[type="password"]
-{
- /* margin-bottom: 10px; */
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.account-wall
-{
- border: 1px solid #000;
- margin-top: 20px;
- padding-bottom: 20px;
- background-color: #000000;
- -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
-}
-.account-wall h1
-{
- margin-bottom: 15px;
- margin-top: 15px;
- font-weight: 800;
- display: block;
- text-align: center;
-}
-.account-wall h3
-{
- display: block;
- text-align: center;
-}
-.account-wall p
-{
- text-align: center;
- margin: 10px;
- color: white;
-}
-.account-wall .form-inputs
-{
- margin-bottom: 10px;
- border-color: #b20c0c;
-}
-.account-wall hr {
- border-color: #c5c5c5;
-}
-
-.header-img
-{
- width: 96px;
- height: 96px;
- margin: 0 auto 10px;
- display: block;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
- border-radius: 50%;
-}
-
-.link
-{
- margin-top: 10px;
- color: white;
-}
-
-.btn-primary.totp
-{
- background-color: rgb(102, 135, 162);
-}
-
-.btn-primary.u2f
-{
- background-color: rgb(83, 149, 204);
-}
-
-.u2f-token {
- text-align: center;
-}
-
-.u2f-token img {
- width: 70px;
-}
-
-.keep-me-logged-in {
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-
-.keep-me-logged-in input[type=checkbox] {
- transform: scale(0.8);
- margin: 0;
- margin-right: 4px;
-}
-
-.keep-me-logged-in label {
- font-weight: 300;
-}
-
-.keep-me-logged-in input,
-.keep-me-logged-in label {
- display: inline-block;
- margin-bottom: 0; /* I added this after I posted my reply */
- vertical-align: middle; /* Fixes any weird issues in Firefox and IE */
-}
diff --git a/themes/squares/client/src/css/03-errors.css b/themes/squares/client/src/css/03-errors.css
deleted file mode 100644
index e9f97f33b..000000000
--- a/themes/squares/client/src/css/03-errors.css
+++ /dev/null
@@ -1,12 +0,0 @@
-
-.error-401 .header-img {
- border-radius: 0%;
-}
-
-.error-403 .header-img {
- border-radius: 0%;
-}
-
-.error-404 .header-img {
- border-radius: 0%;
-}
\ No newline at end of file
diff --git a/themes/squares/client/src/css/03-password-reset-form.css b/themes/squares/client/src/css/03-password-reset-form.css
deleted file mode 100644
index 34066bc24..000000000
--- a/themes/squares/client/src/css/03-password-reset-form.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-form .header-img {
- border-radius: 0%;
-}
diff --git a/themes/squares/client/src/css/03-password-reset-request.css b/themes/squares/client/src/css/03-password-reset-request.css
deleted file mode 100644
index 1a2ad4df8..000000000
--- a/themes/squares/client/src/css/03-password-reset-request.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-request .header-img {
- border-radius: 0%;
-}
diff --git a/themes/squares/client/src/css/03-totp-register.css b/themes/squares/client/src/css/03-totp-register.css
deleted file mode 100644
index cb76720ad..000000000
--- a/themes/squares/client/src/css/03-totp-register.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.totp-register #secret {
- background-color: white;
- font-size: 0.9em;
- font-weight: bold;
- padding: 5px;
- border: 1px solid #c7c7c7;
- word-wrap: break-word;
-}
-.totp-register #qrcode img {
- margin: 10px auto;
-}
-.totp-register .need-google-authenticator {
- text-align: center;
- margin-top: 20px;
-}
-.totp-register .store-badges {
- margin-top: 5px;
-}
-.totp-register .store-badge {
- width: 110px;
- height: 30px;
-}
\ No newline at end of file
diff --git a/themes/squares/client/src/css/03-u2f-register.css b/themes/squares/client/src/css/03-u2f-register.css
deleted file mode 100644
index e54cddf89..000000000
--- a/themes/squares/client/src/css/03-u2f-register.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
-.u2f-register img {
- display: block;
- margin: 20px auto;
-}
\ No newline at end of file
diff --git a/themes/squares/client/src/img/LargeTriangles.svg b/themes/squares/client/src/img/LargeTriangles.svg
deleted file mode 100644
index 0988bcb39..000000000
--- a/themes/squares/client/src/img/LargeTriangles.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/themes/squares/client/src/img/RandomizedPattern.svg b/themes/squares/client/src/img/RandomizedPattern.svg
deleted file mode 100644
index 51afee6d6..000000000
--- a/themes/squares/client/src/img/RandomizedPattern.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/themes/squares/client/src/img/background.jpg b/themes/squares/client/src/img/background.jpg
deleted file mode 100644
index 974ea273f..000000000
Binary files a/themes/squares/client/src/img/background.jpg and /dev/null differ
diff --git a/themes/squares/client/src/img/background.svg b/themes/squares/client/src/img/background.svg
deleted file mode 100644
index 668312f9f..000000000
--- a/themes/squares/client/src/img/background.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/themes/squares/client/src/img/icon.png b/themes/squares/client/src/img/icon.png
deleted file mode 100644
index 040d10c1a..000000000
Binary files a/themes/squares/client/src/img/icon.png and /dev/null differ
diff --git a/themes/squares/client/src/img/mail.png b/themes/squares/client/src/img/mail.png
deleted file mode 100644
index 834bfce91..000000000
Binary files a/themes/squares/client/src/img/mail.png and /dev/null differ
diff --git a/themes/squares/client/src/img/matrix_circle_128x128.png b/themes/squares/client/src/img/matrix_circle_128x128.png
deleted file mode 100644
index 856e01556..000000000
Binary files a/themes/squares/client/src/img/matrix_circle_128x128.png and /dev/null differ
diff --git a/themes/squares/client/src/img/notifications/.directory b/themes/squares/client/src/img/notifications/.directory
deleted file mode 100644
index 7c8b80541..000000000
--- a/themes/squares/client/src/img/notifications/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,35
-Version=3
-ViewMode=1
diff --git a/themes/squares/client/src/img/notifications/error.png b/themes/squares/client/src/img/notifications/error.png
deleted file mode 100644
index bf64d28f7..000000000
Binary files a/themes/squares/client/src/img/notifications/error.png and /dev/null differ
diff --git a/themes/squares/client/src/img/notifications/info.png b/themes/squares/client/src/img/notifications/info.png
deleted file mode 100644
index 67928e88c..000000000
Binary files a/themes/squares/client/src/img/notifications/info.png and /dev/null differ
diff --git a/themes/squares/client/src/img/notifications/success.png b/themes/squares/client/src/img/notifications/success.png
deleted file mode 100644
index d3998392d..000000000
Binary files a/themes/squares/client/src/img/notifications/success.png and /dev/null differ
diff --git a/themes/squares/client/src/img/notifications/warning.png b/themes/squares/client/src/img/notifications/warning.png
deleted file mode 100644
index ab8b54ffc..000000000
Binary files a/themes/squares/client/src/img/notifications/warning.png and /dev/null differ
diff --git a/themes/squares/client/src/img/padlock.png b/themes/squares/client/src/img/padlock.png
deleted file mode 100644
index 31abbaeef..000000000
Binary files a/themes/squares/client/src/img/padlock.png and /dev/null differ
diff --git a/themes/squares/client/src/img/password_white.png b/themes/squares/client/src/img/password_white.png
deleted file mode 100644
index 0b93ef3fb..000000000
Binary files a/themes/squares/client/src/img/password_white.png and /dev/null differ
diff --git a/themes/squares/client/src/img/pendrive.png b/themes/squares/client/src/img/pendrive.png
deleted file mode 100644
index fa49178c3..000000000
Binary files a/themes/squares/client/src/img/pendrive.png and /dev/null differ
diff --git a/themes/squares/client/src/img/sharingan.png b/themes/squares/client/src/img/sharingan.png
deleted file mode 100644
index 526787d3b..000000000
Binary files a/themes/squares/client/src/img/sharingan.png and /dev/null differ
diff --git a/themes/squares/client/src/img/stores/.directory b/themes/squares/client/src/img/stores/.directory
deleted file mode 100644
index 7bdc8daf8..000000000
--- a/themes/squares/client/src/img/stores/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,25
-Version=3
-ViewMode=1
diff --git a/themes/squares/client/src/img/stores/applestore-badge.svg b/themes/squares/client/src/img/stores/applestore-badge.svg
deleted file mode 100644
index ac111e597..000000000
--- a/themes/squares/client/src/img/stores/applestore-badge.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/squares/client/src/img/stores/googleplay-badge.svg b/themes/squares/client/src/img/stores/googleplay-badge.svg
deleted file mode 100644
index 9e33e3aa2..000000000
--- a/themes/squares/client/src/img/stores/googleplay-badge.svg
+++ /dev/null
@@ -1,429 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/themes/squares/client/src/img/success.png b/themes/squares/client/src/img/success.png
deleted file mode 100644
index ee9d6841b..000000000
Binary files a/themes/squares/client/src/img/success.png and /dev/null differ
diff --git a/themes/squares/client/src/img/user.png b/themes/squares/client/src/img/user.png
deleted file mode 100644
index 00941399d..000000000
Binary files a/themes/squares/client/src/img/user.png and /dev/null differ
diff --git a/themes/squares/client/src/img/warning.png b/themes/squares/client/src/img/warning.png
deleted file mode 100644
index c6acd953b..000000000
Binary files a/themes/squares/client/src/img/warning.png and /dev/null differ
diff --git a/themes/squares/client/src/thirdparties/qrcode.min.js b/themes/squares/client/src/thirdparties/qrcode.min.js
deleted file mode 100644
index 993e88f39..000000000
--- a/themes/squares/client/src/thirdparties/qrcode.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push(' ');g.push(" ")}g.push("
"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
diff --git a/themes/squares/client/src/thirdparties/u2f-api.js b/themes/squares/client/src/thirdparties/u2f-api.js
deleted file mode 100644
index 8c7801e3b..000000000
--- a/themes/squares/client/src/thirdparties/u2f-api.js
+++ /dev/null
@@ -1,749 +0,0 @@
-//Copyright 2014-2015 Google Inc. All rights reserved.
-
-//Use of this source code is governed by a BSD-style
-//license that can be found in the LICENSE file or at
-//https://developers.google.com/open-source/licenses/bsd
-
-/**
- * @fileoverview The U2F api.
- */
-'use strict';
-
-
-/**
- * Namespace for the U2F api.
- * @type {Object}
- */
-var u2f = u2f || {};
-
-/**
- * FIDO U2F Javascript API Version
- * @number
- */
-var js_api_version;
-
-/**
- * The U2F extension id
- * @const {string}
- */
-// The Chrome packaged app extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the package Chrome app and does not require installing the U2F Chrome extension.
- u2f.EXTENSION_ID = 'kmendfapggjehodndflmmgagdbamhnfd';
-// The U2F Chrome extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the U2F Chrome extension to authenticate.
-// u2f.EXTENSION_ID = 'pfboblefjcgdjicmnffhdgionmgcdmne';
-
-
-/**
- * Message types for messsages to/from the extension
- * @const
- * @enum {string}
- */
-u2f.MessageTypes = {
- 'U2F_REGISTER_REQUEST': 'u2f_register_request',
- 'U2F_REGISTER_RESPONSE': 'u2f_register_response',
- 'U2F_SIGN_REQUEST': 'u2f_sign_request',
- 'U2F_SIGN_RESPONSE': 'u2f_sign_response',
- 'U2F_GET_API_VERSION_REQUEST': 'u2f_get_api_version_request',
- 'U2F_GET_API_VERSION_RESPONSE': 'u2f_get_api_version_response'
-};
-
-
-/**
- * Response status codes
- * @const
- * @enum {number}
- */
-u2f.ErrorCodes = {
- 'OK': 0,
- 'OTHER_ERROR': 1,
- 'BAD_REQUEST': 2,
- 'CONFIGURATION_UNSUPPORTED': 3,
- 'DEVICE_INELIGIBLE': 4,
- 'TIMEOUT': 5
-};
-
-
-/**
- * A message for registration requests
- * @typedef {{
- * type: u2f.MessageTypes,
- * appId: ?string,
- * timeoutSeconds: ?number,
- * requestId: ?number
- * }}
- */
-u2f.U2fRequest;
-
-
-/**
- * A message for registration responses
- * @typedef {{
- * type: u2f.MessageTypes,
- * responseData: (u2f.Error | u2f.RegisterResponse | u2f.SignResponse),
- * requestId: ?number
- * }}
- */
-u2f.U2fResponse;
-
-
-/**
- * An error object for responses
- * @typedef {{
- * errorCode: u2f.ErrorCodes,
- * errorMessage: ?string
- * }}
- */
-u2f.Error;
-
-/**
- * Data object for a single sign request.
- * @typedef {enum {BLUETOOTH_RADIO, BLUETOOTH_LOW_ENERGY, USB, NFC}}
- */
-u2f.Transport;
-
-
-/**
- * Data object for a single sign request.
- * @typedef {Array}
- */
-u2f.Transports;
-
-/**
- * Data object for a single sign request.
- * @typedef {{
- * version: string,
- * challenge: string,
- * keyHandle: string,
- * appId: string
- * }}
- */
-u2f.SignRequest;
-
-
-/**
- * Data object for a sign response.
- * @typedef {{
- * keyHandle: string,
- * signatureData: string,
- * clientData: string
- * }}
- */
-u2f.SignResponse;
-
-
-/**
- * Data object for a registration request.
- * @typedef {{
- * version: string,
- * challenge: string
- * }}
- */
-u2f.RegisterRequest;
-
-
-/**
- * Data object for a registration response.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: Transports,
- * appId: string
- * }}
- */
-u2f.RegisterResponse;
-
-
-/**
- * Data object for a registered key.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: ?Transports,
- * appId: ?string
- * }}
- */
-u2f.RegisteredKey;
-
-
-/**
- * Data object for a get API register response.
- * @typedef {{
- * js_api_version: number
- * }}
- */
-u2f.GetJsApiVersionResponse;
-
-
-//Low level MessagePort API support
-
-/**
- * Sets up a MessagePort to the U2F extension using the
- * available mechanisms.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- */
-u2f.getMessagePort = function(callback) {
- if (typeof chrome != 'undefined' && chrome.runtime) {
- // The actual message here does not matter, but we need to get a reply
- // for the callback to run. Thus, send an empty signature request
- // in order to get a failure response.
- var msg = {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: []
- };
- chrome.runtime.sendMessage(u2f.EXTENSION_ID, msg, function() {
- if (!chrome.runtime.lastError) {
- // We are on a whitelisted origin and can talk directly
- // with the extension.
- u2f.getChromeRuntimePort_(callback);
- } else {
- // chrome.runtime was available, but we couldn't message
- // the extension directly, use iframe
- u2f.getIframePort_(callback);
- }
- });
- } else if (u2f.isAndroidChrome_()) {
- u2f.getAuthenticatorPort_(callback);
- } else if (u2f.isIosChrome_()) {
- u2f.getIosPort_(callback);
- } else {
- // chrome.runtime was not available at all, which is normal
- // when this origin doesn't have access to any extensions.
- u2f.getIframePort_(callback);
- }
-};
-
-/**
- * Detect chrome running on android based on the browser's useragent.
- * @private
- */
-u2f.isAndroidChrome_ = function() {
- var userAgent = navigator.userAgent;
- return userAgent.indexOf('Chrome') != -1 &&
- userAgent.indexOf('Android') != -1;
-};
-
-/**
- * Detect chrome running on iOS based on the browser's platform.
- * @private
- */
-u2f.isIosChrome_ = function() {
- return ["iPhone", "iPad", "iPod"].indexOf(navigator.platform) > -1;
-};
-
-/**
- * Connects directly to the extension via chrome.runtime.connect.
- * @param {function(u2f.WrappedChromeRuntimePort_)} callback
- * @private
- */
-u2f.getChromeRuntimePort_ = function(callback) {
- var port = chrome.runtime.connect(u2f.EXTENSION_ID,
- {'includeTlsChannelId': true});
- setTimeout(function() {
- callback(new u2f.WrappedChromeRuntimePort_(port));
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the Authenticator app.
- * @param {function(u2f.WrappedAuthenticatorPort_)} callback
- * @private
- */
-u2f.getAuthenticatorPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedAuthenticatorPort_());
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the iOS client app.
- * @param {function(u2f.WrappedIosPort_)} callback
- * @private
- */
-u2f.getIosPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedIosPort_());
- }, 0);
-};
-
-/**
- * A wrapper for chrome.runtime.Port that is compatible with MessagePort.
- * @param {Port} port
- * @constructor
- * @private
- */
-u2f.WrappedChromeRuntimePort_ = function(port) {
- this.port_ = port;
-};
-
-/**
- * Format and return a sign request compliant with the JS API version supported by the extension.
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatSignRequest_ =
- function(appId, challenge, registeredKeys, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: challenge,
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: signRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- appId: appId,
- challenge: challenge,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-/**
- * Format and return a register request compliant with the JS API version supported by the extension..
- * @param {Array} signRequests
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatRegisterRequest_ =
- function(appId, registeredKeys, registerRequests, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- for (var i = 0; i < registerRequests.length; i++) {
- registerRequests[i].appId = appId;
- }
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: registerRequests[0],
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- signRequests: signRequests,
- registerRequests: registerRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- appId: appId,
- registerRequests: registerRequests,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-
-/**
- * Posts a message on the underlying channel.
- * @param {Object} message
- */
-u2f.WrappedChromeRuntimePort_.prototype.postMessage = function(message) {
- this.port_.postMessage(message);
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface. Works only for the
- * onmessage event, which is hooked up to the chrome.runtime.Port.onMessage.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedChromeRuntimePort_.prototype.addEventListener =
- function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message' || name == 'onmessage') {
- this.port_.onMessage.addListener(function(message) {
- // Emulate a minimal MessageEvent object
- handler({'data': message});
- });
- } else {
- console.error('WrappedChromeRuntimePort only supports onMessage');
- }
-};
-
-/**
- * Wrap the Authenticator app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedAuthenticatorPort_ = function() {
- this.requestId_ = -1;
- this.requestObject_ = null;
-}
-
-/**
- * Launch the Authenticator intent.
- * @param {Object} message
- */
-u2f.WrappedAuthenticatorPort_.prototype.postMessage = function(message) {
- var intentUrl =
- u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ +
- ';S.request=' + encodeURIComponent(JSON.stringify(message)) +
- ';end';
- document.location = intentUrl;
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedAuthenticatorPort_.prototype.getPortType = function() {
- return "WrappedAuthenticatorPort_";
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedAuthenticatorPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message') {
- var self = this;
- /* Register a callback to that executes when
- * chrome injects the response. */
- window.addEventListener(
- 'message', self.onRequestUpdate_.bind(self, handler), false);
- } else {
- console.error('WrappedAuthenticatorPort only supports message');
- }
-};
-
-/**
- * Callback invoked when a response is received from the Authenticator.
- * @param function({data: Object}) callback
- * @param {Object} message message Object
- */
-u2f.WrappedAuthenticatorPort_.prototype.onRequestUpdate_ =
- function(callback, message) {
- var messageObject = JSON.parse(message.data);
- var intentUrl = messageObject['intentURL'];
-
- var errorCode = messageObject['errorCode'];
- var responseObject = null;
- if (messageObject.hasOwnProperty('data')) {
- responseObject = /** @type {Object} */ (
- JSON.parse(messageObject['data']));
- }
-
- callback({'data': responseObject});
-};
-
-/**
- * Base URL for intents to Authenticator.
- * @const
- * @private
- */
-u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ =
- 'intent:#Intent;action=com.google.android.apps.authenticator.AUTHENTICATE';
-
-/**
- * Wrap the iOS client app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedIosPort_ = function() {};
-
-/**
- * Launch the iOS client app request
- * @param {Object} message
- */
-u2f.WrappedIosPort_.prototype.postMessage = function(message) {
- var str = JSON.stringify(message);
- var url = "u2f://auth?" + encodeURI(str);
- location.replace(url);
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedIosPort_.prototype.getPortType = function() {
- return "WrappedIosPort_";
-};
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedIosPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name !== 'message') {
- console.error('WrappedIosPort only supports message');
- }
-};
-
-/**
- * Sets up an embedded trampoline iframe, sourced from the extension.
- * @param {function(MessagePort)} callback
- * @private
- */
-u2f.getIframePort_ = function(callback) {
- // Create the iframe
- var iframeOrigin = 'chrome-extension://' + u2f.EXTENSION_ID;
- var iframe = document.createElement('iframe');
- iframe.src = iframeOrigin + '/u2f-comms.html';
- iframe.setAttribute('style', 'display:none');
- document.body.appendChild(iframe);
-
- var channel = new MessageChannel();
- var ready = function(message) {
- if (message.data == 'ready') {
- channel.port1.removeEventListener('message', ready);
- callback(channel.port1);
- } else {
- console.error('First event on iframe port was not "ready"');
- }
- };
- channel.port1.addEventListener('message', ready);
- channel.port1.start();
-
- iframe.addEventListener('load', function() {
- // Deliver the port to the iframe and initialize
- iframe.contentWindow.postMessage('init', iframeOrigin, [channel.port2]);
- });
-};
-
-
-//High-level JS API
-
-/**
- * Default extension response timeout in seconds.
- * @const
- */
-u2f.EXTENSION_TIMEOUT_SEC = 30;
-
-/**
- * A singleton instance for a MessagePort to the extension.
- * @type {MessagePort|u2f.WrappedChromeRuntimePort_}
- * @private
- */
-u2f.port_ = null;
-
-/**
- * Callbacks waiting for a port
- * @type {Array}
- * @private
- */
-u2f.waitingForPort_ = [];
-
-/**
- * A counter for requestIds.
- * @type {number}
- * @private
- */
-u2f.reqCounter_ = 0;
-
-/**
- * A map from requestIds to client callbacks
- * @type {Object.}
- * @private
- */
-u2f.callbackMap_ = {};
-
-/**
- * Creates or retrieves the MessagePort singleton to use.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- * @private
- */
-u2f.getPortSingleton_ = function(callback) {
- if (u2f.port_) {
- callback(u2f.port_);
- } else {
- if (u2f.waitingForPort_.length == 0) {
- u2f.getMessagePort(function(port) {
- u2f.port_ = port;
- u2f.port_.addEventListener('message',
- /** @type {function(Event)} */ (u2f.responseHandler_));
-
- // Careful, here be async callbacks. Maybe.
- while (u2f.waitingForPort_.length)
- u2f.waitingForPort_.shift()(u2f.port_);
- });
- }
- u2f.waitingForPort_.push(callback);
- }
-};
-
-/**
- * Handles response messages from the extension.
- * @param {MessageEvent.} message
- * @private
- */
-u2f.responseHandler_ = function(message) {
- var response = message.data;
- var reqId = response['requestId'];
- if (!reqId || !u2f.callbackMap_[reqId]) {
- console.error('Unknown or missing requestId in response.');
- return;
- }
- var cb = u2f.callbackMap_[reqId];
- delete u2f.callbackMap_[reqId];
- cb(response['responseData']);
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the sign request.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sign = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual sign request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0 : response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual sign request in the supported API version.
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendSignRequest = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatSignRequest_(appId, challenge, registeredKeys, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the register request.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.register = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual register request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0: response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual register request in the supported API version.
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendRegisterRequest = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatRegisterRequest_(
- appId, registeredKeys, registerRequests, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-
-/**
- * Dispatches a message to the extension to find out the supported
- * JS API version.
- * If the user is on a mobile phone and is thus using Google Authenticator instead
- * of the Chrome extension, don't send the request and simply return 0.
- * @param {function((u2f.Error|u2f.GetJsApiVersionResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.getApiVersion = function(callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- // If we are using Android Google Authenticator or iOS client app,
- // do not fire an intent to ask which JS API version to use.
- if (port.getPortType) {
- var apiVersion;
- switch (port.getPortType()) {
- case 'WrappedIosPort_':
- case 'WrappedAuthenticatorPort_':
- apiVersion = 1.1;
- break;
-
- default:
- apiVersion = 0;
- break;
- }
- callback({ 'js_api_version': apiVersion });
- return;
- }
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var req = {
- type: u2f.MessageTypes.U2F_GET_API_VERSION_REQUEST,
- timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),
- requestId: reqId
- };
- port.postMessage(req);
- });
-};
-
diff --git a/themes/squares/server/.directory b/themes/squares/server/.directory
deleted file mode 100644
index b7754766c..000000000
--- a/themes/squares/server/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,58,20
-Version=3
-ViewMode=1
diff --git a/themes/squares/server/src/resources/email-template.ejs b/themes/squares/server/src/resources/email-template.ejs
deleted file mode 100644
index f59c2f944..000000000
--- a/themes/squares/server/src/resources/email-template.ejs
+++ /dev/null
@@ -1,254 +0,0 @@
-
-
-
-
-
- Simples-Minimalistic Responsive Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <%= title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This email has been sent to you in order to validate your identity. Please ignore it if you do not know why you received it.
-
-
-
-
-
-
-
-
-
-
-
- <%= button_title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Please ignore this email if you did not initiate the process.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/squares/server/src/views/already-logged-in.pug b/themes/squares/server/src/views/already-logged-in.pug
deleted file mode 100644
index 137bbea30..000000000
--- a/themes/squares/server/src/views/already-logged-in.pug
+++ /dev/null
@@ -1,14 +0,0 @@
-extends layout/layout.pug
-
-block form-header
- h1 Sign in
-
-block content
- img(class="header-img" src="/img/success.png" alt="success")
- if redirection_url
- p You are already logged in as #{ username } .
- | If you are not redirected in few seconds, click here .
- | Otherwise, click here to log off.
- else
- p You are already logged in as #{ username } .
- | Click here to log off.
diff --git a/themes/squares/server/src/views/errors/.directory b/themes/squares/server/src/views/errors/.directory
deleted file mode 100644
index 33f71bea4..000000000
--- a/themes/squares/server/src/views/errors/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,59,57
-Version=3
-ViewMode=1
diff --git a/themes/squares/server/src/views/errors/401.pug b/themes/squares/server/src/views/errors/401.pug
deleted file mode 100644
index b7a222ad0..000000000
--- a/themes/squares/server/src/views/errors/401.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-401";
-
-block form-header
- h1 Error 401
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You are not authorized to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You are not authorized to access this resource.
\ No newline at end of file
diff --git a/themes/squares/server/src/views/errors/403.pug b/themes/squares/server/src/views/errors/403.pug
deleted file mode 100644
index f4b5ca8a2..000000000
--- a/themes/squares/server/src/views/errors/403.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-403";
-
-block form-header
- h1 Error 403
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You don't have enough privileges to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You don't have enough privileges to access this resource.
diff --git a/themes/squares/server/src/views/errors/404.pug b/themes/squares/server/src/views/errors/404.pug
deleted file mode 100644
index 06d6375fc..000000000
--- a/themes/squares/server/src/views/errors/404.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-404";
-
-block form-header
- Error 404
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- p Page not found.
diff --git a/themes/squares/server/src/views/firstfactor.pug b/themes/squares/server/src/views/firstfactor.pug
deleted file mode 100644
index 574470710..000000000
--- a/themes/squares/server/src/views/firstfactor.pug
+++ /dev/null
@@ -1,23 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "firstfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/sharingan.png" alt="user profile")
- p Enter your credentials to sign in
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" id="username" placeholder="Username" required autofocus)
- input(type="password" class="form-control" id="password" placeholder="Password" required)
- button(id="signin" class="btn btn-lg btn-primary btn-block" type="submit") Sign in
- div(class="keep-me-logged-in pull-left")
- input(type="checkbox" id="keep_me_logged_in" name="keep_me_logged_in" value="true")
- label(for="keep_me_logged_in") Keep me logged in
- div(class="bottom-right-links pull-right")
- a(href=reset_password_request_endpoint, class="link forgot-password") Forgot password?
- span(class="clearfix")
diff --git a/themes/squares/server/src/views/layout/layout.pug b/themes/squares/server/src/views/layout/layout.pug
deleted file mode 100644
index 43247436d..000000000
--- a/themes/squares/server/src/views/layout/layout.pug
+++ /dev/null
@@ -1,28 +0,0 @@
-block variables
-
-doctype html
-html
- head
- title Authelia - 2FA
- meta(name="viewport", content="width=device-width, initial-scale=1.0")
- meta(name="robots", content="noindex, nofollow, nosnippet, noarchive")
- meta(http-equiv="Content-Security-Policy", content="default-src 'self'; img-src 'self' data:;")
- link(rel="icon", href="/img/icon.png" type="image/png" sizes="32x32")
- link(rel="stylesheet", type="text/css", href="/css/authelia.css")
- if redirection_url
- meta(http-equiv="refresh" content="4;url=" + redirection_url)
- body
- div(class="container")
- div(class="row")
- div(class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3")
- div(class="account-wall " + page_classname)
- div(class="row header")
- block form-header
- div(class="row body")
- div(class="form col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2")
- block content
- div(class="row footer poweredby-block")
- div(class="poweredby col-xs-6 col-xs-offset-4 col-sm-6 col-sm-offset-4 col-md-6 col-md-offset-4")
- | Powered by Authelia
- block entrypoint
- script(src="/js/authelia.js", type="text/javascript")
diff --git a/themes/squares/server/src/views/need-identity-validation.pug b/themes/squares/server/src/views/need-identity-validation.pug
deleted file mode 100644
index 4cfd62717..000000000
--- a/themes/squares/server/src/views/need-identity-validation.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "identity-validation";
-
-block form-header
- h1 Registration
-
-block content
- img(class="header-img" src="/img/mail.png" alt="mail")
- p A confirmation email has been sent to your mailbox.
- | Please open it and click on the link within 15 minutes to confirm the registration.
diff --git a/themes/squares/server/src/views/password-reset-form.pug b/themes/squares/server/src/views/password-reset-form.pug
deleted file mode 100644
index fd9311892..000000000
--- a/themes/squares/server/src/views/password-reset-form.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-form";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/password_white.png" alt="password")
- p Set your new password and confirm it.
- form(class="form-signin")
- div(class="form-inputs")
- input(class="form-control" type="password" name="password1" id="password1" placeholder="New password" required="required")
- input(class="form-control" type="password" name="password2" id="password2" placeholder="Password confirmation" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/squares/server/src/views/password-reset-request.pug b/themes/squares/server/src/views/password-reset-request.pug
deleted file mode 100644
index 855b5998b..000000000
--- a/themes/squares/server/src/views/password-reset-request.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-request";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- div
- img(class="header-img" src="/img/password_white.png" alt="password")
- p After giving your username, you will receive an email to change your password.
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" name="username" id="username" placeholder="Your username" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/squares/server/src/views/secondfactor.pug b/themes/squares/server/src/views/secondfactor.pug
deleted file mode 100644
index 87b578185..000000000
--- a/themes/squares/server/src/views/secondfactor.pug
+++ /dev/null
@@ -1,31 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "secondfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div
- div(class="notification notification-totp")
- h3 Hi #{username}
- div(class="row")
- div(class="u2f-token")
- img(src="/img/pendrive.png", alt="security key")
- p
- | Please, touch your security key
- b Or
- | Get a one-time password
- form(class="form-signin totp")
- div(class="form-inputs")
- input(type="text" autocomplete="off" class="form-control" id="token" placeholder="Token" required autofocus)
- button(class="btn btn-lg btn-primary btn-block totp-button" type="submit") Sign in
- div(class="pull-right bottom-right-links")
- div Need to register?
- div
- a(href=u2f_identity_start_endpoint, class="link register-u2f", data-toggle="tooltip", title="A security key is required to register.") Security key
- | |
- a(href=totp_identity_start_endpoint, class="link register-totp") Google Authenticator
- span(class="clearfix")
- script(src="/js/u2f-api.js", type="text/javascript")
diff --git a/themes/squares/server/src/views/totp-register.pug b/themes/squares/server/src/views/totp-register.pug
deleted file mode 100644
index 1b4d98354..000000000
--- a/themes/squares/server/src/views/totp-register.pug
+++ /dev/null
@@ -1,25 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "totp-register";
-
-block form-header
- h1 One-time passwords
-
-block content
- p Open Google Authenticator and add this entry
- p(id="secret") #{ base32_secret }
- p or scan this barcode
- div(id="qrcode") #{ otpauth_url }
- p
- a(href=login_endpoint, id="login-button") Login
- div(class="need-google-authenticator")
- | Need Google Authenticator?
- div(class="store-badges")
- a(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
- img(alt='Get it on Google Play', src='/img/stores/googleplay-badge.svg', class="store-badge")
- a(href='https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8', target="_blank")
- img(alt='Get it on Apple Store' src='/img/stores/applestore-badge.svg' class="store-badge")
-
-block entrypoint
- script(src="/js/qrcode.min.js", type="text/javascript" )
diff --git a/themes/squares/server/src/views/u2f-register.pug b/themes/squares/server/src/views/u2f-register.pug
deleted file mode 100644
index d52eba6ca..000000000
--- a/themes/squares/server/src/views/u2f-register.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "u2f-register";
-
-block form-header
- h1 Register your security key
-
-block content
- p Touch the token to register your security key.
- img(src="/img/pendrive.png" alt="pendrive")
- script(src="/js/u2f-api.js", type="text/javascript")
\ No newline at end of file
diff --git a/themes/triangles/client/src/.directory b/themes/triangles/client/src/.directory
deleted file mode 100644
index 72a940d6a..000000000
--- a/themes/triangles/client/src/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,18,8,25,40
-Version=3
-ViewMode=1
diff --git a/themes/triangles/client/src/css/.directory b/themes/triangles/client/src/css/.directory
deleted file mode 100644
index 6e4b3f639..000000000
--- a/themes/triangles/client/src/css/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,56,41
-Version=3
-ViewMode=1
diff --git a/themes/triangles/client/src/css/00-bootstrap.min.css b/themes/triangles/client/src/css/00-bootstrap.min.css
deleted file mode 100644
index dfeacbb88..000000000
--- a/themes/triangles/client/src/css/00-bootstrap.min.css
+++ /dev/null
@@ -1,5768 +0,0 @@
-/*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html{
- font-family:sans-serif;
- -webkit-text-size-adjust:100%;
- -ms-text-size-adjust:100%
-}
-body{
- margin:0
-}
-article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{
- display:block
-}
-audio,canvas,progress,video{
- display:inline-block;
- vertical-align:baseline
-}
-audio:not([controls]){
- display:none;
- height:0
-}
-[hidden],template{
- display:none
-}
-a{
- background-color:transparent
-}
-a:active,a:hover{
- outline:0
-}
-abbr[title]{
- border-bottom:1px dotted
-}
-b,strong{
- font-weight:700
-}
-dfn{
- font-style:italic
-}
-h1{
- margin:.67em 0;
- font-size:2em
-}
-mark{
- color:#000;
- background:#ff0
-}
-small{
- font-size:80%
-}
-sub,sup{
- position:relative;
- font-size:75%;
- line-height:0;
- vertical-align:baseline
-}
-sup{
- top:-.5em
-}
-sub{
- bottom:-.25em
-}
-img{
- border:0
-}
-svg:not(:root){
- overflow:hidden
-}
-figure{
- margin:1em 40px
-}
-hr{
- height:0;
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box
-}
-pre{
- overflow:auto
-}
-code,kbd,pre,samp{
- font-family:monospace,monospace;
- font-size:1em
-}
-button,input,optgroup,select,textarea{
- margin:0;
- font:inherit;
- color:inherit
-}
-button{
- overflow:visible
-}
-button,select{
- text-transform:none
-}
-button,html input[type=button],input[type=reset],input[type=submit]{
- -webkit-appearance:button;
- cursor:pointer
-}
-button[disabled],html input[disabled]{
- cursor:default
-}
-button::-moz-focus-inner,input::-moz-focus-inner{
- padding:0;
- border:0
-}
-input{
- line-height:normal
-}
-input[type=checkbox],input[type=radio]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box;
- padding:0
-}
-input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{
- height:auto
-}
-input[type=search]{
- -webkit-box-sizing:content-box;
- -moz-box-sizing:content-box;
- box-sizing:content-box;
- -webkit-appearance:textfield
-}
-input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{
- -webkit-appearance:none
-}
-fieldset{
- padding:.35em .625em .75em;
- margin:0 2px;
- border:1px solid silver
-}
-legend{
- padding:0;
- border:0
-}
-textarea{
- overflow:auto
-}
-optgroup{
- font-weight:700
-}
-table{
- border-spacing:0;
- border-collapse:collapse
-}
-td,th{
- padding:0
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print{
- *,:after,:before{
- color:#000!important;
- text-shadow:none!important;
- background:0 0!important;
- -webkit-box-shadow:none!important;
- box-shadow:none!important
- }
- a,a:visited{
- text-decoration:underline
- }
- a[href]:after{
- content:" (" attr(href) ")"
- }
- abbr[title]:after{
- content:" (" attr(title) ")"
- }
- a[href^="javascript:"]:after,a[href^="#"]:after{
- content:""
- }
- blockquote,pre{
- border:1px solid #999;
- page-break-inside:avoid
- }
- thead{
- display:table-header-group
- }
- img,tr{
- page-break-inside:avoid
- }
- img{
- max-width:100%!important
- }
- h2,h3,p{
- orphans:3;
- widows:3
- }
- h2,h3{
- page-break-after:avoid
- }
- .navbar{
- display:none
- }
- .btn>.caret,.dropup>.btn>.caret{
- border-top-color:#000!important
- }
- .label{
- border:1px solid #000
- }
- .table{
- border-collapse:collapse!important
- }
- .table td,.table th{
- background-color:#fff!important
- }
- .table-bordered td,.table-bordered th{
- border:1px solid #ddd!important
- }
-}
-@font-face{
- font-family:'Glyphicons Halflings';
- src:url(../fonts/glyphicons-halflings-regular.eot);
- src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')
-}
-.glyphicon{
- position:relative;
- top:1px;
- display:inline-block;
- font-family:'Glyphicons Halflings';
- font-style:normal;
- font-weight:400;
- line-height:1;
- -webkit-font-smoothing:antialiased;
- -moz-osx-font-smoothing:grayscale
-}
-.glyphicon-asterisk:before{
- content:"\002a"
-}
-.glyphicon-plus:before{
- content:"\002b"
-}
-.glyphicon-eur:before,.glyphicon-euro:before{
- content:"\20ac"
-}
-.glyphicon-minus:before{
- content:"\2212"
-}
-.glyphicon-cloud:before{
- content:"\2601"
-}
-.glyphicon-envelope:before{
- content:"\2709"
-}
-.glyphicon-pencil:before{
- content:"\270f"
-}
-.glyphicon-glass:before{
- content:"\e001"
-}
-.glyphicon-music:before{
- content:"\e002"
-}
-.glyphicon-search:before{
- content:"\e003"
-}
-.glyphicon-heart:before{
- content:"\e005"
-}
-.glyphicon-star:before{
- content:"\e006"
-}
-.glyphicon-star-empty:before{
- content:"\e007"
-}
-.glyphicon-user:before{
- content:"\e008"
-}
-.glyphicon-film:before{
- content:"\e009"
-}
-.glyphicon-th-large:before{
- content:"\e010"
-}
-.glyphicon-th:before{
- content:"\e011"
-}
-.glyphicon-th-list:before{
- content:"\e012"
-}
-.glyphicon-ok:before{
- content:"\e013"
-}
-.glyphicon-remove:before{
- content:"\e014"
-}
-.glyphicon-zoom-in:before{
- content:"\e015"
-}
-.glyphicon-zoom-out:before{
- content:"\e016"
-}
-.glyphicon-off:before{
- content:"\e017"
-}
-.glyphicon-signal:before{
- content:"\e018"
-}
-.glyphicon-cog:before{
- content:"\e019"
-}
-.glyphicon-trash:before{
- content:"\e020"
-}
-.glyphicon-home:before{
- content:"\e021"
-}
-.glyphicon-file:before{
- content:"\e022"
-}
-.glyphicon-time:before{
- content:"\e023"
-}
-.glyphicon-road:before{
- content:"\e024"
-}
-.glyphicon-download-alt:before{
- content:"\e025"
-}
-.glyphicon-download:before{
- content:"\e026"
-}
-.glyphicon-upload:before{
- content:"\e027"
-}
-.glyphicon-inbox:before{
- content:"\e028"
-}
-.glyphicon-play-circle:before{
- content:"\e029"
-}
-.glyphicon-repeat:before{
- content:"\e030"
-}
-.glyphicon-refresh:before{
- content:"\e031"
-}
-.glyphicon-list-alt:before{
- content:"\e032"
-}
-.glyphicon-lock:before{
- content:"\e033"
-}
-.glyphicon-flag:before{
- content:"\e034"
-}
-.glyphicon-headphones:before{
- content:"\e035"
-}
-.glyphicon-volume-off:before{
- content:"\e036"
-}
-.glyphicon-volume-down:before{
- content:"\e037"
-}
-.glyphicon-volume-up:before{
- content:"\e038"
-}
-.glyphicon-qrcode:before{
- content:"\e039"
-}
-.glyphicon-barcode:before{
- content:"\e040"
-}
-.glyphicon-tag:before{
- content:"\e041"
-}
-.glyphicon-tags:before{
- content:"\e042"
-}
-.glyphicon-book:before{
- content:"\e043"
-}
-.glyphicon-bookmark:before{
- content:"\e044"
-}
-.glyphicon-print:before{
- content:"\e045"
-}
-.glyphicon-camera:before{
- content:"\e046"
-}
-.glyphicon-font:before{
- content:"\e047"
-}
-.glyphicon-bold:before{
- content:"\e048"
-}
-.glyphicon-italic:before{
- content:"\e049"
-}
-.glyphicon-text-height:before{
- content:"\e050"
-}
-.glyphicon-text-width:before{
- content:"\e051"
-}
-.glyphicon-align-left:before{
- content:"\e052"
-}
-.glyphicon-align-center:before{
- content:"\e053"
-}
-.glyphicon-align-right:before{
- content:"\e054"
-}
-.glyphicon-align-justify:before{
- content:"\e055"
-}
-.glyphicon-list:before{
- content:"\e056"
-}
-.glyphicon-indent-left:before{
- content:"\e057"
-}
-.glyphicon-indent-right:before{
- content:"\e058"
-}
-.glyphicon-facetime-video:before{
- content:"\e059"
-}
-.glyphicon-picture:before{
- content:"\e060"
-}
-.glyphicon-map-marker:before{
- content:"\e062"
-}
-.glyphicon-adjust:before{
- content:"\e063"
-}
-.glyphicon-tint:before{
- content:"\e064"
-}
-.glyphicon-edit:before{
- content:"\e065"
-}
-.glyphicon-share:before{
- content:"\e066"
-}
-.glyphicon-check:before{
- content:"\e067"
-}
-.glyphicon-move:before{
- content:"\e068"
-}
-.glyphicon-step-backward:before{
- content:"\e069"
-}
-.glyphicon-fast-backward:before{
- content:"\e070"
-}
-.glyphicon-backward:before{
- content:"\e071"
-}
-.glyphicon-play:before{
- content:"\e072"
-}
-.glyphicon-pause:before{
- content:"\e073"
-}
-.glyphicon-stop:before{
- content:"\e074"
-}
-.glyphicon-forward:before{
- content:"\e075"
-}
-.glyphicon-fast-forward:before{
- content:"\e076"
-}
-.glyphicon-step-forward:before{
- content:"\e077"
-}
-.glyphicon-eject:before{
- content:"\e078"
-}
-.glyphicon-chevron-left:before{
- content:"\e079"
-}
-.glyphicon-chevron-right:before{
- content:"\e080"
-}
-.glyphicon-plus-sign:before{
- content:"\e081"
-}
-.glyphicon-minus-sign:before{
- content:"\e082"
-}
-.glyphicon-remove-sign:before{
- content:"\e083"
-}
-.glyphicon-ok-sign:before{
- content:"\e084"
-}
-.glyphicon-question-sign:before{
- content:"\e085"
-}
-.glyphicon-info-sign:before{
- content:"\e086"
-}
-.glyphicon-screenshot:before{
- content:"\e087"
-}
-.glyphicon-remove-circle:before{
- content:"\e088"
-}
-.glyphicon-ok-circle:before{
- content:"\e089"
-}
-.glyphicon-ban-circle:before{
- content:"\e090"
-}
-.glyphicon-arrow-left:before{
- content:"\e091"
-}
-.glyphicon-arrow-right:before{
- content:"\e092"
-}
-.glyphicon-arrow-up:before{
- content:"\e093"
-}
-.glyphicon-arrow-down:before{
- content:"\e094"
-}
-.glyphicon-share-alt:before{
- content:"\e095"
-}
-.glyphicon-resize-full:before{
- content:"\e096"
-}
-.glyphicon-resize-small:before{
- content:"\e097"
-}
-.glyphicon-exclamation-sign:before{
- content:"\e101"
-}
-.glyphicon-gift:before{
- content:"\e102"
-}
-.glyphicon-leaf:before{
- content:"\e103"
-}
-.glyphicon-fire:before{
- content:"\e104"
-}
-.glyphicon-eye-open:before{
- content:"\e105"
-}
-.glyphicon-eye-close:before{
- content:"\e106"
-}
-.glyphicon-warning-sign:before{
- content:"\e107"
-}
-.glyphicon-plane:before{
- content:"\e108"
-}
-.glyphicon-calendar:before{
- content:"\e109"
-}
-.glyphicon-random:before{
- content:"\e110"
-}
-.glyphicon-comment:before{
- content:"\e111"
-}
-.glyphicon-magnet:before{
- content:"\e112"
-}
-.glyphicon-chevron-up:before{
- content:"\e113"
-}
-.glyphicon-chevron-down:before{
- content:"\e114"
-}
-.glyphicon-retweet:before{
- content:"\e115"
-}
-.glyphicon-shopping-cart:before{
- content:"\e116"
-}
-.glyphicon-folder-close:before{
- content:"\e117"
-}
-.glyphicon-folder-open:before{
- content:"\e118"
-}
-.glyphicon-resize-vertical:before{
- content:"\e119"
-}
-.glyphicon-resize-horizontal:before{
- content:"\e120"
-}
-.glyphicon-hdd:before{
- content:"\e121"
-}
-.glyphicon-bullhorn:before{
- content:"\e122"
-}
-.glyphicon-bell:before{
- content:"\e123"
-}
-.glyphicon-certificate:before{
- content:"\e124"
-}
-.glyphicon-thumbs-up:before{
- content:"\e125"
-}
-.glyphicon-thumbs-down:before{
- content:"\e126"
-}
-.glyphicon-hand-right:before{
- content:"\e127"
-}
-.glyphicon-hand-left:before{
- content:"\e128"
-}
-.glyphicon-hand-up:before{
- content:"\e129"
-}
-.glyphicon-hand-down:before{
- content:"\e130"
-}
-.glyphicon-circle-arrow-right:before{
- content:"\e131"
-}
-.glyphicon-circle-arrow-left:before{
- content:"\e132"
-}
-.glyphicon-circle-arrow-up:before{
- content:"\e133"
-}
-.glyphicon-circle-arrow-down:before{
- content:"\e134"
-}
-.glyphicon-globe:before{
- content:"\e135"
-}
-.glyphicon-wrench:before{
- content:"\e136"
-}
-.glyphicon-tasks:before{
- content:"\e137"
-}
-.glyphicon-filter:before{
- content:"\e138"
-}
-.glyphicon-briefcase:before{
- content:"\e139"
-}
-.glyphicon-fullscreen:before{
- content:"\e140"
-}
-.glyphicon-dashboard:before{
- content:"\e141"
-}
-.glyphicon-paperclip:before{
- content:"\e142"
-}
-.glyphicon-heart-empty:before{
- content:"\e143"
-}
-.glyphicon-link:before{
- content:"\e144"
-}
-.glyphicon-phone:before{
- content:"\e145"
-}
-.glyphicon-pushpin:before{
- content:"\e146"
-}
-.glyphicon-usd:before{
- content:"\e148"
-}
-.glyphicon-gbp:before{
- content:"\e149"
-}
-.glyphicon-sort:before{
- content:"\e150"
-}
-.glyphicon-sort-by-alphabet:before{
- content:"\e151"
-}
-.glyphicon-sort-by-alphabet-alt:before{
- content:"\e152"
-}
-.glyphicon-sort-by-order:before{
- content:"\e153"
-}
-.glyphicon-sort-by-order-alt:before{
- content:"\e154"
-}
-.glyphicon-sort-by-attributes:before{
- content:"\e155"
-}
-.glyphicon-sort-by-attributes-alt:before{
- content:"\e156"
-}
-.glyphicon-unchecked:before{
- content:"\e157"
-}
-.glyphicon-expand:before{
- content:"\e158"
-}
-.glyphicon-collapse-down:before{
- content:"\e159"
-}
-.glyphicon-collapse-up:before{
- content:"\e160"
-}
-.glyphicon-log-in:before{
- content:"\e161"
-}
-.glyphicon-flash:before{
- content:"\e162"
-}
-.glyphicon-log-out:before{
- content:"\e163"
-}
-.glyphicon-new-window:before{
- content:"\e164"
-}
-.glyphicon-record:before{
- content:"\e165"
-}
-.glyphicon-save:before{
- content:"\e166"
-}
-.glyphicon-open:before{
- content:"\e167"
-}
-.glyphicon-saved:before{
- content:"\e168"
-}
-.glyphicon-import:before{
- content:"\e169"
-}
-.glyphicon-export:before{
- content:"\e170"
-}
-.glyphicon-send:before{
- content:"\e171"
-}
-.glyphicon-floppy-disk:before{
- content:"\e172"
-}
-.glyphicon-floppy-saved:before{
- content:"\e173"
-}
-.glyphicon-floppy-remove:before{
- content:"\e174"
-}
-.glyphicon-floppy-save:before{
- content:"\e175"
-}
-.glyphicon-floppy-open:before{
- content:"\e176"
-}
-.glyphicon-credit-card:before{
- content:"\e177"
-}
-.glyphicon-transfer:before{
- content:"\e178"
-}
-.glyphicon-cutlery:before{
- content:"\e179"
-}
-.glyphicon-header:before{
- content:"\e180"
-}
-.glyphicon-compressed:before{
- content:"\e181"
-}
-.glyphicon-earphone:before{
- content:"\e182"
-}
-.glyphicon-phone-alt:before{
- content:"\e183"
-}
-.glyphicon-tower:before{
- content:"\e184"
-}
-.glyphicon-stats:before{
- content:"\e185"
-}
-.glyphicon-sd-video:before{
- content:"\e186"
-}
-.glyphicon-hd-video:before{
- content:"\e187"
-}
-.glyphicon-subtitles:before{
- content:"\e188"
-}
-.glyphicon-sound-stereo:before{
- content:"\e189"
-}
-.glyphicon-sound-dolby:before{
- content:"\e190"
-}
-.glyphicon-sound-5-1:before{
- content:"\e191"
-}
-.glyphicon-sound-6-1:before{
- content:"\e192"
-}
-.glyphicon-sound-7-1:before{
- content:"\e193"
-}
-.glyphicon-copyright-mark:before{
- content:"\e194"
-}
-.glyphicon-registration-mark:before{
- content:"\e195"
-}
-.glyphicon-cloud-download:before{
- content:"\e197"
-}
-.glyphicon-cloud-upload:before{
- content:"\e198"
-}
-.glyphicon-tree-conifer:before{
- content:"\e199"
-}
-.glyphicon-tree-deciduous:before{
- content:"\e200"
-}
-.glyphicon-cd:before{
- content:"\e201"
-}
-.glyphicon-save-file:before{
- content:"\e202"
-}
-.glyphicon-open-file:before{
- content:"\e203"
-}
-.glyphicon-level-up:before{
- content:"\e204"
-}
-.glyphicon-copy:before{
- content:"\e205"
-}
-.glyphicon-paste:before{
- content:"\e206"
-}
-.glyphicon-alert:before{
- content:"\e209"
-}
-.glyphicon-equalizer:before{
- content:"\e210"
-}
-.glyphicon-king:before{
- content:"\e211"
-}
-.glyphicon-queen:before{
- content:"\e212"
-}
-.glyphicon-pawn:before{
- content:"\e213"
-}
-.glyphicon-bishop:before{
- content:"\e214"
-}
-.glyphicon-knight:before{
- content:"\e215"
-}
-.glyphicon-baby-formula:before{
- content:"\e216"
-}
-.glyphicon-tent:before{
- content:"\26fa"
-}
-.glyphicon-blackboard:before{
- content:"\e218"
-}
-.glyphicon-bed:before{
- content:"\e219"
-}
-.glyphicon-apple:before{
- content:"\f8ff"
-}
-.glyphicon-erase:before{
- content:"\e221"
-}
-.glyphicon-hourglass:before{
- content:"\231b"
-}
-.glyphicon-lamp:before{
- content:"\e223"
-}
-.glyphicon-duplicate:before{
- content:"\e224"
-}
-.glyphicon-piggy-bank:before{
- content:"\e225"
-}
-.glyphicon-scissors:before{
- content:"\e226"
-}
-.glyphicon-bitcoin:before{
- content:"\e227"
-}
-.glyphicon-btc:before{
- content:"\e227"
-}
-.glyphicon-xbt:before{
- content:"\e227"
-}
-.glyphicon-yen:before{
- content:"\00a5"
-}
-.glyphicon-jpy:before{
- content:"\00a5"
-}
-.glyphicon-ruble:before{
- content:"\20bd"
-}
-.glyphicon-rub:before{
- content:"\20bd"
-}
-.glyphicon-scale:before{
- content:"\e230"
-}
-.glyphicon-ice-lolly:before{
- content:"\e231"
-}
-.glyphicon-ice-lolly-tasted:before{
- content:"\e232"
-}
-.glyphicon-education:before{
- content:"\e233"
-}
-.glyphicon-option-horizontal:before{
- content:"\e234"
-}
-.glyphicon-option-vertical:before{
- content:"\e235"
-}
-.glyphicon-menu-hamburger:before{
- content:"\e236"
-}
-.glyphicon-modal-window:before{
- content:"\e237"
-}
-.glyphicon-oil:before{
- content:"\e238"
-}
-.glyphicon-grain:before{
- content:"\e239"
-}
-.glyphicon-sunglasses:before{
- content:"\e240"
-}
-.glyphicon-text-size:before{
- content:"\e241"
-}
-.glyphicon-text-color:before{
- content:"\e242"
-}
-.glyphicon-text-background:before{
- content:"\e243"
-}
-.glyphicon-object-align-top:before{
- content:"\e244"
-}
-.glyphicon-object-align-bottom:before{
- content:"\e245"
-}
-.glyphicon-object-align-horizontal:before{
- content:"\e246"
-}
-.glyphicon-object-align-left:before{
- content:"\e247"
-}
-.glyphicon-object-align-vertical:before{
- content:"\e248"
-}
-.glyphicon-object-align-right:before{
- content:"\e249"
-}
-.glyphicon-triangle-right:before{
- content:"\e250"
-}
-.glyphicon-triangle-left:before{
- content:"\e251"
-}
-.glyphicon-triangle-bottom:before{
- content:"\e252"
-}
-.glyphicon-triangle-top:before{
- content:"\e253"
-}
-.glyphicon-console:before{
- content:"\e254"
-}
-.glyphicon-superscript:before{
- content:"\e255"
-}
-.glyphicon-subscript:before{
- content:"\e256"
-}
-.glyphicon-menu-left:before{
- content:"\e257"
-}
-.glyphicon-menu-right:before{
- content:"\e258"
-}
-.glyphicon-menu-down:before{
- content:"\e259"
-}
-.glyphicon-menu-up:before{
- content:"\e260"
-}
-*{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-:after,:before{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-html{
- font-size:10px;
- -webkit-tap-highlight-color:rgba(0,0,0,0)
-}
-body{
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- line-height:1.42857143;
- color:#333;
- background-color:#fff
-}
-button,input,select,textarea{
- font-family:inherit;
- font-size:inherit;
- line-height:inherit
-}
-a{
- color:#337ab7;
- text-decoration:none
-}
-a:focus,a:hover{
- color:#23527c;
- text-decoration:underline
-}
-a:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-figure{
- margin:0
-}
-img{
- vertical-align:middle
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{
- display:block;
- max-width:100%;
- height:auto
-}
-.img-rounded{
- border-radius:6px
-}
-.img-thumbnail{
- display:inline-block;
- max-width:100%;
- height:auto;
- padding:4px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:all .2s ease-in-out;
- -o-transition:all .2s ease-in-out;
- transition:all .2s ease-in-out
-}
-.img-circle{
- border-radius:50%
-}
-hr{
- margin-top:20px;
- margin-bottom:20px;
- border:0;
- border-top:1px solid #eee
-}
-.sr-only{
- position:absolute;
- width:1px;
- height:1px;
- padding:0;
- margin:-1px;
- overflow:hidden;
- clip:rect(0,0,0,0);
- border:0
-}
-.sr-only-focusable:active,.sr-only-focusable:focus{
- position:static;
- width:auto;
- height:auto;
- margin:0;
- overflow:visible;
- clip:auto
-}
-[role=button]{
- cursor:pointer
-}
-.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{
- font-family:inherit;
- font-weight:500;
- line-height:1.1;
- color:inherit
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-weight:400;
- line-height:1;
- color:#777
-}
-.h1,.h2,.h3,h1,h2,h3{
- margin-top:20px;
- margin-bottom:10px
-}
-.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{
- font-size:65%
-}
-.h4,.h5,.h6,h4,h5,h6{
- margin-top:10px;
- margin-bottom:10px
-}
-.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{
- font-size:75%
-}
-.h1,h1{
- font-size:36px
-}
-.h2,h2{
- font-size:30px
-}
-.h3,h3{
- font-size:24px
-}
-.h4,h4{
- font-size:18px
-}
-.h5,h5{
- font-size:14px
-}
-.h6,h6{
- font-size:12px
-}
-p{
- margin:0 0 10px
-}
-.lead{
- margin-bottom:20px;
- font-size:16px;
- font-weight:300;
- line-height:1.4
-}
-@media (min-width:768px){
- .lead{
- font-size:21px
- }
-}
-.small,small{
- font-size:85%
-}
-.mark,mark{
- padding:.2em;
- background-color:#fcf8e3
-}
-.text-left{
- text-align:left
-}
-.text-right{
- text-align:right
-}
-.text-center{
- text-align:center
-}
-.text-justify{
- text-align:justify
-}
-.text-nowrap{
- white-space:nowrap
-}
-.text-lowercase{
- text-transform:lowercase
-}
-.text-uppercase{
- text-transform:uppercase
-}
-.text-capitalize{
- text-transform:capitalize
-}
-.text-muted{
- color:#777
-}
-.text-primary{
- color:#337ab7
-}
-a.text-primary:focus,a.text-primary:hover{
- color:#286090
-}
-.text-success{
- color:#3c763d
-}
-a.text-success:focus,a.text-success:hover{
- color:#2b542c
-}
-.text-info{
- color:#31708f
-}
-a.text-info:focus,a.text-info:hover{
- color:#245269
-}
-.text-warning{
- color:#8a6d3b
-}
-a.text-warning:focus,a.text-warning:hover{
- color:#66512c
-}
-.text-danger{
- color:#a94442
-}
-a.text-danger:focus,a.text-danger:hover{
- color:#843534
-}
-.bg-primary{
- color:#fff;
- background-color:#337ab7
-}
-a.bg-primary:focus,a.bg-primary:hover{
- background-color:#286090
-}
-.bg-success{
- background-color:#dff0d8
-}
-a.bg-success:focus,a.bg-success:hover{
- background-color:#c1e2b3
-}
-.bg-info{
- background-color:#d9edf7
-}
-a.bg-info:focus,a.bg-info:hover{
- background-color:#afd9ee
-}
-.bg-warning{
- background-color:#fcf8e3
-}
-a.bg-warning:focus,a.bg-warning:hover{
- background-color:#f7ecb5
-}
-.bg-danger{
- background-color:#f2dede
-}
-a.bg-danger:focus,a.bg-danger:hover{
- background-color:#e4b9b9
-}
-.page-header{
- padding-bottom:9px;
- margin:40px 0 20px;
- border-bottom:1px solid #eee
-}
-ol,ul{
- margin-top:0;
- margin-bottom:10px
-}
-ol ol,ol ul,ul ol,ul ul{
- margin-bottom:0
-}
-.list-unstyled{
- padding-left:0;
- list-style:none
-}
-.list-inline{
- padding-left:0;
- margin-left:-5px;
- list-style:none
-}
-.list-inline>li{
- display:inline-block;
- padding-right:5px;
- padding-left:5px
-}
-dl{
- margin-top:0;
- margin-bottom:20px
-}
-dd,dt{
- line-height:1.42857143
-}
-dt{
- font-weight:700
-}
-dd{
- margin-left:0
-}
-@media (min-width:768px){
- .dl-horizontal dt{
- float:left;
- width:160px;
- overflow:hidden;
- clear:left;
- text-align:right;
- text-overflow:ellipsis;
- white-space:nowrap
- }
- .dl-horizontal dd{
- margin-left:180px
- }
-}
-abbr[data-original-title],abbr[title]{
- cursor:help;
- border-bottom:1px dotted #777
-}
-.initialism{
- font-size:90%;
- text-transform:uppercase
-}
-blockquote{
- padding:10px 20px;
- margin:0 0 20px;
- font-size:17.5px;
- border-left:5px solid #eee
-}
-blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{
- margin-bottom:0
-}
-blockquote .small,blockquote footer,blockquote small{
- display:block;
- font-size:80%;
- line-height:1.42857143;
- color:#777
-}
-blockquote .small:before,blockquote footer:before,blockquote small:before{
- content:'\2014 \00A0'
-}
-.blockquote-reverse,blockquote.pull-right{
- padding-right:15px;
- padding-left:0;
- text-align:right;
- border-right:5px solid #eee;
- border-left:0
-}
-.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{
- content:''
-}
-.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{
- content:'\00A0 \2014'
-}
-address{
- margin-bottom:20px;
- font-style:normal;
- line-height:1.42857143
-}
-code,kbd,pre,samp{
- font-family:Menlo,Monaco,Consolas,"Courier New",monospace
-}
-code{
- padding:2px 4px;
- font-size:90%;
- color:#c7254e;
- background-color:#f9f2f4;
- border-radius:4px
-}
-kbd{
- padding:2px 4px;
- font-size:90%;
- color:#fff;
- background-color:#333;
- border-radius:3px;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)
-}
-kbd kbd{
- padding:0;
- font-size:100%;
- font-weight:700;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-pre{
- display:block;
- padding:9.5px;
- margin:0 0 10px;
- font-size:13px;
- line-height:1.42857143;
- color:#333;
- word-break:break-all;
- word-wrap:break-word;
- background-color:#f5f5f5;
- border:1px solid #ccc;
- border-radius:4px
-}
-pre code{
- padding:0;
- font-size:inherit;
- color:inherit;
- white-space:pre-wrap;
- background-color:transparent;
- border-radius:0
-}
-.pre-scrollable{
- max-height:340px;
- overflow-y:scroll
-}
-.container{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-@media (min-width:768px){
- .container{
- width:750px
- }
-}
-@media (min-width:992px){
- .container{
- width:970px
- }
-}
-@media (min-width:1200px){
- .container{
- width:1170px
- }
-}
-.container-fluid{
- padding-right:15px;
- padding-left:15px;
- margin-right:auto;
- margin-left:auto
-}
-.row{
- margin-right:-15px;
- margin-left:-15px
-}
-.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- position:relative;
- min-height:1px;
- padding-right:15px;
- padding-left:15px
-}
-.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{
- float:left
-}
-.col-xs-12{
- width:100%
-}
-.col-xs-11{
- width:91.66666667%
-}
-.col-xs-10{
- width:83.33333333%
-}
-.col-xs-9{
- width:75%
-}
-.col-xs-8{
- width:66.66666667%
-}
-.col-xs-7{
- width:58.33333333%
-}
-.col-xs-6{
- width:50%
-}
-.col-xs-5{
- width:41.66666667%
-}
-.col-xs-4{
- width:33.33333333%
-}
-.col-xs-3{
- width:25%
-}
-.col-xs-2{
- width:16.66666667%
-}
-.col-xs-1{
- width:8.33333333%
-}
-.col-xs-pull-12{
- right:100%
-}
-.col-xs-pull-11{
- right:91.66666667%
-}
-.col-xs-pull-10{
- right:83.33333333%
-}
-.col-xs-pull-9{
- right:75%
-}
-.col-xs-pull-8{
- right:66.66666667%
-}
-.col-xs-pull-7{
- right:58.33333333%
-}
-.col-xs-pull-6{
- right:50%
-}
-.col-xs-pull-5{
- right:41.66666667%
-}
-.col-xs-pull-4{
- right:33.33333333%
-}
-.col-xs-pull-3{
- right:25%
-}
-.col-xs-pull-2{
- right:16.66666667%
-}
-.col-xs-pull-1{
- right:8.33333333%
-}
-.col-xs-pull-0{
- right:auto
-}
-.col-xs-push-12{
- left:100%
-}
-.col-xs-push-11{
- left:91.66666667%
-}
-.col-xs-push-10{
- left:83.33333333%
-}
-.col-xs-push-9{
- left:75%
-}
-.col-xs-push-8{
- left:66.66666667%
-}
-.col-xs-push-7{
- left:58.33333333%
-}
-.col-xs-push-6{
- left:50%
-}
-.col-xs-push-5{
- left:41.66666667%
-}
-.col-xs-push-4{
- left:33.33333333%
-}
-.col-xs-push-3{
- left:25%
-}
-.col-xs-push-2{
- left:16.66666667%
-}
-.col-xs-push-1{
- left:8.33333333%
-}
-.col-xs-push-0{
- left:auto
-}
-.col-xs-offset-12{
- margin-left:100%
-}
-.col-xs-offset-11{
- margin-left:91.66666667%
-}
-.col-xs-offset-10{
- margin-left:83.33333333%
-}
-.col-xs-offset-9{
- margin-left:75%
-}
-.col-xs-offset-8{
- margin-left:66.66666667%
-}
-.col-xs-offset-7{
- margin-left:58.33333333%
-}
-.col-xs-offset-6{
- margin-left:50%
-}
-.col-xs-offset-5{
- margin-left:41.66666667%
-}
-.col-xs-offset-4{
- margin-left:33.33333333%
-}
-.col-xs-offset-3{
- margin-left:25%
-}
-.col-xs-offset-2{
- margin-left:16.66666667%
-}
-.col-xs-offset-1{
- margin-left:8.33333333%
-}
-.col-xs-offset-0{
- margin-left:0
-}
-@media (min-width:768px){
- .col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{
- float:left
- }
- .col-sm-12{
- width:100%
- }
- .col-sm-11{
- width:91.66666667%
- }
- .col-sm-10{
- width:83.33333333%
- }
- .col-sm-9{
- width:75%
- }
- .col-sm-8{
- width:66.66666667%
- }
- .col-sm-7{
- width:58.33333333%
- }
- .col-sm-6{
- width:50%
- }
- .col-sm-5{
- width:41.66666667%
- }
- .col-sm-4{
- width:33.33333333%
- }
- .col-sm-3{
- width:25%
- }
- .col-sm-2{
- width:16.66666667%
- }
- .col-sm-1{
- width:8.33333333%
- }
- .col-sm-pull-12{
- right:100%
- }
- .col-sm-pull-11{
- right:91.66666667%
- }
- .col-sm-pull-10{
- right:83.33333333%
- }
- .col-sm-pull-9{
- right:75%
- }
- .col-sm-pull-8{
- right:66.66666667%
- }
- .col-sm-pull-7{
- right:58.33333333%
- }
- .col-sm-pull-6{
- right:50%
- }
- .col-sm-pull-5{
- right:41.66666667%
- }
- .col-sm-pull-4{
- right:33.33333333%
- }
- .col-sm-pull-3{
- right:25%
- }
- .col-sm-pull-2{
- right:16.66666667%
- }
- .col-sm-pull-1{
- right:8.33333333%
- }
- .col-sm-pull-0{
- right:auto
- }
- .col-sm-push-12{
- left:100%
- }
- .col-sm-push-11{
- left:91.66666667%
- }
- .col-sm-push-10{
- left:83.33333333%
- }
- .col-sm-push-9{
- left:75%
- }
- .col-sm-push-8{
- left:66.66666667%
- }
- .col-sm-push-7{
- left:58.33333333%
- }
- .col-sm-push-6{
- left:50%
- }
- .col-sm-push-5{
- left:41.66666667%
- }
- .col-sm-push-4{
- left:33.33333333%
- }
- .col-sm-push-3{
- left:25%
- }
- .col-sm-push-2{
- left:16.66666667%
- }
- .col-sm-push-1{
- left:8.33333333%
- }
- .col-sm-push-0{
- left:auto
- }
- .col-sm-offset-12{
- margin-left:100%
- }
- .col-sm-offset-11{
- margin-left:91.66666667%
- }
- .col-sm-offset-10{
- margin-left:83.33333333%
- }
- .col-sm-offset-9{
- margin-left:75%
- }
- .col-sm-offset-8{
- margin-left:66.66666667%
- }
- .col-sm-offset-7{
- margin-left:58.33333333%
- }
- .col-sm-offset-6{
- margin-left:50%
- }
- .col-sm-offset-5{
- margin-left:41.66666667%
- }
- .col-sm-offset-4{
- margin-left:33.33333333%
- }
- .col-sm-offset-3{
- margin-left:25%
- }
- .col-sm-offset-2{
- margin-left:16.66666667%
- }
- .col-sm-offset-1{
- margin-left:8.33333333%
- }
- .col-sm-offset-0{
- margin-left:0
- }
-}
-@media (min-width:992px){
- .col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{
- float:left
- }
- .col-md-12{
- width:100%
- }
- .col-md-11{
- width:91.66666667%
- }
- .col-md-10{
- width:83.33333333%
- }
- .col-md-9{
- width:75%
- }
- .col-md-8{
- width:66.66666667%
- }
- .col-md-7{
- width:58.33333333%
- }
- .col-md-6{
- width:50%
- }
- .col-md-5{
- width:41.66666667%
- }
- .col-md-4{
- width:33.33333333%
- }
- .col-md-3{
- width:25%
- }
- .col-md-2{
- width:16.66666667%
- }
- .col-md-1{
- width:8.33333333%
- }
- .col-md-pull-12{
- right:100%
- }
- .col-md-pull-11{
- right:91.66666667%
- }
- .col-md-pull-10{
- right:83.33333333%
- }
- .col-md-pull-9{
- right:75%
- }
- .col-md-pull-8{
- right:66.66666667%
- }
- .col-md-pull-7{
- right:58.33333333%
- }
- .col-md-pull-6{
- right:50%
- }
- .col-md-pull-5{
- right:41.66666667%
- }
- .col-md-pull-4{
- right:33.33333333%
- }
- .col-md-pull-3{
- right:25%
- }
- .col-md-pull-2{
- right:16.66666667%
- }
- .col-md-pull-1{
- right:8.33333333%
- }
- .col-md-pull-0{
- right:auto
- }
- .col-md-push-12{
- left:100%
- }
- .col-md-push-11{
- left:91.66666667%
- }
- .col-md-push-10{
- left:83.33333333%
- }
- .col-md-push-9{
- left:75%
- }
- .col-md-push-8{
- left:66.66666667%
- }
- .col-md-push-7{
- left:58.33333333%
- }
- .col-md-push-6{
- left:50%
- }
- .col-md-push-5{
- left:41.66666667%
- }
- .col-md-push-4{
- left:33.33333333%
- }
- .col-md-push-3{
- left:25%
- }
- .col-md-push-2{
- left:16.66666667%
- }
- .col-md-push-1{
- left:8.33333333%
- }
- .col-md-push-0{
- left:auto
- }
- .col-md-offset-12{
- margin-left:100%
- }
- .col-md-offset-11{
- margin-left:91.66666667%
- }
- .col-md-offset-10{
- margin-left:83.33333333%
- }
- .col-md-offset-9{
- margin-left:75%
- }
- .col-md-offset-8{
- margin-left:66.66666667%
- }
- .col-md-offset-7{
- margin-left:58.33333333%
- }
- .col-md-offset-6{
- margin-left:50%
- }
- .col-md-offset-5{
- margin-left:41.66666667%
- }
- .col-md-offset-4{
- margin-left:33.33333333%
- }
- .col-md-offset-3{
- margin-left:25%
- }
- .col-md-offset-2{
- margin-left:16.66666667%
- }
- .col-md-offset-1{
- margin-left:8.33333333%
- }
- .col-md-offset-0{
- margin-left:0
- }
-}
-@media (min-width:1200px){
- .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{
- float:left
- }
- .col-lg-12{
- width:100%
- }
- .col-lg-11{
- width:91.66666667%
- }
- .col-lg-10{
- width:83.33333333%
- }
- .col-lg-9{
- width:75%
- }
- .col-lg-8{
- width:66.66666667%
- }
- .col-lg-7{
- width:58.33333333%
- }
- .col-lg-6{
- width:50%
- }
- .col-lg-5{
- width:41.66666667%
- }
- .col-lg-4{
- width:33.33333333%
- }
- .col-lg-3{
- width:25%
- }
- .col-lg-2{
- width:16.66666667%
- }
- .col-lg-1{
- width:8.33333333%
- }
- .col-lg-pull-12{
- right:100%
- }
- .col-lg-pull-11{
- right:91.66666667%
- }
- .col-lg-pull-10{
- right:83.33333333%
- }
- .col-lg-pull-9{
- right:75%
- }
- .col-lg-pull-8{
- right:66.66666667%
- }
- .col-lg-pull-7{
- right:58.33333333%
- }
- .col-lg-pull-6{
- right:50%
- }
- .col-lg-pull-5{
- right:41.66666667%
- }
- .col-lg-pull-4{
- right:33.33333333%
- }
- .col-lg-pull-3{
- right:25%
- }
- .col-lg-pull-2{
- right:16.66666667%
- }
- .col-lg-pull-1{
- right:8.33333333%
- }
- .col-lg-pull-0{
- right:auto
- }
- .col-lg-push-12{
- left:100%
- }
- .col-lg-push-11{
- left:91.66666667%
- }
- .col-lg-push-10{
- left:83.33333333%
- }
- .col-lg-push-9{
- left:75%
- }
- .col-lg-push-8{
- left:66.66666667%
- }
- .col-lg-push-7{
- left:58.33333333%
- }
- .col-lg-push-6{
- left:50%
- }
- .col-lg-push-5{
- left:41.66666667%
- }
- .col-lg-push-4{
- left:33.33333333%
- }
- .col-lg-push-3{
- left:25%
- }
- .col-lg-push-2{
- left:16.66666667%
- }
- .col-lg-push-1{
- left:8.33333333%
- }
- .col-lg-push-0{
- left:auto
- }
- .col-lg-offset-12{
- margin-left:100%
- }
- .col-lg-offset-11{
- margin-left:91.66666667%
- }
- .col-lg-offset-10{
- margin-left:83.33333333%
- }
- .col-lg-offset-9{
- margin-left:75%
- }
- .col-lg-offset-8{
- margin-left:66.66666667%
- }
- .col-lg-offset-7{
- margin-left:58.33333333%
- }
- .col-lg-offset-6{
- margin-left:50%
- }
- .col-lg-offset-5{
- margin-left:41.66666667%
- }
- .col-lg-offset-4{
- margin-left:33.33333333%
- }
- .col-lg-offset-3{
- margin-left:25%
- }
- .col-lg-offset-2{
- margin-left:16.66666667%
- }
- .col-lg-offset-1{
- margin-left:8.33333333%
- }
- .col-lg-offset-0{
- margin-left:0
- }
-}
-table{
- background-color:transparent
-}
-caption{
- padding-top:8px;
- padding-bottom:8px;
- color:#777;
- text-align:left
-}
-th{
- text-align:left
-}
-.table{
- width:100%;
- max-width:100%;
- margin-bottom:20px
-}
-.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{
- padding:8px;
- line-height:1.42857143;
- vertical-align:top;
- border-top:1px solid #ddd
-}
-.table>thead>tr>th{
- vertical-align:bottom;
- border-bottom:2px solid #ddd
-}
-.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{
- border-top:0
-}
-.table>tbody+tbody{
- border-top:2px solid #ddd
-}
-.table .table{
- background-color:#fff
-}
-.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{
- padding:5px
-}
-.table-bordered{
- border:1px solid #ddd
-}
-.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border:1px solid #ddd
-}
-.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{
- border-bottom-width:2px
-}
-.table-striped>tbody>tr:nth-of-type(odd){
- background-color:#f9f9f9
-}
-.table-hover>tbody>tr:hover{
- background-color:#f5f5f5
-}
-table col[class*=col-]{
- position:static;
- display:table-column;
- float:none
-}
-table td[class*=col-],table th[class*=col-]{
- position:static;
- display:table-cell;
- float:none
-}
-.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{
- background-color:#f5f5f5
-}
-.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{
- background-color:#e8e8e8
-}
-.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{
- background-color:#dff0d8
-}
-.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{
- background-color:#d0e9c6
-}
-.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{
- background-color:#d9edf7
-}
-.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{
- background-color:#c4e3f3
-}
-.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{
- background-color:#fcf8e3
-}
-.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{
- background-color:#faf2cc
-}
-.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{
- background-color:#f2dede
-}
-.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{
- background-color:#ebcccc
-}
-.table-responsive{
- min-height:.01%;
- overflow-x:auto
-}
-@media screen and (max-width:767px){
- .table-responsive{
- width:100%;
- margin-bottom:15px;
- overflow-y:hidden;
- -ms-overflow-style:-ms-autohiding-scrollbar;
- border:1px solid #ddd
- }
- .table-responsive>.table{
- margin-bottom:0
- }
- .table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{
- white-space:nowrap
- }
- .table-responsive>.table-bordered{
- border:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
- }
- .table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
- }
- .table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
- }
-}
-fieldset{
- min-width:0;
- padding:0;
- margin:0;
- border:0
-}
-legend{
- display:block;
- width:100%;
- padding:0;
- margin-bottom:20px;
- font-size:21px;
- line-height:inherit;
- color:#333;
- border:0;
- border-bottom:1px solid #e5e5e5
-}
-label{
- display:inline-block;
- max-width:100%;
- margin-bottom:5px;
- font-weight:700
-}
-input[type=search]{
- -webkit-box-sizing:border-box;
- -moz-box-sizing:border-box;
- box-sizing:border-box
-}
-input[type=checkbox],input[type=radio]{
- margin:4px 0 0;
- margin-top:1px\9;
- line-height:normal
-}
-input[type=file]{
- display:block
-}
-input[type=range]{
- display:block;
- width:100%
-}
-select[multiple],select[size]{
- height:auto
-}
-input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-output{
- display:block;
- padding-top:7px;
- font-size:14px;
- line-height:1.42857143;
- color:#555
-}
-.form-control{
- display:block;
- width:100%;
- height:34px;
- padding:6px 12px;
- font-size:14px;
- line-height:1.42857143;
- color:#555;
- background-color:#fff;
- background-image:none;
- border:1px solid #ccc;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- -webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
- -o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;
- transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s
-}
-.form-control:focus{
- border-color:#66afe9;
- outline:0;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)
-}
-.form-control::-moz-placeholder{
- color:#999;
- opacity:1
-}
-.form-control:-ms-input-placeholder{
- color:#999
-}
-.form-control::-webkit-input-placeholder{
- color:#999
-}
-.form-control::-ms-expand{
- background-color:transparent;
- border:0
-}
-.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{
- background-color:#eee;
- opacity:1
-}
-.form-control[disabled],fieldset[disabled] .form-control{
- cursor:not-allowed
-}
-textarea.form-control{
- height:auto
-}
-input[type=search]{
- -webkit-appearance:none
-}
-@media screen and (-webkit-min-device-pixel-ratio:0){
- input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{
- line-height:34px
- }
- .input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{
- line-height:30px
- }
- .input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{
- line-height:46px
- }
-}
-.form-group{
- margin-bottom:15px
-}
-.checkbox,.radio{
- position:relative;
- display:block;
- margin-top:10px;
- margin-bottom:10px
-}
-.checkbox label,.radio label{
- min-height:20px;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- cursor:pointer
-}
-.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{
- position:absolute;
- margin-top:4px\9;
- margin-left:-20px
-}
-.checkbox+.checkbox,.radio+.radio{
- margin-top:-5px
-}
-.checkbox-inline,.radio-inline{
- position:relative;
- display:inline-block;
- padding-left:20px;
- margin-bottom:0;
- font-weight:400;
- vertical-align:middle;
- cursor:pointer
-}
-.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{
- margin-top:0;
- margin-left:10px
-}
-fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{
- cursor:not-allowed
-}
-.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{
- cursor:not-allowed
-}
-.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{
- cursor:not-allowed
-}
-.form-control-static{
- min-height:34px;
- padding-top:7px;
- padding-bottom:7px;
- margin-bottom:0
-}
-.form-control-static.input-lg,.form-control-static.input-sm{
- padding-right:0;
- padding-left:0
-}
-.input-sm{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-sm{
- height:30px;
- line-height:30px
-}
-select[multiple].input-sm,textarea.input-sm{
- height:auto
-}
-.form-group-sm .form-control{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.form-group-sm select.form-control{
- height:30px;
- line-height:30px
-}
-.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{
- height:auto
-}
-.form-group-sm .form-control-static{
- height:30px;
- min-height:32px;
- padding:6px 10px;
- font-size:12px;
- line-height:1.5
-}
-.input-lg{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-lg{
- height:46px;
- line-height:46px
-}
-select[multiple].input-lg,textarea.input-lg{
- height:auto
-}
-.form-group-lg .form-control{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.form-group-lg select.form-control{
- height:46px;
- line-height:46px
-}
-.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{
- height:auto
-}
-.form-group-lg .form-control-static{
- height:46px;
- min-height:38px;
- padding:11px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.has-feedback{
- position:relative
-}
-.has-feedback .form-control{
- padding-right:42.5px
-}
-.form-control-feedback{
- position:absolute;
- top:0;
- right:0;
- z-index:2;
- display:block;
- width:34px;
- height:34px;
- line-height:34px;
- text-align:center;
- pointer-events:none
-}
-.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{
- width:46px;
- height:46px;
- line-height:46px
-}
-.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{
- width:30px;
- height:30px;
- line-height:30px
-}
-.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{
- color:#3c763d
-}
-.has-success .form-control{
- border-color:#3c763d;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-success .form-control:focus{
- border-color:#2b542c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168
-}
-.has-success .input-group-addon{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#3c763d
-}
-.has-success .form-control-feedback{
- color:#3c763d
-}
-.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{
- color:#8a6d3b
-}
-.has-warning .form-control{
- border-color:#8a6d3b;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-warning .form-control:focus{
- border-color:#66512c;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b
-}
-.has-warning .input-group-addon{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#8a6d3b
-}
-.has-warning .form-control-feedback{
- color:#8a6d3b
-}
-.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{
- color:#a94442
-}
-.has-error .form-control{
- border-color:#a94442;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075)
-}
-.has-error .form-control:focus{
- border-color:#843534;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;
- box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483
-}
-.has-error .input-group-addon{
- color:#a94442;
- background-color:#f2dede;
- border-color:#a94442
-}
-.has-error .form-control-feedback{
- color:#a94442
-}
-.has-feedback label~.form-control-feedback{
- top:25px
-}
-.has-feedback label.sr-only~.form-control-feedback{
- top:0
-}
-.help-block{
- display:block;
- margin-top:5px;
- margin-bottom:10px;
- color:#737373
-}
-@media (min-width:768px){
- .form-inline .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .form-inline .form-control-static{
- display:inline-block
- }
- .form-inline .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{
- width:auto
- }
- .form-inline .input-group>.form-control{
- width:100%
- }
- .form-inline .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox,.form-inline .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .form-inline .checkbox label,.form-inline .radio label{
- padding-left:0
- }
- .form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .form-inline .has-feedback .form-control-feedback{
- top:0
- }
-}
-.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{
- padding-top:7px;
- margin-top:0;
- margin-bottom:0
-}
-.form-horizontal .checkbox,.form-horizontal .radio{
- min-height:27px
-}
-.form-horizontal .form-group{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .form-horizontal .control-label{
- padding-top:7px;
- margin-bottom:0;
- text-align:right
- }
-}
-.form-horizontal .has-feedback .form-control-feedback{
- right:15px
-}
-@media (min-width:768px){
- .form-horizontal .form-group-lg .control-label{
- padding-top:11px;
- font-size:18px
- }
-}
-@media (min-width:768px){
- .form-horizontal .form-group-sm .control-label{
- padding-top:6px;
- font-size:12px
- }
-}
-.btn{
- display:inline-block;
- padding:6px 12px;
- margin-bottom:0;
- font-size:14px;
- font-weight:400;
- line-height:1.42857143;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- -ms-touch-action:manipulation;
- touch-action:manipulation;
- cursor:pointer;
- -webkit-user-select:none;
- -moz-user-select:none;
- -ms-user-select:none;
- user-select:none;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{
- outline:5px auto -webkit-focus-ring-color;
- outline-offset:-2px
-}
-.btn.focus,.btn:focus,.btn:hover{
- color:#333;
- text-decoration:none
-}
-.btn.active,.btn:active{
- background-image:none;
- outline:0;
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn.disabled,.btn[disabled],fieldset[disabled] .btn{
- cursor:not-allowed;
- filter:alpha(opacity=65);
- -webkit-box-shadow:none;
- box-shadow:none;
- opacity:.65
-}
-a.btn.disabled,fieldset[disabled] a.btn{
- pointer-events:none
-}
-.btn-default{
- color:#333;
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default.focus,.btn-default:focus{
- color:#333;
- background-color:#e6e6e6;
- border-color:#8c8c8c
-}
-.btn-default:hover{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- color:#333;
- background-color:#e6e6e6;
- border-color:#adadad
-}
-.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{
- color:#333;
- background-color:#d4d4d4;
- border-color:#8c8c8c
-}
-.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{
- background-image:none
-}
-.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{
- background-color:#fff;
- border-color:#ccc
-}
-.btn-default .badge{
- color:#fff;
- background-color:#333
-}
-.btn-primary{
- color:#fff;
- background-color:#d11010;
- border-color:#c40f0f
-}
-.btn-primary.focus,.btn-primary:focus{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary:hover{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{
- color:#fff;
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{
- background-image:none
-}
-.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{
- background-color:#b20c0c;
- border-color:#c40f0f
-}
-.btn-primary .badge{
- color:#337ab7;
- background-color:#fff
-}
-.btn-success{
- color:#fff;
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success.focus,.btn-success:focus{
- color:#fff;
- background-color:#449d44;
- border-color:#255625
-}
-.btn-success:hover{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- color:#fff;
- background-color:#449d44;
- border-color:#398439
-}
-.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{
- color:#fff;
- background-color:#398439;
- border-color:#255625
-}
-.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{
- background-image:none
-}
-.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{
- background-color:#5cb85c;
- border-color:#4cae4c
-}
-.btn-success .badge{
- color:#5cb85c;
- background-color:#fff
-}
-.btn-info{
- color:#fff;
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info.focus,.btn-info:focus{
- color:#fff;
- background-color:#31b0d5;
- border-color:#1b6d85
-}
-.btn-info:hover{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- color:#fff;
- background-color:#31b0d5;
- border-color:#269abc
-}
-.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{
- color:#fff;
- background-color:#269abc;
- border-color:#1b6d85
-}
-.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{
- background-image:none
-}
-.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{
- background-color:#5bc0de;
- border-color:#46b8da
-}
-.btn-info .badge{
- color:#5bc0de;
- background-color:#fff
-}
-.btn-warning{
- color:#fff;
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning.focus,.btn-warning:focus{
- color:#fff;
- background-color:#ec971f;
- border-color:#985f0d
-}
-.btn-warning:hover{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- color:#fff;
- background-color:#ec971f;
- border-color:#d58512
-}
-.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{
- color:#fff;
- background-color:#d58512;
- border-color:#985f0d
-}
-.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{
- background-image:none
-}
-.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{
- background-color:#f0ad4e;
- border-color:#eea236
-}
-.btn-warning .badge{
- color:#f0ad4e;
- background-color:#fff
-}
-.btn-danger{
- color:#fff;
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger.focus,.btn-danger:focus{
- color:#fff;
- background-color:#c9302c;
- border-color:#761c19
-}
-.btn-danger:hover{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- color:#fff;
- background-color:#c9302c;
- border-color:#ac2925
-}
-.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{
- color:#fff;
- background-color:#ac2925;
- border-color:#761c19
-}
-.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{
- background-image:none
-}
-.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{
- background-color:#d9534f;
- border-color:#d43f3a
-}
-.btn-danger .badge{
- color:#d9534f;
- background-color:#fff
-}
-.btn-link{
- font-weight:400;
- color:#337ab7;
- border-radius:0
-}
-.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{
- background-color:transparent;
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{
- border-color:transparent
-}
-.btn-link:focus,.btn-link:hover{
- color:#23527c;
- text-decoration:underline;
- background-color:transparent
-}
-.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{
- color:#777;
- text-decoration:none
-}
-.btn-group-lg>.btn,.btn-lg{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-.btn-group-sm>.btn,.btn-sm{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-group-xs>.btn,.btn-xs{
- padding:1px 5px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-.btn-block{
- display:block;
- width:100%
-}
-.btn-block+.btn-block{
- margin-top:5px
-}
-input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{
- width:100%
-}
-.fade{
- opacity:0;
- -webkit-transition:opacity .15s linear;
- -o-transition:opacity .15s linear;
- transition:opacity .15s linear
-}
-.fade.in{
- opacity:1
-}
-.collapse{
- display:none
-}
-.collapse.in{
- display:block
-}
-tr.collapse.in{
- display:table-row
-}
-tbody.collapse.in{
- display:table-row-group
-}
-.collapsing{
- position:relative;
- height:0;
- overflow:hidden;
- -webkit-transition-timing-function:ease;
- -o-transition-timing-function:ease;
- transition-timing-function:ease;
- -webkit-transition-duration:.35s;
- -o-transition-duration:.35s;
- transition-duration:.35s;
- -webkit-transition-property:height,visibility;
- -o-transition-property:height,visibility;
- transition-property:height,visibility
-}
-.caret{
- display:inline-block;
- width:0;
- height:0;
- margin-left:2px;
- vertical-align:middle;
- border-top:4px dashed;
- border-top:4px solid\9;
- border-right:4px solid transparent;
- border-left:4px solid transparent
-}
-.dropdown,.dropup{
- position:relative
-}
-.dropdown-toggle:focus{
- outline:0
-}
-.dropdown-menu{
- position:absolute;
- top:100%;
- left:0;
- z-index:1000;
- display:none;
- float:left;
- min-width:160px;
- padding:5px 0;
- margin:2px 0 0;
- font-size:14px;
- text-align:left;
- list-style:none;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.15);
- border-radius:4px;
- -webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);
- box-shadow:0 6px 12px rgba(0,0,0,.175)
-}
-.dropdown-menu.pull-right{
- right:0;
- left:auto
-}
-.dropdown-menu .divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.dropdown-menu>li>a{
- display:block;
- padding:3px 20px;
- clear:both;
- font-weight:400;
- line-height:1.42857143;
- color:#333;
- white-space:nowrap
-}
-.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{
- color:#262626;
- text-decoration:none;
- background-color:#f5f5f5
-}
-.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{
- color:#fff;
- text-decoration:none;
- background-color:#337ab7;
- outline:0
-}
-.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- color:#777
-}
-.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent;
- background-image:none;
- filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)
-}
-.open>.dropdown-menu{
- display:block
-}
-.open>a{
- outline:0
-}
-.dropdown-menu-right{
- right:0;
- left:auto
-}
-.dropdown-menu-left{
- right:auto;
- left:0
-}
-.dropdown-header{
- display:block;
- padding:3px 20px;
- font-size:12px;
- line-height:1.42857143;
- color:#777;
- white-space:nowrap
-}
-.dropdown-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:990
-}
-.pull-right>.dropdown-menu{
- right:0;
- left:auto
-}
-.dropup .caret,.navbar-fixed-bottom .dropdown .caret{
- content:"";
- border-top:0;
- border-bottom:4px dashed;
- border-bottom:4px solid\9
-}
-.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{
- top:auto;
- bottom:100%;
- margin-bottom:2px
-}
-@media (min-width:768px){
- .navbar-right .dropdown-menu{
- right:0;
- left:auto
- }
- .navbar-right .dropdown-menu-left{
- right:auto;
- left:0
- }
-}
-.btn-group,.btn-group-vertical{
- position:relative;
- display:inline-block;
- vertical-align:middle
-}
-.btn-group-vertical>.btn,.btn-group>.btn{
- position:relative;
- float:left
-}
-.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{
- z-index:2
-}
-.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{
- margin-left:-1px
-}
-.btn-toolbar{
- margin-left:-5px
-}
-.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{
- float:left
-}
-.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{
- margin-left:5px
-}
-.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){
- border-radius:0
-}
-.btn-group>.btn:first-child{
- margin-left:0
-}
-.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group>.btn-group{
- float:left
-}
-.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{
- outline:0
-}
-.btn-group>.btn+.dropdown-toggle{
- padding-right:8px;
- padding-left:8px
-}
-.btn-group>.btn-lg+.dropdown-toggle{
- padding-right:12px;
- padding-left:12px
-}
-.btn-group.open .dropdown-toggle{
- -webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);
- box-shadow:inset 0 3px 5px rgba(0,0,0,.125)
-}
-.btn-group.open .dropdown-toggle.btn-link{
- -webkit-box-shadow:none;
- box-shadow:none
-}
-.btn .caret{
- margin-left:0
-}
-.btn-lg .caret{
- border-width:5px 5px 0;
- border-bottom-width:0
-}
-.dropup .btn-lg .caret{
- border-width:0 5px 5px
-}
-.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{
- display:block;
- float:none;
- width:100%;
- max-width:100%
-}
-.btn-group-vertical>.btn-group>.btn{
- float:none
-}
-.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{
- margin-top:-1px;
- margin-left:0
-}
-.btn-group-vertical>.btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.btn-group-vertical>.btn:first-child:not(:last-child){
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn:last-child:not(:first-child){
- border-top-left-radius:0;
- border-top-right-radius:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{
- border-radius:0
-}
-.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.btn-group-justified{
- display:table;
- width:100%;
- table-layout:fixed;
- border-collapse:separate
-}
-.btn-group-justified>.btn,.btn-group-justified>.btn-group{
- display:table-cell;
- float:none;
- width:1%
-}
-.btn-group-justified>.btn-group .btn{
- width:100%
-}
-.btn-group-justified>.btn-group .dropdown-menu{
- left:auto
-}
-[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{
- position:absolute;
- clip:rect(0,0,0,0);
- pointer-events:none
-}
-.input-group{
- position:relative;
- display:table;
- border-collapse:separate
-}
-.input-group[class*=col-]{
- float:none;
- padding-right:0;
- padding-left:0
-}
-.input-group .form-control{
- position:relative;
- z-index:2;
- float:left;
- width:100%;
- margin-bottom:0
-}
-.input-group .form-control:focus{
- z-index:3
-}
-.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{
- height:46px;
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333;
- border-radius:6px
-}
-select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{
- height:46px;
- line-height:46px
-}
-select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{
- height:auto
-}
-.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{
- height:30px;
- padding:5px 10px;
- font-size:12px;
- line-height:1.5;
- border-radius:3px
-}
-select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{
- height:30px;
- line-height:30px
-}
-select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{
- height:auto
-}
-.input-group .form-control,.input-group-addon,.input-group-btn{
- display:table-cell
-}
-.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){
- border-radius:0
-}
-.input-group-addon,.input-group-btn{
- width:1%;
- white-space:nowrap;
- vertical-align:middle
-}
-.input-group-addon{
- padding:6px 12px;
- font-size:14px;
- font-weight:400;
- line-height:1;
- color:#555;
- text-align:center;
- background-color:#eee;
- border:1px solid #ccc;
- border-radius:4px
-}
-.input-group-addon.input-sm{
- padding:5px 10px;
- font-size:12px;
- border-radius:3px
-}
-.input-group-addon.input-lg{
- padding:10px 16px;
- font-size:18px;
- border-radius:6px
-}
-.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{
- margin-top:0
-}
-.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){
- border-top-right-radius:0;
- border-bottom-right-radius:0
-}
-.input-group-addon:first-child{
- border-right:0
-}
-.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{
- border-top-left-radius:0;
- border-bottom-left-radius:0
-}
-.input-group-addon:last-child{
- border-left:0
-}
-.input-group-btn{
- position:relative;
- font-size:0;
- white-space:nowrap
-}
-.input-group-btn>.btn{
- position:relative
-}
-.input-group-btn>.btn+.btn{
- margin-left:-1px
-}
-.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{
- z-index:2
-}
-.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{
- margin-right:-1px
-}
-.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{
- z-index:2;
- margin-left:-1px
-}
-.nav{
- padding-left:0;
- margin-bottom:0;
- list-style:none
-}
-.nav>li{
- position:relative;
- display:block
-}
-.nav>li>a{
- position:relative;
- display:block;
- padding:10px 15px
-}
-.nav>li>a:focus,.nav>li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.nav>li.disabled>a{
- color:#777
-}
-.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{
- color:#777;
- text-decoration:none;
- cursor:not-allowed;
- background-color:transparent
-}
-.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{
- background-color:#eee;
- border-color:#337ab7
-}
-.nav .nav-divider{
- height:1px;
- margin:9px 0;
- overflow:hidden;
- background-color:#e5e5e5
-}
-.nav>li>a>img{
- max-width:none
-}
-.nav-tabs{
- border-bottom:1px solid #ddd
-}
-.nav-tabs>li{
- float:left;
- margin-bottom:-1px
-}
-.nav-tabs>li>a{
- margin-right:2px;
- line-height:1.42857143;
- border:1px solid transparent;
- border-radius:4px 4px 0 0
-}
-.nav-tabs>li>a:hover{
- border-color:#eee #eee #ddd
-}
-.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{
- color:#555;
- cursor:default;
- background-color:#fff;
- border:1px solid #ddd;
- border-bottom-color:transparent
-}
-.nav-tabs.nav-justified{
- width:100%;
- border-bottom:0
-}
-.nav-tabs.nav-justified>li{
- float:none
-}
-.nav-tabs.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-tabs.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-tabs.nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs.nav-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs.nav-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.nav-pills>li{
- float:left
-}
-.nav-pills>li>a{
- border-radius:4px
-}
-.nav-pills>li+li{
- margin-left:2px
-}
-.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{
- color:#fff;
- background-color:#337ab7
-}
-.nav-stacked>li{
- float:none
-}
-.nav-stacked>li+li{
- margin-top:2px;
- margin-left:0
-}
-.nav-justified{
- width:100%
-}
-.nav-justified>li{
- float:none
-}
-.nav-justified>li>a{
- margin-bottom:5px;
- text-align:center
-}
-.nav-justified>.dropdown .dropdown-menu{
- top:auto;
- left:auto
-}
-@media (min-width:768px){
- .nav-justified>li{
- display:table-cell;
- width:1%
- }
- .nav-justified>li>a{
- margin-bottom:0
- }
-}
-.nav-tabs-justified{
- border-bottom:0
-}
-.nav-tabs-justified>li>a{
- margin-right:0;
- border-radius:4px
-}
-.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border:1px solid #ddd
-}
-@media (min-width:768px){
- .nav-tabs-justified>li>a{
- border-bottom:1px solid #ddd;
- border-radius:4px 4px 0 0
- }
- .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{
- border-bottom-color:#fff
- }
-}
-.tab-content>.tab-pane{
- display:none
-}
-.tab-content>.active{
- display:block
-}
-.nav-tabs .dropdown-menu{
- margin-top:-1px;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar{
- position:relative;
- min-height:50px;
- margin-bottom:20px;
- border:1px solid transparent
-}
-@media (min-width:768px){
- .navbar{
- border-radius:4px
- }
-}
-@media (min-width:768px){
- .navbar-header{
- float:left
- }
-}
-.navbar-collapse{
- padding-right:15px;
- padding-left:15px;
- overflow-x:visible;
- -webkit-overflow-scrolling:touch;
- border-top:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1)
-}
-.navbar-collapse.in{
- overflow-y:auto
-}
-@media (min-width:768px){
- .navbar-collapse{
- width:auto;
- border-top:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-collapse.collapse{
- display:block!important;
- height:auto!important;
- padding-bottom:0;
- overflow:visible!important
- }
- .navbar-collapse.in{
- overflow-y:visible
- }
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{
- padding-right:0;
- padding-left:0
- }
-}
-.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:340px
-}
-@media (max-device-width:480px) and (orientation:landscape){
- .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{
- max-height:200px
- }
-}
-.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:-15px;
- margin-left:-15px
-}
-@media (min-width:768px){
- .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{
- margin-right:0;
- margin-left:0
- }
-}
-.navbar-static-top{
- z-index:1000;
- border-width:0 0 1px
-}
-@media (min-width:768px){
- .navbar-static-top{
- border-radius:0
- }
-}
-.navbar-fixed-bottom,.navbar-fixed-top{
- position:fixed;
- right:0;
- left:0;
- z-index:1030
-}
-@media (min-width:768px){
- .navbar-fixed-bottom,.navbar-fixed-top{
- border-radius:0
- }
-}
-.navbar-fixed-top{
- top:0;
- border-width:0 0 1px
-}
-.navbar-fixed-bottom{
- bottom:0;
- margin-bottom:0;
- border-width:1px 0 0
-}
-.navbar-brand{
- float:left;
- height:50px;
- padding:15px 15px;
- font-size:18px;
- line-height:20px
-}
-.navbar-brand:focus,.navbar-brand:hover{
- text-decoration:none
-}
-.navbar-brand>img{
- display:block
-}
-@media (min-width:768px){
- .navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{
- margin-left:-15px
- }
-}
-.navbar-toggle{
- position:relative;
- float:right;
- padding:9px 10px;
- margin-top:8px;
- margin-right:15px;
- margin-bottom:8px;
- background-color:transparent;
- background-image:none;
- border:1px solid transparent;
- border-radius:4px
-}
-.navbar-toggle:focus{
- outline:0
-}
-.navbar-toggle .icon-bar{
- display:block;
- width:22px;
- height:2px;
- border-radius:1px
-}
-.navbar-toggle .icon-bar+.icon-bar{
- margin-top:4px
-}
-@media (min-width:768px){
- .navbar-toggle{
- display:none
- }
-}
-.navbar-nav{
- margin:7.5px -15px
-}
-.navbar-nav>li>a{
- padding-top:10px;
- padding-bottom:10px;
- line-height:20px
-}
-@media (max-width:767px){
- .navbar-nav .open .dropdown-menu{
- position:static;
- float:none;
- width:auto;
- margin-top:0;
- background-color:transparent;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
- .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{
- padding:5px 15px 5px 25px
- }
- .navbar-nav .open .dropdown-menu>li>a{
- line-height:20px
- }
- .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{
- background-image:none
- }
-}
-@media (min-width:768px){
- .navbar-nav{
- float:left;
- margin:0
- }
- .navbar-nav>li{
- float:left
- }
- .navbar-nav>li>a{
- padding-top:15px;
- padding-bottom:15px
- }
-}
-.navbar-form{
- padding:10px 15px;
- margin-top:8px;
- margin-right:-15px;
- margin-bottom:8px;
- margin-left:-15px;
- border-top:1px solid transparent;
- border-bottom:1px solid transparent;
- -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);
- box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)
-}
-@media (min-width:768px){
- .navbar-form .form-group{
- display:inline-block;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .form-control{
- display:inline-block;
- width:auto;
- vertical-align:middle
- }
- .navbar-form .form-control-static{
- display:inline-block
- }
- .navbar-form .input-group{
- display:inline-table;
- vertical-align:middle
- }
- .navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{
- width:auto
- }
- .navbar-form .input-group>.form-control{
- width:100%
- }
- .navbar-form .control-label{
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox,.navbar-form .radio{
- display:inline-block;
- margin-top:0;
- margin-bottom:0;
- vertical-align:middle
- }
- .navbar-form .checkbox label,.navbar-form .radio label{
- padding-left:0
- }
- .navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{
- position:relative;
- margin-left:0
- }
- .navbar-form .has-feedback .form-control-feedback{
- top:0
- }
-}
-@media (max-width:767px){
- .navbar-form .form-group{
- margin-bottom:5px
- }
- .navbar-form .form-group:last-child{
- margin-bottom:0
- }
-}
-@media (min-width:768px){
- .navbar-form{
- width:auto;
- padding-top:0;
- padding-bottom:0;
- margin-right:0;
- margin-left:0;
- border:0;
- -webkit-box-shadow:none;
- box-shadow:none
- }
-}
-.navbar-nav>li>.dropdown-menu{
- margin-top:0;
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{
- margin-bottom:0;
- border-top-left-radius:4px;
- border-top-right-radius:4px;
- border-bottom-right-radius:0;
- border-bottom-left-radius:0
-}
-.navbar-btn{
- margin-top:8px;
- margin-bottom:8px
-}
-.navbar-btn.btn-sm{
- margin-top:10px;
- margin-bottom:10px
-}
-.navbar-btn.btn-xs{
- margin-top:14px;
- margin-bottom:14px
-}
-.navbar-text{
- margin-top:15px;
- margin-bottom:15px
-}
-@media (min-width:768px){
- .navbar-text{
- float:left;
- margin-right:15px;
- margin-left:15px
- }
-}
-@media (min-width:768px){
- .navbar-left{
- float:left!important
- }
- .navbar-right{
- float:right!important;
- margin-right:-15px
- }
- .navbar-right~.navbar-right{
- margin-right:0
- }
-}
-.navbar-default{
- background-color:#f8f8f8;
- border-color:#e7e7e7
-}
-.navbar-default .navbar-brand{
- color:#777
-}
-.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{
- color:#5e5e5e;
- background-color:transparent
-}
-.navbar-default .navbar-text{
- color:#777
-}
-.navbar-default .navbar-nav>li>a{
- color:#777
-}
-.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{
- color:#333;
- background-color:transparent
-}
-.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
-}
-.navbar-default .navbar-toggle{
- border-color:#ddd
-}
-.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{
- background-color:#ddd
-}
-.navbar-default .navbar-toggle .icon-bar{
- background-color:#888
-}
-.navbar-default .navbar-collapse,.navbar-default .navbar-form{
- border-color:#e7e7e7
-}
-.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{
- color:#555;
- background-color:#e7e7e7
-}
-@media (max-width:767px){
- .navbar-default .navbar-nav .open .dropdown-menu>li>a{
- color:#777
- }
- .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#333;
- background-color:transparent
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#555;
- background-color:#e7e7e7
- }
- .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#ccc;
- background-color:transparent
- }
-}
-.navbar-default .navbar-link{
- color:#777
-}
-.navbar-default .navbar-link:hover{
- color:#333
-}
-.navbar-default .btn-link{
- color:#777
-}
-.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{
- color:#333
-}
-.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{
- color:#ccc
-}
-.navbar-inverse{
- background-color:#222;
- border-color:#080808
-}
-.navbar-inverse .navbar-brand{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-text{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{
- color:#fff;
- background-color:transparent
-}
-.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{
- color:#fff;
- background-color:#080808
-}
-.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{
- color:#444;
- background-color:transparent
-}
-.navbar-inverse .navbar-toggle{
- border-color:#333
-}
-.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{
- background-color:#333
-}
-.navbar-inverse .navbar-toggle .icon-bar{
- background-color:#fff
-}
-.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{
- border-color:#101010
-}
-.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{
- color:#fff;
- background-color:#080808
-}
-@media (max-width:767px){
- .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{
- border-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider{
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{
- color:#9d9d9d
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{
- color:#fff;
- background-color:transparent
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{
- color:#fff;
- background-color:#080808
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{
- color:#444;
- background-color:transparent
- }
-}
-.navbar-inverse .navbar-link{
- color:#9d9d9d
-}
-.navbar-inverse .navbar-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link{
- color:#9d9d9d
-}
-.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{
- color:#fff
-}
-.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{
- color:#444
-}
-.breadcrumb{
- padding:8px 15px;
- margin-bottom:20px;
- list-style:none;
- background-color:#f5f5f5;
- border-radius:4px
-}
-.breadcrumb>li{
- display:inline-block
-}
-.breadcrumb>li+li:before{
- padding:0 5px;
- color:#ccc;
- content:"/\00a0"
-}
-.breadcrumb>.active{
- color:#777
-}
-.pagination{
- display:inline-block;
- padding-left:0;
- margin:20px 0;
- border-radius:4px
-}
-.pagination>li{
- display:inline
-}
-.pagination>li>a,.pagination>li>span{
- position:relative;
- float:left;
- padding:6px 12px;
- margin-left:-1px;
- line-height:1.42857143;
- color:#337ab7;
- text-decoration:none;
- background-color:#fff;
- border:1px solid #ddd
-}
-.pagination>li:first-child>a,.pagination>li:first-child>span{
- margin-left:0;
- border-top-left-radius:4px;
- border-bottom-left-radius:4px
-}
-.pagination>li:last-child>a,.pagination>li:last-child>span{
- border-top-right-radius:4px;
- border-bottom-right-radius:4px
-}
-.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{
- z-index:2;
- color:#23527c;
- background-color:#eee;
- border-color:#ddd
-}
-.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{
- z-index:3;
- color:#fff;
- cursor:default;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#fff;
- border-color:#ddd
-}
-.pagination-lg>li>a,.pagination-lg>li>span{
- padding:10px 16px;
- font-size:18px;
- line-height:1.3333333
-}
-.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{
- border-top-left-radius:6px;
- border-bottom-left-radius:6px
-}
-.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{
- border-top-right-radius:6px;
- border-bottom-right-radius:6px
-}
-.pagination-sm>li>a,.pagination-sm>li>span{
- padding:5px 10px;
- font-size:12px;
- line-height:1.5
-}
-.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{
- border-top-left-radius:3px;
- border-bottom-left-radius:3px
-}
-.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{
- border-top-right-radius:3px;
- border-bottom-right-radius:3px
-}
-.pager{
- padding-left:0;
- margin:20px 0;
- text-align:center;
- list-style:none
-}
-.pager li{
- display:inline
-}
-.pager li>a,.pager li>span{
- display:inline-block;
- padding:5px 14px;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:15px
-}
-.pager li>a:focus,.pager li>a:hover{
- text-decoration:none;
- background-color:#eee
-}
-.pager .next>a,.pager .next>span{
- float:right
-}
-.pager .previous>a,.pager .previous>span{
- float:left
-}
-.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{
- color:#777;
- cursor:not-allowed;
- background-color:#fff
-}
-.label{
- display:inline;
- padding:.2em .6em .3em;
- font-size:75%;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:baseline;
- border-radius:.25em
-}
-a.label:focus,a.label:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.label:empty{
- display:none
-}
-.btn .label{
- position:relative;
- top:-1px
-}
-.label-default{
- background-color:#777
-}
-.label-default[href]:focus,.label-default[href]:hover{
- background-color:#5e5e5e
-}
-.label-primary{
- background-color:#337ab7
-}
-.label-primary[href]:focus,.label-primary[href]:hover{
- background-color:#286090
-}
-.label-success{
- background-color:#5cb85c
-}
-.label-success[href]:focus,.label-success[href]:hover{
- background-color:#449d44
-}
-.label-info{
- background-color:#5bc0de
-}
-.label-info[href]:focus,.label-info[href]:hover{
- background-color:#31b0d5
-}
-.label-warning{
- background-color:#f0ad4e
-}
-.label-warning[href]:focus,.label-warning[href]:hover{
- background-color:#ec971f
-}
-.label-danger{
- background-color:#d9534f
-}
-.label-danger[href]:focus,.label-danger[href]:hover{
- background-color:#c9302c
-}
-.badge{
- display:inline-block;
- min-width:10px;
- padding:3px 7px;
- font-size:12px;
- font-weight:700;
- line-height:1;
- color:#fff;
- text-align:center;
- white-space:nowrap;
- vertical-align:middle;
- background-color:#777;
- border-radius:10px
-}
-.badge:empty{
- display:none
-}
-.btn .badge{
- position:relative;
- top:-1px
-}
-.btn-group-xs>.btn .badge,.btn-xs .badge{
- top:0;
- padding:1px 5px
-}
-a.badge:focus,a.badge:hover{
- color:#fff;
- text-decoration:none;
- cursor:pointer
-}
-.list-group-item.active>.badge,.nav-pills>.active>a>.badge{
- color:#337ab7;
- background-color:#fff
-}
-.list-group-item>.badge{
- float:right
-}
-.list-group-item>.badge+.badge{
- margin-right:5px
-}
-.nav-pills>li>a>.badge{
- margin-left:3px
-}
-.jumbotron{
- padding-top:30px;
- padding-bottom:30px;
- margin-bottom:30px;
- color:inherit;
- background-color:#eee
-}
-.jumbotron .h1,.jumbotron h1{
- color:inherit
-}
-.jumbotron p{
- margin-bottom:15px;
- font-size:21px;
- font-weight:200
-}
-.jumbotron>hr{
- border-top-color:#d5d5d5
-}
-.container .jumbotron,.container-fluid .jumbotron{
- padding-right:15px;
- padding-left:15px;
- border-radius:6px
-}
-.jumbotron .container{
- max-width:100%
-}
-@media screen and (min-width:768px){
- .jumbotron{
- padding-top:48px;
- padding-bottom:48px
- }
- .container .jumbotron,.container-fluid .jumbotron{
- padding-right:60px;
- padding-left:60px
- }
- .jumbotron .h1,.jumbotron h1{
- font-size:63px
- }
-}
-.thumbnail{
- display:block;
- padding:4px;
- margin-bottom:20px;
- line-height:1.42857143;
- background-color:#fff;
- border:1px solid #ddd;
- border-radius:4px;
- -webkit-transition:border .2s ease-in-out;
- -o-transition:border .2s ease-in-out;
- transition:border .2s ease-in-out
-}
-.thumbnail a>img,.thumbnail>img{
- margin-right:auto;
- margin-left:auto
-}
-a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{
- border-color:#337ab7
-}
-.thumbnail .caption{
- padding:9px;
- color:#333
-}
-.alert{
- padding:15px;
- margin-bottom:20px;
- border:1px solid transparent;
- border-radius:4px
-}
-.alert h4{
- margin-top:0;
- color:inherit
-}
-.alert .alert-link{
- font-weight:700
-}
-.alert>p,.alert>ul{
- margin-bottom:0
-}
-.alert>p+p{
- margin-top:5px
-}
-.alert-dismissable,.alert-dismissible{
- padding-right:35px
-}
-.alert-dismissable .close,.alert-dismissible .close{
- position:relative;
- top:-2px;
- right:-21px;
- color:inherit
-}
-.alert-success{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.alert-success hr{
- border-top-color:#c9e2b3
-}
-.alert-success .alert-link{
- color:#2b542c
-}
-.alert-info{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.alert-info hr{
- border-top-color:#a6e1ec
-}
-.alert-info .alert-link{
- color:#245269
-}
-.alert-warning{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.alert-warning hr{
- border-top-color:#f7e1b5
-}
-.alert-warning .alert-link{
- color:#66512c
-}
-.alert-danger{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.alert-danger hr{
- border-top-color:#e4b9c0
-}
-.alert-danger .alert-link{
- color:#843534
-}
-@-webkit-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@-o-keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-@keyframes progress-bar-stripes{
- from{
- background-position:40px 0
- }
- to{
- background-position:0 0
- }
-}
-.progress{
- height:20px;
- margin-bottom:20px;
- overflow:hidden;
- background-color:#f5f5f5;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
- box-shadow:inset 0 1px 2px rgba(0,0,0,.1)
-}
-.progress-bar{
- float:left;
- width:0;
- height:100%;
- font-size:12px;
- line-height:20px;
- color:#fff;
- text-align:center;
- background-color:#337ab7;
- -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);
- -webkit-transition:width .6s ease;
- -o-transition:width .6s ease;
- transition:width .6s ease
-}
-.progress-bar-striped,.progress-striped .progress-bar{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- -webkit-background-size:40px 40px;
- background-size:40px 40px
-}
-.progress-bar.active,.progress.active .progress-bar{
- -webkit-animation:progress-bar-stripes 2s linear infinite;
- -o-animation:progress-bar-stripes 2s linear infinite;
- animation:progress-bar-stripes 2s linear infinite
-}
-.progress-bar-success{
- background-color:#5cb85c
-}
-.progress-striped .progress-bar-success{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-info{
- background-color:#5bc0de
-}
-.progress-striped .progress-bar-info{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-warning{
- background-color:#f0ad4e
-}
-.progress-striped .progress-bar-warning{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.progress-bar-danger{
- background-color:#d9534f
-}
-.progress-striped .progress-bar-danger{
- background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);
- background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)
-}
-.media{
- margin-top:15px
-}
-.media:first-child{
- margin-top:0
-}
-.media,.media-body{
- overflow:hidden;
- zoom:1
-}
-.media-body{
- width:10000px
-}
-.media-object{
- display:block
-}
-.media-object.img-thumbnail{
- max-width:none
-}
-.media-right,.media>.pull-right{
- padding-left:10px
-}
-.media-left,.media>.pull-left{
- padding-right:10px
-}
-.media-body,.media-left,.media-right{
- display:table-cell;
- vertical-align:top
-}
-.media-middle{
- vertical-align:middle
-}
-.media-bottom{
- vertical-align:bottom
-}
-.media-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.media-list{
- padding-left:0;
- list-style:none
-}
-.list-group{
- padding-left:0;
- margin-bottom:20px
-}
-.list-group-item{
- position:relative;
- display:block;
- padding:10px 15px;
- margin-bottom:-1px;
- background-color:#fff;
- border:1px solid #ddd
-}
-.list-group-item:first-child{
- border-top-left-radius:4px;
- border-top-right-radius:4px
-}
-.list-group-item:last-child{
- margin-bottom:0;
- border-bottom-right-radius:4px;
- border-bottom-left-radius:4px
-}
-a.list-group-item,button.list-group-item{
- color:#555
-}
-a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{
- color:#333
-}
-a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{
- color:#555;
- text-decoration:none;
- background-color:#f5f5f5
-}
-button.list-group-item{
- width:100%;
- text-align:left
-}
-.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{
- color:#777;
- cursor:not-allowed;
- background-color:#eee
-}
-.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{
- color:inherit
-}
-.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{
- color:#777
-}
-.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{
- z-index:2;
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{
- color:inherit
-}
-.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{
- color:#c7ddef
-}
-.list-group-item-success{
- color:#3c763d;
- background-color:#dff0d8
-}
-a.list-group-item-success,button.list-group-item-success{
- color:#3c763d
-}
-a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{
- color:#3c763d;
- background-color:#d0e9c6
-}
-a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{
- color:#fff;
- background-color:#3c763d;
- border-color:#3c763d
-}
-.list-group-item-info{
- color:#31708f;
- background-color:#d9edf7
-}
-a.list-group-item-info,button.list-group-item-info{
- color:#31708f
-}
-a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{
- color:#31708f;
- background-color:#c4e3f3
-}
-a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{
- color:#fff;
- background-color:#31708f;
- border-color:#31708f
-}
-.list-group-item-warning{
- color:#8a6d3b;
- background-color:#fcf8e3
-}
-a.list-group-item-warning,button.list-group-item-warning{
- color:#8a6d3b
-}
-a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{
- color:#8a6d3b;
- background-color:#faf2cc
-}
-a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{
- color:#fff;
- background-color:#8a6d3b;
- border-color:#8a6d3b
-}
-.list-group-item-danger{
- color:#a94442;
- background-color:#f2dede
-}
-a.list-group-item-danger,button.list-group-item-danger{
- color:#a94442
-}
-a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{
- color:inherit
-}
-a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{
- color:#a94442;
- background-color:#ebcccc
-}
-a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{
- color:#fff;
- background-color:#a94442;
- border-color:#a94442
-}
-.list-group-item-heading{
- margin-top:0;
- margin-bottom:5px
-}
-.list-group-item-text{
- margin-bottom:0;
- line-height:1.3
-}
-.panel{
- margin-bottom:20px;
- background-color:#fff;
- border:1px solid transparent;
- border-radius:4px;
- -webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);
- box-shadow:0 1px 1px rgba(0,0,0,.05)
-}
-.panel-body{
- padding:15px
-}
-.panel-heading{
- padding:10px 15px;
- border-bottom:1px solid transparent;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel-heading>.dropdown .dropdown-toggle{
- color:inherit
-}
-.panel-title{
- margin-top:0;
- margin-bottom:0;
- font-size:16px;
- color:inherit
-}
-.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{
- color:inherit
-}
-.panel-footer{
- padding:10px 15px;
- background-color:#f5f5f5;
- border-top:1px solid #ddd;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.list-group,.panel>.panel-collapse>.list-group{
- margin-bottom:0
-}
-.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{
- border-width:1px 0;
- border-radius:0
-}
-.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{
- border-top:0;
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{
- border-bottom:0;
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{
- border-top-left-radius:0;
- border-top-right-radius:0
-}
-.panel-heading+.list-group .list-group-item:first-child{
- border-top-width:0
-}
-.list-group+.panel-footer{
- border-top-width:0
-}
-.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{
- margin-bottom:0
-}
-.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{
- padding-right:15px;
- padding-left:15px
-}
-.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{
- border-top-left-radius:3px;
- border-top-right-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{
- border-top-left-radius:3px
-}
-.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{
- border-top-right-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{
- border-bottom-right-radius:3px;
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{
- border-bottom-left-radius:3px
-}
-.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{
- border-bottom-right-radius:3px
-}
-.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{
- border-top:1px solid #ddd
-}
-.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{
- border-top:0
-}
-.panel>.table-bordered,.panel>.table-responsive>.table-bordered{
- border:0
-}
-.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{
- border-left:0
-}
-.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{
- border-right:0
-}
-.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{
- border-bottom:0
-}
-.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{
- border-bottom:0
-}
-.panel>.table-responsive{
- margin-bottom:0;
- border:0
-}
-.panel-group{
- margin-bottom:20px
-}
-.panel-group .panel{
- margin-bottom:0;
- border-radius:4px
-}
-.panel-group .panel+.panel{
- margin-top:5px
-}
-.panel-group .panel-heading{
- border-bottom:0
-}
-.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{
- border-top:1px solid #ddd
-}
-.panel-group .panel-footer{
- border-top:0
-}
-.panel-group .panel-footer+.panel-collapse .panel-body{
- border-bottom:1px solid #ddd
-}
-.panel-default{
- border-color:#ddd
-}
-.panel-default>.panel-heading{
- color:#333;
- background-color:#f5f5f5;
- border-color:#ddd
-}
-.panel-default>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ddd
-}
-.panel-default>.panel-heading .badge{
- color:#f5f5f5;
- background-color:#333
-}
-.panel-default>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ddd
-}
-.panel-primary{
- border-color:#337ab7
-}
-.panel-primary>.panel-heading{
- color:#fff;
- background-color:#337ab7;
- border-color:#337ab7
-}
-.panel-primary>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#337ab7
-}
-.panel-primary>.panel-heading .badge{
- color:#337ab7;
- background-color:#fff
-}
-.panel-primary>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#337ab7
-}
-.panel-success{
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading{
- color:#3c763d;
- background-color:#dff0d8;
- border-color:#d6e9c6
-}
-.panel-success>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#d6e9c6
-}
-.panel-success>.panel-heading .badge{
- color:#dff0d8;
- background-color:#3c763d
-}
-.panel-success>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#d6e9c6
-}
-.panel-info{
- border-color:#bce8f1
-}
-.panel-info>.panel-heading{
- color:#31708f;
- background-color:#d9edf7;
- border-color:#bce8f1
-}
-.panel-info>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#bce8f1
-}
-.panel-info>.panel-heading .badge{
- color:#d9edf7;
- background-color:#31708f
-}
-.panel-info>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#bce8f1
-}
-.panel-warning{
- border-color:#faebcc
-}
-.panel-warning>.panel-heading{
- color:#8a6d3b;
- background-color:#fcf8e3;
- border-color:#faebcc
-}
-.panel-warning>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#faebcc
-}
-.panel-warning>.panel-heading .badge{
- color:#fcf8e3;
- background-color:#8a6d3b
-}
-.panel-warning>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#faebcc
-}
-.panel-danger{
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading{
- color:#a94442;
- background-color:#f2dede;
- border-color:#ebccd1
-}
-.panel-danger>.panel-heading+.panel-collapse>.panel-body{
- border-top-color:#ebccd1
-}
-.panel-danger>.panel-heading .badge{
- color:#f2dede;
- background-color:#a94442
-}
-.panel-danger>.panel-footer+.panel-collapse>.panel-body{
- border-bottom-color:#ebccd1
-}
-.embed-responsive{
- position:relative;
- display:block;
- height:0;
- padding:0;
- overflow:hidden
-}
-.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:100%;
- height:100%;
- border:0
-}
-.embed-responsive-16by9{
- padding-bottom:56.25%
-}
-.embed-responsive-4by3{
- padding-bottom:75%
-}
-.well{
- min-height:20px;
- padding:19px;
- margin-bottom:20px;
- background-color:#f5f5f5;
- border:1px solid #e3e3e3;
- border-radius:4px;
- -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);
- box-shadow:inset 0 1px 1px rgba(0,0,0,.05)
-}
-.well blockquote{
- border-color:#ddd;
- border-color:rgba(0,0,0,.15)
-}
-.well-lg{
- padding:24px;
- border-radius:6px
-}
-.well-sm{
- padding:9px;
- border-radius:3px
-}
-.close{
- float:right;
- font-size:21px;
- font-weight:700;
- line-height:1;
- color:#000;
- text-shadow:0 1px 0 #fff;
- filter:alpha(opacity=20);
- opacity:.2
-}
-.close:focus,.close:hover{
- color:#000;
- text-decoration:none;
- cursor:pointer;
- filter:alpha(opacity=50);
- opacity:.5
-}
-button.close{
- -webkit-appearance:none;
- padding:0;
- cursor:pointer;
- background:0 0;
- border:0
-}
-.modal-open{
- overflow:hidden
-}
-.modal{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1050;
- display:none;
- overflow:hidden;
- -webkit-overflow-scrolling:touch;
- outline:0
-}
-.modal.fade .modal-dialog{
- -webkit-transition:-webkit-transform .3s ease-out;
- -o-transition:-o-transform .3s ease-out;
- transition:transform .3s ease-out;
- -webkit-transform:translate(0,-25%);
- -ms-transform:translate(0,-25%);
- -o-transform:translate(0,-25%);
- transform:translate(0,-25%)
-}
-.modal.in .modal-dialog{
- -webkit-transform:translate(0,0);
- -ms-transform:translate(0,0);
- -o-transform:translate(0,0);
- transform:translate(0,0)
-}
-.modal-open .modal{
- overflow-x:hidden;
- overflow-y:auto
-}
-.modal-dialog{
- position:relative;
- width:auto;
- margin:10px
-}
-.modal-content{
- position:relative;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #999;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- outline:0;
- -webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);
- box-shadow:0 3px 9px rgba(0,0,0,.5)
-}
-.modal-backdrop{
- position:fixed;
- top:0;
- right:0;
- bottom:0;
- left:0;
- z-index:1040;
- background-color:#000
-}
-.modal-backdrop.fade{
- filter:alpha(opacity=0);
- opacity:0
-}
-.modal-backdrop.in{
- filter:alpha(opacity=50);
- opacity:.5
-}
-.modal-header{
- padding:15px;
- border-bottom:1px solid #e5e5e5
-}
-.modal-header .close{
- margin-top:-2px
-}
-.modal-title{
- margin:0;
- line-height:1.42857143
-}
-.modal-body{
- position:relative;
- padding:15px
-}
-.modal-footer{
- padding:15px;
- text-align:right;
- border-top:1px solid #e5e5e5
-}
-.modal-footer .btn+.btn{
- margin-bottom:0;
- margin-left:5px
-}
-.modal-footer .btn-group .btn+.btn{
- margin-left:-1px
-}
-.modal-footer .btn-block+.btn-block{
- margin-left:0
-}
-.modal-scrollbar-measure{
- position:absolute;
- top:-9999px;
- width:50px;
- height:50px;
- overflow:scroll
-}
-@media (min-width:768px){
- .modal-dialog{
- width:600px;
- margin:30px auto
- }
- .modal-content{
- -webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);
- box-shadow:0 5px 15px rgba(0,0,0,.5)
- }
- .modal-sm{
- width:300px
- }
-}
-@media (min-width:992px){
- .modal-lg{
- width:900px
- }
-}
-.tooltip{
- position:absolute;
- z-index:1070;
- display:block;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:12px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- filter:alpha(opacity=0);
- opacity:0;
- line-break:auto
-}
-.tooltip.in{
- filter:alpha(opacity=90);
- opacity:.9
-}
-.tooltip.top{
- padding:5px 0;
- margin-top:-3px
-}
-.tooltip.right{
- padding:0 5px;
- margin-left:3px
-}
-.tooltip.bottom{
- padding:5px 0;
- margin-top:3px
-}
-.tooltip.left{
- padding:0 5px;
- margin-left:-3px
-}
-.tooltip-inner{
- max-width:200px;
- padding:3px 8px;
- color:#fff;
- text-align:center;
- background-color:#000;
- border-radius:4px
-}
-.tooltip-arrow{
- position:absolute;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.tooltip.top .tooltip-arrow{
- bottom:0;
- left:50%;
- margin-left:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-left .tooltip-arrow{
- right:5px;
- bottom:0;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.top-right .tooltip-arrow{
- bottom:0;
- left:5px;
- margin-bottom:-5px;
- border-width:5px 5px 0;
- border-top-color:#000
-}
-.tooltip.right .tooltip-arrow{
- top:50%;
- left:0;
- margin-top:-5px;
- border-width:5px 5px 5px 0;
- border-right-color:#000
-}
-.tooltip.left .tooltip-arrow{
- top:50%;
- right:0;
- margin-top:-5px;
- border-width:5px 0 5px 5px;
- border-left-color:#000
-}
-.tooltip.bottom .tooltip-arrow{
- top:0;
- left:50%;
- margin-left:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-left .tooltip-arrow{
- top:0;
- right:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.tooltip.bottom-right .tooltip-arrow{
- top:0;
- left:5px;
- margin-top:-5px;
- border-width:0 5px 5px;
- border-bottom-color:#000
-}
-.popover{
- position:absolute;
- top:0;
- left:0;
- z-index:1060;
- display:none;
- max-width:276px;
- padding:1px;
- font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
- font-size:14px;
- font-style:normal;
- font-weight:400;
- line-height:1.42857143;
- text-align:left;
- text-align:start;
- text-decoration:none;
- text-shadow:none;
- text-transform:none;
- letter-spacing:normal;
- word-break:normal;
- word-spacing:normal;
- word-wrap:normal;
- white-space:normal;
- background-color:#fff;
- -webkit-background-clip:padding-box;
- background-clip:padding-box;
- border:1px solid #ccc;
- border:1px solid rgba(0,0,0,.2);
- border-radius:6px;
- -webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);
- box-shadow:0 5px 10px rgba(0,0,0,.2);
- line-break:auto
-}
-.popover.top{
- margin-top:-10px
-}
-.popover.right{
- margin-left:10px
-}
-.popover.bottom{
- margin-top:10px
-}
-.popover.left{
- margin-left:-10px
-}
-.popover-title{
- padding:8px 14px;
- margin:0;
- font-size:14px;
- background-color:#f7f7f7;
- border-bottom:1px solid #ebebeb;
- border-radius:5px 5px 0 0
-}
-.popover-content{
- padding:9px 14px
-}
-.popover>.arrow,.popover>.arrow:after{
- position:absolute;
- display:block;
- width:0;
- height:0;
- border-color:transparent;
- border-style:solid
-}
-.popover>.arrow{
- border-width:11px
-}
-.popover>.arrow:after{
- content:"";
- border-width:10px
-}
-.popover.top>.arrow{
- bottom:-11px;
- left:50%;
- margin-left:-11px;
- border-top-color:#999;
- border-top-color:rgba(0,0,0,.25);
- border-bottom-width:0
-}
-.popover.top>.arrow:after{
- bottom:1px;
- margin-left:-10px;
- content:" ";
- border-top-color:#fff;
- border-bottom-width:0
-}
-.popover.right>.arrow{
- top:50%;
- left:-11px;
- margin-top:-11px;
- border-right-color:#999;
- border-right-color:rgba(0,0,0,.25);
- border-left-width:0
-}
-.popover.right>.arrow:after{
- bottom:-10px;
- left:1px;
- content:" ";
- border-right-color:#fff;
- border-left-width:0
-}
-.popover.bottom>.arrow{
- top:-11px;
- left:50%;
- margin-left:-11px;
- border-top-width:0;
- border-bottom-color:#999;
- border-bottom-color:rgba(0,0,0,.25)
-}
-.popover.bottom>.arrow:after{
- top:1px;
- margin-left:-10px;
- content:" ";
- border-top-width:0;
- border-bottom-color:#fff
-}
-.popover.left>.arrow{
- top:50%;
- right:-11px;
- margin-top:-11px;
- border-right-width:0;
- border-left-color:#999;
- border-left-color:rgba(0,0,0,.25)
-}
-.popover.left>.arrow:after{
- right:1px;
- bottom:-10px;
- content:" ";
- border-right-width:0;
- border-left-color:#fff
-}
-.carousel{
- position:relative
-}
-.carousel-inner{
- position:relative;
- width:100%;
- overflow:hidden
-}
-.carousel-inner>.item{
- position:relative;
- display:none;
- -webkit-transition:.6s ease-in-out left;
- -o-transition:.6s ease-in-out left;
- transition:.6s ease-in-out left
-}
-.carousel-inner>.item>a>img,.carousel-inner>.item>img{
- line-height:1
-}
-@media all and (transform-3d),(-webkit-transform-3d){
- .carousel-inner>.item{
- -webkit-transition:-webkit-transform .6s ease-in-out;
- -o-transition:-o-transform .6s ease-in-out;
- transition:transform .6s ease-in-out;
- -webkit-backface-visibility:hidden;
- backface-visibility:hidden;
- -webkit-perspective:1000px;
- perspective:1000px
- }
- .carousel-inner>.item.active.right,.carousel-inner>.item.next{
- left:0;
- -webkit-transform:translate3d(100%,0,0);
- transform:translate3d(100%,0,0)
- }
- .carousel-inner>.item.active.left,.carousel-inner>.item.prev{
- left:0;
- -webkit-transform:translate3d(-100%,0,0);
- transform:translate3d(-100%,0,0)
- }
- .carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{
- left:0;
- -webkit-transform:translate3d(0,0,0);
- transform:translate3d(0,0,0)
- }
-}
-.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{
- display:block
-}
-.carousel-inner>.active{
- left:0
-}
-.carousel-inner>.next,.carousel-inner>.prev{
- position:absolute;
- top:0;
- width:100%
-}
-.carousel-inner>.next{
- left:100%
-}
-.carousel-inner>.prev{
- left:-100%
-}
-.carousel-inner>.next.left,.carousel-inner>.prev.right{
- left:0
-}
-.carousel-inner>.active.left{
- left:-100%
-}
-.carousel-inner>.active.right{
- left:100%
-}
-.carousel-control{
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- width:15%;
- font-size:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6);
- background-color:rgba(0,0,0,0);
- filter:alpha(opacity=50);
- opacity:.5
-}
-.carousel-control.left{
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));
- background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control.right{
- right:0;
- left:auto;
- background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));
- background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
- filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
- background-repeat:repeat-x
-}
-.carousel-control:focus,.carousel-control:hover{
- color:#fff;
- text-decoration:none;
- filter:alpha(opacity=90);
- outline:0;
- opacity:.9
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- position:absolute;
- top:50%;
- z-index:5;
- display:inline-block;
- margin-top:-10px
-}
-.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- left:50%;
- margin-left:-10px
-}
-.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- right:50%;
- margin-right:-10px
-}
-.carousel-control .icon-next,.carousel-control .icon-prev{
- width:20px;
- height:20px;
- font-family:serif;
- line-height:1
-}
-.carousel-control .icon-prev:before{
- content:'\2039'
-}
-.carousel-control .icon-next:before{
- content:'\203a'
-}
-.carousel-indicators{
- position:absolute;
- bottom:10px;
- left:50%;
- z-index:15;
- width:60%;
- padding-left:0;
- margin-left:-30%;
- text-align:center;
- list-style:none
-}
-.carousel-indicators li{
- display:inline-block;
- width:10px;
- height:10px;
- margin:1px;
- text-indent:-999px;
- cursor:pointer;
- background-color:#000\9;
- background-color:rgba(0,0,0,0);
- border:1px solid #fff;
- border-radius:10px
-}
-.carousel-indicators .active{
- width:12px;
- height:12px;
- margin:0;
- background-color:#fff
-}
-.carousel-caption{
- position:absolute;
- right:15%;
- bottom:20px;
- left:15%;
- z-index:10;
- padding-top:20px;
- padding-bottom:20px;
- color:#fff;
- text-align:center;
- text-shadow:0 1px 2px rgba(0,0,0,.6)
-}
-.carousel-caption .btn{
- text-shadow:none
-}
-@media screen and (min-width:768px){
- .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{
- width:30px;
- height:30px;
- margin-top:-10px;
- font-size:30px
- }
- .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{
- margin-left:-10px
- }
- .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{
- margin-right:-10px
- }
- .carousel-caption{
- right:20%;
- left:20%;
- padding-bottom:30px
- }
- .carousel-indicators{
- bottom:20px
- }
-}
-.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{
- display:table;
- content:" "
-}
-.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{
- clear:both
-}
-.center-block{
- display:block;
- margin-right:auto;
- margin-left:auto
-}
-.pull-right{
- float:right!important
-}
-.pull-left{
- float:left!important
-}
-.hide{
- display:none!important
-}
-.show{
- display:block!important
-}
-.invisible{
- visibility:hidden
-}
-.text-hide{
- font:0/0 a;
- color:transparent;
- text-shadow:none;
- background-color:transparent;
- border:0
-}
-.hidden{
- display:none!important
-}
-.affix{
- position:fixed
-}
-@-ms-viewport{
- width:device-width
-}
-.visible-lg,.visible-md,.visible-sm,.visible-xs{
- display:none!important
-}
-.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{
- display:none!important
-}
-@media (max-width:767px){
- .visible-xs{
- display:block!important
- }
- table.visible-xs{
- display:table!important
- }
- tr.visible-xs{
- display:table-row!important
- }
- td.visible-xs,th.visible-xs{
- display:table-cell!important
- }
-}
-@media (max-width:767px){
- .visible-xs-block{
- display:block!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline{
- display:inline!important
- }
-}
-@media (max-width:767px){
- .visible-xs-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm{
- display:block!important
- }
- table.visible-sm{
- display:table!important
- }
- tr.visible-sm{
- display:table-row!important
- }
- td.visible-sm,th.visible-sm{
- display:table-cell!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-block{
- display:block!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline{
- display:inline!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .visible-sm-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md{
- display:block!important
- }
- table.visible-md{
- display:table!important
- }
- tr.visible-md{
- display:table-row!important
- }
- td.visible-md,th.visible-md{
- display:table-cell!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-block{
- display:block!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline{
- display:inline!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .visible-md-inline-block{
- display:inline-block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg{
- display:block!important
- }
- table.visible-lg{
- display:table!important
- }
- tr.visible-lg{
- display:table-row!important
- }
- td.visible-lg,th.visible-lg{
- display:table-cell!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-block{
- display:block!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline{
- display:inline!important
- }
-}
-@media (min-width:1200px){
- .visible-lg-inline-block{
- display:inline-block!important
- }
-}
-@media (max-width:767px){
- .hidden-xs{
- display:none!important
- }
-}
-@media (min-width:768px) and (max-width:991px){
- .hidden-sm{
- display:none!important
- }
-}
-@media (min-width:992px) and (max-width:1199px){
- .hidden-md{
- display:none!important
- }
-}
-@media (min-width:1200px){
- .hidden-lg{
- display:none!important
- }
-}
-.visible-print{
- display:none!important
-}
-@media print{
- .visible-print{
- display:block!important
- }
- table.visible-print{
- display:table!important
- }
- tr.visible-print{
- display:table-row!important
- }
- td.visible-print,th.visible-print{
- display:table-cell!important
- }
-}
-.visible-print-block{
- display:none!important
-}
-@media print{
- .visible-print-block{
- display:block!important
- }
-}
-.visible-print-inline{
- display:none!important
-}
-@media print{
- .visible-print-inline{
- display:inline!important
- }
-}
-.visible-print-inline-block{
- display:none!important
-}
-@media print{
- .visible-print-inline-block{
- display:inline-block!important
- }
-}
-@media print{
- .hidden-print{
- display:none!important
- }
-}
-/*# sourceMappingURL=bootstrap.min.css.map */
-
diff --git a/themes/triangles/client/src/css/01-main.css b/themes/triangles/client/src/css/01-main.css
deleted file mode 100644
index 347c0b81c..000000000
--- a/themes/triangles/client/src/css/01-main.css
+++ /dev/null
@@ -1,77 +0,0 @@
-body {
- background-image: url("/img/LargeTriangles.svg");
- /*background-image: url("//*img//*RandomizedPattern.svg");*/
- /*background-image: url("//*img//*background.svg");*/
- /*background-color:#000000;*/
-}
-canvas{
- position:absolute;
- top:0;
- left:0;
-}
-.authelia-brand {
- font-weight: bold;
- font-style: italic;
- color: #ffffff
-}
-.poweredby-block {
- margin: 0px 30px;
- margin-top: 10px;
- padding-top: 15px;
- border-top: 1px solid rgba(0, 0, 0, 0.15);
-
-}
-.poweredby {
- font-size: 0.7em;
- color: white;
-}
-/* notifications */
-.notification {
- padding: 10px;
- margin: 15px 0px;
- border-radius: 6px;
- display: none;
- position: absolute;
-}
-.notification img {
- width: 24px;
- margin-right: 10px;
-}
-.notification i,
-.notification span {
- display:table-cell;
- vertical-align:middle;
-}
-.info {
- border: 1px solid #9cb1ff;
- background-color: rgb(192, 220, 255);
-}
-.success {
- border: 1px solid #65ec7c;
- background-color: rgb(163, 255, 157);
-}
-.error {
- border: 1px solid #ffa3a3;
- background-color: rgb(255, 175, 175);
-}
-.warning {
- border: 1px solid #ffd743;
- background-color: rgb(255, 230, 143);
-}
-.bottom-right-links {
- text-align: right;
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-.header {
- background-color: #000000;
- color: white;
- margin: 0px;
-}
-.body {
- padding: 10px;
-}
-h1 {
- font-size: 25px;
-}
diff --git a/themes/triangles/client/src/css/02-login.css b/themes/triangles/client/src/css/02-login.css
deleted file mode 100644
index a6984267b..000000000
--- a/themes/triangles/client/src/css/02-login.css
+++ /dev/null
@@ -1,136 +0,0 @@
-.form-signin
-{
- margin: 0 auto;
-}
-
-.form-signin .form-signin-heading, .form-signin .checkbox
-{
- margin-bottom: 10px;
-}
-
-.form-signin .checkbox
-{
- font-weight: normal;
-}
-
-.form-signin .form-control
-{
- position: relative;
- font-size: 16px;
- height: auto;
- padding: 10px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-.form-signin .form-control:focus
-{
- z-index: 2;
-}
-.form-signin input[type="text"]
-{
- margin-bottom: -1px;
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-}
-.form-signin input[type="password"]
-{
- /* margin-bottom: 10px; */
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.account-wall
-{
- border: 1px solid #000;
- margin-top: 20px;
- padding-bottom: 20px;
- background-color: #000000;
- -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
- box-shadow: 0px 2px 2px rgba(0, 0, 0, 1);
-}
-.account-wall h1
-{
- margin-bottom: 15px;
- margin-top: 15px;
- font-weight: 800;
- display: block;
- text-align: center;
-}
-.account-wall h3
-{
- display: block;
- text-align: center;
-}
-.account-wall p
-{
- text-align: center;
- margin: 10px;
- color: white;
-}
-.account-wall .form-inputs
-{
- margin-bottom: 10px;
- border-color: #b20c0c;
-}
-.account-wall hr {
- border-color: #c5c5c5;
-}
-
-.header-img
-{
- width: 96px;
- height: 96px;
- margin: 0 auto 10px;
- display: block;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
- border-radius: 50%;
-}
-
-.link
-{
- margin-top: 10px;
- color: white;
-}
-
-.btn-primary.totp
-{
- background-color: rgb(102, 135, 162);
-}
-
-.btn-primary.u2f
-{
- background-color: rgb(83, 149, 204);
-}
-
-.u2f-token {
- text-align: center;
-}
-
-.u2f-token img {
- width: 70px;
-}
-
-.keep-me-logged-in {
- margin-top: 10px;
- font-size: 0.8em;
- color: white;
-}
-
-.keep-me-logged-in input[type=checkbox] {
- transform: scale(0.8);
- margin: 0;
- margin-right: 4px;
-}
-
-.keep-me-logged-in label {
- font-weight: 300;
-}
-
-.keep-me-logged-in input,
-.keep-me-logged-in label {
- display: inline-block;
- margin-bottom: 0; /* I added this after I posted my reply */
- vertical-align: middle; /* Fixes any weird issues in Firefox and IE */
-}
diff --git a/themes/triangles/client/src/css/03-errors.css b/themes/triangles/client/src/css/03-errors.css
deleted file mode 100644
index e9f97f33b..000000000
--- a/themes/triangles/client/src/css/03-errors.css
+++ /dev/null
@@ -1,12 +0,0 @@
-
-.error-401 .header-img {
- border-radius: 0%;
-}
-
-.error-403 .header-img {
- border-radius: 0%;
-}
-
-.error-404 .header-img {
- border-radius: 0%;
-}
\ No newline at end of file
diff --git a/themes/triangles/client/src/css/03-password-reset-form.css b/themes/triangles/client/src/css/03-password-reset-form.css
deleted file mode 100644
index 34066bc24..000000000
--- a/themes/triangles/client/src/css/03-password-reset-form.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-form .header-img {
- border-radius: 0%;
-}
diff --git a/themes/triangles/client/src/css/03-password-reset-request.css b/themes/triangles/client/src/css/03-password-reset-request.css
deleted file mode 100644
index 1a2ad4df8..000000000
--- a/themes/triangles/client/src/css/03-password-reset-request.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
-.password-reset-request .header-img {
- border-radius: 0%;
-}
diff --git a/themes/triangles/client/src/css/03-totp-register.css b/themes/triangles/client/src/css/03-totp-register.css
deleted file mode 100644
index cb76720ad..000000000
--- a/themes/triangles/client/src/css/03-totp-register.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.totp-register #secret {
- background-color: white;
- font-size: 0.9em;
- font-weight: bold;
- padding: 5px;
- border: 1px solid #c7c7c7;
- word-wrap: break-word;
-}
-.totp-register #qrcode img {
- margin: 10px auto;
-}
-.totp-register .need-google-authenticator {
- text-align: center;
- margin-top: 20px;
-}
-.totp-register .store-badges {
- margin-top: 5px;
-}
-.totp-register .store-badge {
- width: 110px;
- height: 30px;
-}
\ No newline at end of file
diff --git a/themes/triangles/client/src/css/03-u2f-register.css b/themes/triangles/client/src/css/03-u2f-register.css
deleted file mode 100644
index e54cddf89..000000000
--- a/themes/triangles/client/src/css/03-u2f-register.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
-.u2f-register img {
- display: block;
- margin: 20px auto;
-}
\ No newline at end of file
diff --git a/themes/triangles/client/src/img/LargeTriangles.svg b/themes/triangles/client/src/img/LargeTriangles.svg
deleted file mode 100644
index 0988bcb39..000000000
--- a/themes/triangles/client/src/img/LargeTriangles.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/themes/triangles/client/src/img/background.jpg b/themes/triangles/client/src/img/background.jpg
deleted file mode 100644
index 974ea273f..000000000
Binary files a/themes/triangles/client/src/img/background.jpg and /dev/null differ
diff --git a/themes/triangles/client/src/img/icon.png b/themes/triangles/client/src/img/icon.png
deleted file mode 100644
index 040d10c1a..000000000
Binary files a/themes/triangles/client/src/img/icon.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/mail.png b/themes/triangles/client/src/img/mail.png
deleted file mode 100644
index 834bfce91..000000000
Binary files a/themes/triangles/client/src/img/mail.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/matrix_circle_128x128.png b/themes/triangles/client/src/img/matrix_circle_128x128.png
deleted file mode 100644
index 856e01556..000000000
Binary files a/themes/triangles/client/src/img/matrix_circle_128x128.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/notifications/.directory b/themes/triangles/client/src/img/notifications/.directory
deleted file mode 100644
index 7c8b80541..000000000
--- a/themes/triangles/client/src/img/notifications/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,35
-Version=3
-ViewMode=1
diff --git a/themes/triangles/client/src/img/notifications/error.png b/themes/triangles/client/src/img/notifications/error.png
deleted file mode 100644
index bf64d28f7..000000000
Binary files a/themes/triangles/client/src/img/notifications/error.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/notifications/info.png b/themes/triangles/client/src/img/notifications/info.png
deleted file mode 100644
index 67928e88c..000000000
Binary files a/themes/triangles/client/src/img/notifications/info.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/notifications/success.png b/themes/triangles/client/src/img/notifications/success.png
deleted file mode 100644
index d3998392d..000000000
Binary files a/themes/triangles/client/src/img/notifications/success.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/notifications/warning.png b/themes/triangles/client/src/img/notifications/warning.png
deleted file mode 100644
index ab8b54ffc..000000000
Binary files a/themes/triangles/client/src/img/notifications/warning.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/padlock.png b/themes/triangles/client/src/img/padlock.png
deleted file mode 100644
index 31abbaeef..000000000
Binary files a/themes/triangles/client/src/img/padlock.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/password_white.png b/themes/triangles/client/src/img/password_white.png
deleted file mode 100644
index 0b93ef3fb..000000000
Binary files a/themes/triangles/client/src/img/password_white.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/pendrive.png b/themes/triangles/client/src/img/pendrive.png
deleted file mode 100644
index fa49178c3..000000000
Binary files a/themes/triangles/client/src/img/pendrive.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/sharingan.png b/themes/triangles/client/src/img/sharingan.png
deleted file mode 100644
index 526787d3b..000000000
Binary files a/themes/triangles/client/src/img/sharingan.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/stores/.directory b/themes/triangles/client/src/img/stores/.directory
deleted file mode 100644
index 7bdc8daf8..000000000
--- a/themes/triangles/client/src/img/stores/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,57,25
-Version=3
-ViewMode=1
diff --git a/themes/triangles/client/src/img/stores/applestore-badge.svg b/themes/triangles/client/src/img/stores/applestore-badge.svg
deleted file mode 100644
index ac111e597..000000000
--- a/themes/triangles/client/src/img/stores/applestore-badge.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/triangles/client/src/img/stores/googleplay-badge.svg b/themes/triangles/client/src/img/stores/googleplay-badge.svg
deleted file mode 100644
index 9e33e3aa2..000000000
--- a/themes/triangles/client/src/img/stores/googleplay-badge.svg
+++ /dev/null
@@ -1,429 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/themes/triangles/client/src/img/success.png b/themes/triangles/client/src/img/success.png
deleted file mode 100644
index ee9d6841b..000000000
Binary files a/themes/triangles/client/src/img/success.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/user.png b/themes/triangles/client/src/img/user.png
deleted file mode 100644
index 00941399d..000000000
Binary files a/themes/triangles/client/src/img/user.png and /dev/null differ
diff --git a/themes/triangles/client/src/img/warning.png b/themes/triangles/client/src/img/warning.png
deleted file mode 100644
index c6acd953b..000000000
Binary files a/themes/triangles/client/src/img/warning.png and /dev/null differ
diff --git a/themes/triangles/client/src/thirdparties/qrcode.min.js b/themes/triangles/client/src/thirdparties/qrcode.min.js
deleted file mode 100644
index 993e88f39..000000000
--- a/themes/triangles/client/src/thirdparties/qrcode.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push(' ');g.push(" ")}g.push("
"),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();
\ No newline at end of file
diff --git a/themes/triangles/client/src/thirdparties/u2f-api.js b/themes/triangles/client/src/thirdparties/u2f-api.js
deleted file mode 100644
index 8c7801e3b..000000000
--- a/themes/triangles/client/src/thirdparties/u2f-api.js
+++ /dev/null
@@ -1,749 +0,0 @@
-//Copyright 2014-2015 Google Inc. All rights reserved.
-
-//Use of this source code is governed by a BSD-style
-//license that can be found in the LICENSE file or at
-//https://developers.google.com/open-source/licenses/bsd
-
-/**
- * @fileoverview The U2F api.
- */
-'use strict';
-
-
-/**
- * Namespace for the U2F api.
- * @type {Object}
- */
-var u2f = u2f || {};
-
-/**
- * FIDO U2F Javascript API Version
- * @number
- */
-var js_api_version;
-
-/**
- * The U2F extension id
- * @const {string}
- */
-// The Chrome packaged app extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the package Chrome app and does not require installing the U2F Chrome extension.
- u2f.EXTENSION_ID = 'kmendfapggjehodndflmmgagdbamhnfd';
-// The U2F Chrome extension ID.
-// Uncomment this if you want to deploy a server instance that uses
-// the U2F Chrome extension to authenticate.
-// u2f.EXTENSION_ID = 'pfboblefjcgdjicmnffhdgionmgcdmne';
-
-
-/**
- * Message types for messsages to/from the extension
- * @const
- * @enum {string}
- */
-u2f.MessageTypes = {
- 'U2F_REGISTER_REQUEST': 'u2f_register_request',
- 'U2F_REGISTER_RESPONSE': 'u2f_register_response',
- 'U2F_SIGN_REQUEST': 'u2f_sign_request',
- 'U2F_SIGN_RESPONSE': 'u2f_sign_response',
- 'U2F_GET_API_VERSION_REQUEST': 'u2f_get_api_version_request',
- 'U2F_GET_API_VERSION_RESPONSE': 'u2f_get_api_version_response'
-};
-
-
-/**
- * Response status codes
- * @const
- * @enum {number}
- */
-u2f.ErrorCodes = {
- 'OK': 0,
- 'OTHER_ERROR': 1,
- 'BAD_REQUEST': 2,
- 'CONFIGURATION_UNSUPPORTED': 3,
- 'DEVICE_INELIGIBLE': 4,
- 'TIMEOUT': 5
-};
-
-
-/**
- * A message for registration requests
- * @typedef {{
- * type: u2f.MessageTypes,
- * appId: ?string,
- * timeoutSeconds: ?number,
- * requestId: ?number
- * }}
- */
-u2f.U2fRequest;
-
-
-/**
- * A message for registration responses
- * @typedef {{
- * type: u2f.MessageTypes,
- * responseData: (u2f.Error | u2f.RegisterResponse | u2f.SignResponse),
- * requestId: ?number
- * }}
- */
-u2f.U2fResponse;
-
-
-/**
- * An error object for responses
- * @typedef {{
- * errorCode: u2f.ErrorCodes,
- * errorMessage: ?string
- * }}
- */
-u2f.Error;
-
-/**
- * Data object for a single sign request.
- * @typedef {enum {BLUETOOTH_RADIO, BLUETOOTH_LOW_ENERGY, USB, NFC}}
- */
-u2f.Transport;
-
-
-/**
- * Data object for a single sign request.
- * @typedef {Array}
- */
-u2f.Transports;
-
-/**
- * Data object for a single sign request.
- * @typedef {{
- * version: string,
- * challenge: string,
- * keyHandle: string,
- * appId: string
- * }}
- */
-u2f.SignRequest;
-
-
-/**
- * Data object for a sign response.
- * @typedef {{
- * keyHandle: string,
- * signatureData: string,
- * clientData: string
- * }}
- */
-u2f.SignResponse;
-
-
-/**
- * Data object for a registration request.
- * @typedef {{
- * version: string,
- * challenge: string
- * }}
- */
-u2f.RegisterRequest;
-
-
-/**
- * Data object for a registration response.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: Transports,
- * appId: string
- * }}
- */
-u2f.RegisterResponse;
-
-
-/**
- * Data object for a registered key.
- * @typedef {{
- * version: string,
- * keyHandle: string,
- * transports: ?Transports,
- * appId: ?string
- * }}
- */
-u2f.RegisteredKey;
-
-
-/**
- * Data object for a get API register response.
- * @typedef {{
- * js_api_version: number
- * }}
- */
-u2f.GetJsApiVersionResponse;
-
-
-//Low level MessagePort API support
-
-/**
- * Sets up a MessagePort to the U2F extension using the
- * available mechanisms.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- */
-u2f.getMessagePort = function(callback) {
- if (typeof chrome != 'undefined' && chrome.runtime) {
- // The actual message here does not matter, but we need to get a reply
- // for the callback to run. Thus, send an empty signature request
- // in order to get a failure response.
- var msg = {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: []
- };
- chrome.runtime.sendMessage(u2f.EXTENSION_ID, msg, function() {
- if (!chrome.runtime.lastError) {
- // We are on a whitelisted origin and can talk directly
- // with the extension.
- u2f.getChromeRuntimePort_(callback);
- } else {
- // chrome.runtime was available, but we couldn't message
- // the extension directly, use iframe
- u2f.getIframePort_(callback);
- }
- });
- } else if (u2f.isAndroidChrome_()) {
- u2f.getAuthenticatorPort_(callback);
- } else if (u2f.isIosChrome_()) {
- u2f.getIosPort_(callback);
- } else {
- // chrome.runtime was not available at all, which is normal
- // when this origin doesn't have access to any extensions.
- u2f.getIframePort_(callback);
- }
-};
-
-/**
- * Detect chrome running on android based on the browser's useragent.
- * @private
- */
-u2f.isAndroidChrome_ = function() {
- var userAgent = navigator.userAgent;
- return userAgent.indexOf('Chrome') != -1 &&
- userAgent.indexOf('Android') != -1;
-};
-
-/**
- * Detect chrome running on iOS based on the browser's platform.
- * @private
- */
-u2f.isIosChrome_ = function() {
- return ["iPhone", "iPad", "iPod"].indexOf(navigator.platform) > -1;
-};
-
-/**
- * Connects directly to the extension via chrome.runtime.connect.
- * @param {function(u2f.WrappedChromeRuntimePort_)} callback
- * @private
- */
-u2f.getChromeRuntimePort_ = function(callback) {
- var port = chrome.runtime.connect(u2f.EXTENSION_ID,
- {'includeTlsChannelId': true});
- setTimeout(function() {
- callback(new u2f.WrappedChromeRuntimePort_(port));
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the Authenticator app.
- * @param {function(u2f.WrappedAuthenticatorPort_)} callback
- * @private
- */
-u2f.getAuthenticatorPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedAuthenticatorPort_());
- }, 0);
-};
-
-/**
- * Return a 'port' abstraction to the iOS client app.
- * @param {function(u2f.WrappedIosPort_)} callback
- * @private
- */
-u2f.getIosPort_ = function(callback) {
- setTimeout(function() {
- callback(new u2f.WrappedIosPort_());
- }, 0);
-};
-
-/**
- * A wrapper for chrome.runtime.Port that is compatible with MessagePort.
- * @param {Port} port
- * @constructor
- * @private
- */
-u2f.WrappedChromeRuntimePort_ = function(port) {
- this.port_ = port;
-};
-
-/**
- * Format and return a sign request compliant with the JS API version supported by the extension.
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatSignRequest_ =
- function(appId, challenge, registeredKeys, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: challenge,
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- signRequests: signRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_SIGN_REQUEST,
- appId: appId,
- challenge: challenge,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-/**
- * Format and return a register request compliant with the JS API version supported by the extension..
- * @param {Array} signRequests
- * @param {Array} signRequests
- * @param {number} timeoutSeconds
- * @param {number} reqId
- * @return {Object}
- */
-u2f.formatRegisterRequest_ =
- function(appId, registeredKeys, registerRequests, timeoutSeconds, reqId) {
- if (js_api_version === undefined || js_api_version < 1.1) {
- // Adapt request to the 1.0 JS API
- for (var i = 0; i < registerRequests.length; i++) {
- registerRequests[i].appId = appId;
- }
- var signRequests = [];
- for (var i = 0; i < registeredKeys.length; i++) {
- signRequests[i] = {
- version: registeredKeys[i].version,
- challenge: registerRequests[0],
- keyHandle: registeredKeys[i].keyHandle,
- appId: appId
- };
- }
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- signRequests: signRequests,
- registerRequests: registerRequests,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
- }
- // JS 1.1 API
- return {
- type: u2f.MessageTypes.U2F_REGISTER_REQUEST,
- appId: appId,
- registerRequests: registerRequests,
- registeredKeys: registeredKeys,
- timeoutSeconds: timeoutSeconds,
- requestId: reqId
- };
-};
-
-
-/**
- * Posts a message on the underlying channel.
- * @param {Object} message
- */
-u2f.WrappedChromeRuntimePort_.prototype.postMessage = function(message) {
- this.port_.postMessage(message);
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface. Works only for the
- * onmessage event, which is hooked up to the chrome.runtime.Port.onMessage.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedChromeRuntimePort_.prototype.addEventListener =
- function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message' || name == 'onmessage') {
- this.port_.onMessage.addListener(function(message) {
- // Emulate a minimal MessageEvent object
- handler({'data': message});
- });
- } else {
- console.error('WrappedChromeRuntimePort only supports onMessage');
- }
-};
-
-/**
- * Wrap the Authenticator app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedAuthenticatorPort_ = function() {
- this.requestId_ = -1;
- this.requestObject_ = null;
-}
-
-/**
- * Launch the Authenticator intent.
- * @param {Object} message
- */
-u2f.WrappedAuthenticatorPort_.prototype.postMessage = function(message) {
- var intentUrl =
- u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ +
- ';S.request=' + encodeURIComponent(JSON.stringify(message)) +
- ';end';
- document.location = intentUrl;
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedAuthenticatorPort_.prototype.getPortType = function() {
- return "WrappedAuthenticatorPort_";
-};
-
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedAuthenticatorPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name == 'message') {
- var self = this;
- /* Register a callback to that executes when
- * chrome injects the response. */
- window.addEventListener(
- 'message', self.onRequestUpdate_.bind(self, handler), false);
- } else {
- console.error('WrappedAuthenticatorPort only supports message');
- }
-};
-
-/**
- * Callback invoked when a response is received from the Authenticator.
- * @param function({data: Object}) callback
- * @param {Object} message message Object
- */
-u2f.WrappedAuthenticatorPort_.prototype.onRequestUpdate_ =
- function(callback, message) {
- var messageObject = JSON.parse(message.data);
- var intentUrl = messageObject['intentURL'];
-
- var errorCode = messageObject['errorCode'];
- var responseObject = null;
- if (messageObject.hasOwnProperty('data')) {
- responseObject = /** @type {Object} */ (
- JSON.parse(messageObject['data']));
- }
-
- callback({'data': responseObject});
-};
-
-/**
- * Base URL for intents to Authenticator.
- * @const
- * @private
- */
-u2f.WrappedAuthenticatorPort_.INTENT_URL_BASE_ =
- 'intent:#Intent;action=com.google.android.apps.authenticator.AUTHENTICATE';
-
-/**
- * Wrap the iOS client app with a MessagePort interface.
- * @constructor
- * @private
- */
-u2f.WrappedIosPort_ = function() {};
-
-/**
- * Launch the iOS client app request
- * @param {Object} message
- */
-u2f.WrappedIosPort_.prototype.postMessage = function(message) {
- var str = JSON.stringify(message);
- var url = "u2f://auth?" + encodeURI(str);
- location.replace(url);
-};
-
-/**
- * Tells what type of port this is.
- * @return {String} port type
- */
-u2f.WrappedIosPort_.prototype.getPortType = function() {
- return "WrappedIosPort_";
-};
-
-/**
- * Emulates the HTML 5 addEventListener interface.
- * @param {string} eventName
- * @param {function({data: Object})} handler
- */
-u2f.WrappedIosPort_.prototype.addEventListener = function(eventName, handler) {
- var name = eventName.toLowerCase();
- if (name !== 'message') {
- console.error('WrappedIosPort only supports message');
- }
-};
-
-/**
- * Sets up an embedded trampoline iframe, sourced from the extension.
- * @param {function(MessagePort)} callback
- * @private
- */
-u2f.getIframePort_ = function(callback) {
- // Create the iframe
- var iframeOrigin = 'chrome-extension://' + u2f.EXTENSION_ID;
- var iframe = document.createElement('iframe');
- iframe.src = iframeOrigin + '/u2f-comms.html';
- iframe.setAttribute('style', 'display:none');
- document.body.appendChild(iframe);
-
- var channel = new MessageChannel();
- var ready = function(message) {
- if (message.data == 'ready') {
- channel.port1.removeEventListener('message', ready);
- callback(channel.port1);
- } else {
- console.error('First event on iframe port was not "ready"');
- }
- };
- channel.port1.addEventListener('message', ready);
- channel.port1.start();
-
- iframe.addEventListener('load', function() {
- // Deliver the port to the iframe and initialize
- iframe.contentWindow.postMessage('init', iframeOrigin, [channel.port2]);
- });
-};
-
-
-//High-level JS API
-
-/**
- * Default extension response timeout in seconds.
- * @const
- */
-u2f.EXTENSION_TIMEOUT_SEC = 30;
-
-/**
- * A singleton instance for a MessagePort to the extension.
- * @type {MessagePort|u2f.WrappedChromeRuntimePort_}
- * @private
- */
-u2f.port_ = null;
-
-/**
- * Callbacks waiting for a port
- * @type {Array}
- * @private
- */
-u2f.waitingForPort_ = [];
-
-/**
- * A counter for requestIds.
- * @type {number}
- * @private
- */
-u2f.reqCounter_ = 0;
-
-/**
- * A map from requestIds to client callbacks
- * @type {Object.}
- * @private
- */
-u2f.callbackMap_ = {};
-
-/**
- * Creates or retrieves the MessagePort singleton to use.
- * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback
- * @private
- */
-u2f.getPortSingleton_ = function(callback) {
- if (u2f.port_) {
- callback(u2f.port_);
- } else {
- if (u2f.waitingForPort_.length == 0) {
- u2f.getMessagePort(function(port) {
- u2f.port_ = port;
- u2f.port_.addEventListener('message',
- /** @type {function(Event)} */ (u2f.responseHandler_));
-
- // Careful, here be async callbacks. Maybe.
- while (u2f.waitingForPort_.length)
- u2f.waitingForPort_.shift()(u2f.port_);
- });
- }
- u2f.waitingForPort_.push(callback);
- }
-};
-
-/**
- * Handles response messages from the extension.
- * @param {MessageEvent.} message
- * @private
- */
-u2f.responseHandler_ = function(message) {
- var response = message.data;
- var reqId = response['requestId'];
- if (!reqId || !u2f.callbackMap_[reqId]) {
- console.error('Unknown or missing requestId in response.');
- return;
- }
- var cb = u2f.callbackMap_[reqId];
- delete u2f.callbackMap_[reqId];
- cb(response['responseData']);
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the sign request.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sign = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual sign request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0 : response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual sign request in the supported API version.
- u2f.sendSignRequest(appId, challenge, registeredKeys, callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches an array of sign requests to available U2F tokens.
- * @param {string=} appId
- * @param {string=} challenge
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.SignResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendSignRequest = function(appId, challenge, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatSignRequest_(appId, challenge, registeredKeys, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * If the JS API version supported by the extension is unknown, it first sends a
- * message to the extension to find out the supported API version and then it sends
- * the register request.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.register = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- if (js_api_version === undefined) {
- // Send a message to get the extension to JS API version, then send the actual register request.
- u2f.getApiVersion(
- function (response) {
- js_api_version = response['js_api_version'] === undefined ? 0: response['js_api_version'];
- console.log("Extension JS API Version: ", js_api_version);
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- });
- } else {
- // We know the JS API version. Send the actual register request in the supported API version.
- u2f.sendRegisterRequest(appId, registerRequests, registeredKeys,
- callback, opt_timeoutSeconds);
- }
-};
-
-/**
- * Dispatches register requests to available U2F tokens. An array of sign
- * requests identifies already registered tokens.
- * @param {string=} appId
- * @param {Array} registerRequests
- * @param {Array} registeredKeys
- * @param {function((u2f.Error|u2f.RegisterResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.sendRegisterRequest = function(appId, registerRequests, registeredKeys, callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var timeoutSeconds = (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC);
- var req = u2f.formatRegisterRequest_(
- appId, registeredKeys, registerRequests, timeoutSeconds, reqId);
- port.postMessage(req);
- });
-};
-
-
-/**
- * Dispatches a message to the extension to find out the supported
- * JS API version.
- * If the user is on a mobile phone and is thus using Google Authenticator instead
- * of the Chrome extension, don't send the request and simply return 0.
- * @param {function((u2f.Error|u2f.GetJsApiVersionResponse))} callback
- * @param {number=} opt_timeoutSeconds
- */
-u2f.getApiVersion = function(callback, opt_timeoutSeconds) {
- u2f.getPortSingleton_(function(port) {
- // If we are using Android Google Authenticator or iOS client app,
- // do not fire an intent to ask which JS API version to use.
- if (port.getPortType) {
- var apiVersion;
- switch (port.getPortType()) {
- case 'WrappedIosPort_':
- case 'WrappedAuthenticatorPort_':
- apiVersion = 1.1;
- break;
-
- default:
- apiVersion = 0;
- break;
- }
- callback({ 'js_api_version': apiVersion });
- return;
- }
- var reqId = ++u2f.reqCounter_;
- u2f.callbackMap_[reqId] = callback;
- var req = {
- type: u2f.MessageTypes.U2F_GET_API_VERSION_REQUEST,
- timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?
- opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),
- requestId: reqId
- };
- port.postMessage(req);
- });
-};
-
diff --git a/themes/triangles/server/.directory b/themes/triangles/server/.directory
deleted file mode 100644
index b7754766c..000000000
--- a/themes/triangles/server/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,58,20
-Version=3
-ViewMode=1
diff --git a/themes/triangles/server/src/resources/email-template.ejs b/themes/triangles/server/src/resources/email-template.ejs
deleted file mode 100644
index f59c2f944..000000000
--- a/themes/triangles/server/src/resources/email-template.ejs
+++ /dev/null
@@ -1,254 +0,0 @@
-
-
-
-
-
- Simples-Minimalistic Responsive Template
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <%= title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This email has been sent to you in order to validate your identity. Please ignore it if you do not know why you received it.
-
-
-
-
-
-
-
-
-
-
-
- <%= button_title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Please ignore this email if you did not initiate the process.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/themes/triangles/server/src/views/already-logged-in.pug b/themes/triangles/server/src/views/already-logged-in.pug
deleted file mode 100644
index 137bbea30..000000000
--- a/themes/triangles/server/src/views/already-logged-in.pug
+++ /dev/null
@@ -1,14 +0,0 @@
-extends layout/layout.pug
-
-block form-header
- h1 Sign in
-
-block content
- img(class="header-img" src="/img/success.png" alt="success")
- if redirection_url
- p You are already logged in as #{ username } .
- | If you are not redirected in few seconds, click here .
- | Otherwise, click here to log off.
- else
- p You are already logged in as #{ username } .
- | Click here to log off.
diff --git a/themes/triangles/server/src/views/errors/.directory b/themes/triangles/server/src/views/errors/.directory
deleted file mode 100644
index 33f71bea4..000000000
--- a/themes/triangles/server/src/views/errors/.directory
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-Timestamp=2018,12,17,20,59,57
-Version=3
-ViewMode=1
diff --git a/themes/triangles/server/src/views/errors/401.pug b/themes/triangles/server/src/views/errors/401.pug
deleted file mode 100644
index b7a222ad0..000000000
--- a/themes/triangles/server/src/views/errors/401.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-401";
-
-block form-header
- h1 Error 401
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You are not authorized to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You are not authorized to access this resource.
\ No newline at end of file
diff --git a/themes/triangles/server/src/views/errors/403.pug b/themes/triangles/server/src/views/errors/403.pug
deleted file mode 100644
index f4b5ca8a2..000000000
--- a/themes/triangles/server/src/views/errors/403.pug
+++ /dev/null
@@ -1,16 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-403";
-
-block form-header
- h1 Error 403
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- if redirection_url
- p You don't have enough privileges to access this resource.
- | Please click here if you are not
- | redirected in few seconds.
- else
- p You don't have enough privileges to access this resource.
diff --git a/themes/triangles/server/src/views/errors/404.pug b/themes/triangles/server/src/views/errors/404.pug
deleted file mode 100644
index 06d6375fc..000000000
--- a/themes/triangles/server/src/views/errors/404.pug
+++ /dev/null
@@ -1,11 +0,0 @@
-extends ../layout/layout.pug
-
-block variables
- - page_classname = "error-404";
-
-block form-header
- Error 404
-
-block content
- img(class="header-img" src="/img/warning.png" alt="warning")
- p Page not found.
diff --git a/themes/triangles/server/src/views/firstfactor.pug b/themes/triangles/server/src/views/firstfactor.pug
deleted file mode 100644
index 574470710..000000000
--- a/themes/triangles/server/src/views/firstfactor.pug
+++ /dev/null
@@ -1,23 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "firstfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/sharingan.png" alt="user profile")
- p Enter your credentials to sign in
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" id="username" placeholder="Username" required autofocus)
- input(type="password" class="form-control" id="password" placeholder="Password" required)
- button(id="signin" class="btn btn-lg btn-primary btn-block" type="submit") Sign in
- div(class="keep-me-logged-in pull-left")
- input(type="checkbox" id="keep_me_logged_in" name="keep_me_logged_in" value="true")
- label(for="keep_me_logged_in") Keep me logged in
- div(class="bottom-right-links pull-right")
- a(href=reset_password_request_endpoint, class="link forgot-password") Forgot password?
- span(class="clearfix")
diff --git a/themes/triangles/server/src/views/layout/layout.pug b/themes/triangles/server/src/views/layout/layout.pug
deleted file mode 100644
index 43247436d..000000000
--- a/themes/triangles/server/src/views/layout/layout.pug
+++ /dev/null
@@ -1,28 +0,0 @@
-block variables
-
-doctype html
-html
- head
- title Authelia - 2FA
- meta(name="viewport", content="width=device-width, initial-scale=1.0")
- meta(name="robots", content="noindex, nofollow, nosnippet, noarchive")
- meta(http-equiv="Content-Security-Policy", content="default-src 'self'; img-src 'self' data:;")
- link(rel="icon", href="/img/icon.png" type="image/png" sizes="32x32")
- link(rel="stylesheet", type="text/css", href="/css/authelia.css")
- if redirection_url
- meta(http-equiv="refresh" content="4;url=" + redirection_url)
- body
- div(class="container")
- div(class="row")
- div(class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3")
- div(class="account-wall " + page_classname)
- div(class="row header")
- block form-header
- div(class="row body")
- div(class="form col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2")
- block content
- div(class="row footer poweredby-block")
- div(class="poweredby col-xs-6 col-xs-offset-4 col-sm-6 col-sm-offset-4 col-md-6 col-md-offset-4")
- | Powered by Authelia
- block entrypoint
- script(src="/js/authelia.js", type="text/javascript")
diff --git a/themes/triangles/server/src/views/need-identity-validation.pug b/themes/triangles/server/src/views/need-identity-validation.pug
deleted file mode 100644
index 4cfd62717..000000000
--- a/themes/triangles/server/src/views/need-identity-validation.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "identity-validation";
-
-block form-header
- h1 Registration
-
-block content
- img(class="header-img" src="/img/mail.png" alt="mail")
- p A confirmation email has been sent to your mailbox.
- | Please open it and click on the link within 15 minutes to confirm the registration.
diff --git a/themes/triangles/server/src/views/password-reset-form.pug b/themes/triangles/server/src/views/password-reset-form.pug
deleted file mode 100644
index fd9311892..000000000
--- a/themes/triangles/server/src/views/password-reset-form.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-form";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- img(class="header-img" src="/img/password_white.png" alt="password")
- p Set your new password and confirm it.
- form(class="form-signin")
- div(class="form-inputs")
- input(class="form-control" type="password" name="password1" id="password1" placeholder="New password" required="required")
- input(class="form-control" type="password" name="password2" id="password2" placeholder="Password confirmation" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/triangles/server/src/views/password-reset-request.pug b/themes/triangles/server/src/views/password-reset-request.pug
deleted file mode 100644
index 855b5998b..000000000
--- a/themes/triangles/server/src/views/password-reset-request.pug
+++ /dev/null
@@ -1,18 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "password-reset-request";
-
-block form-header
- h1 Reset password
-
-block content
- div(class="notification")
- div
- img(class="header-img" src="/img/password_white.png" alt="password")
- p After giving your username, you will receive an email to change your password.
- form(class="form-signin")
- div(class="form-inputs")
- input(type="text" class="form-control" name="username" id="username" placeholder="Your username" required="required")
- button(id="reset-password-button" class="btn btn-lg btn-primary btn-block" type="submit") Reset Password
- span(class="clearfix")
diff --git a/themes/triangles/server/src/views/secondfactor.pug b/themes/triangles/server/src/views/secondfactor.pug
deleted file mode 100644
index 87b578185..000000000
--- a/themes/triangles/server/src/views/secondfactor.pug
+++ /dev/null
@@ -1,31 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "secondfactor";
-
-block form-header
- h1 Sign in
-
-block content
- div
- div(class="notification notification-totp")
- h3 Hi #{username}
- div(class="row")
- div(class="u2f-token")
- img(src="/img/pendrive.png", alt="security key")
- p
- | Please, touch your security key
- b Or
- | Get a one-time password
- form(class="form-signin totp")
- div(class="form-inputs")
- input(type="text" autocomplete="off" class="form-control" id="token" placeholder="Token" required autofocus)
- button(class="btn btn-lg btn-primary btn-block totp-button" type="submit") Sign in
- div(class="pull-right bottom-right-links")
- div Need to register?
- div
- a(href=u2f_identity_start_endpoint, class="link register-u2f", data-toggle="tooltip", title="A security key is required to register.") Security key
- | |
- a(href=totp_identity_start_endpoint, class="link register-totp") Google Authenticator
- span(class="clearfix")
- script(src="/js/u2f-api.js", type="text/javascript")
diff --git a/themes/triangles/server/src/views/totp-register.pug b/themes/triangles/server/src/views/totp-register.pug
deleted file mode 100644
index 1b4d98354..000000000
--- a/themes/triangles/server/src/views/totp-register.pug
+++ /dev/null
@@ -1,25 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "totp-register";
-
-block form-header
- h1 One-time passwords
-
-block content
- p Open Google Authenticator and add this entry
- p(id="secret") #{ base32_secret }
- p or scan this barcode
- div(id="qrcode") #{ otpauth_url }
- p
- a(href=login_endpoint, id="login-button") Login
- div(class="need-google-authenticator")
- | Need Google Authenticator?
- div(class="store-badges")
- a(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
- img(alt='Get it on Google Play', src='/img/stores/googleplay-badge.svg', class="store-badge")
- a(href='https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8', target="_blank")
- img(alt='Get it on Apple Store' src='/img/stores/applestore-badge.svg' class="store-badge")
-
-block entrypoint
- script(src="/js/qrcode.min.js", type="text/javascript" )
diff --git a/themes/triangles/server/src/views/u2f-register.pug b/themes/triangles/server/src/views/u2f-register.pug
deleted file mode 100644
index d52eba6ca..000000000
--- a/themes/triangles/server/src/views/u2f-register.pug
+++ /dev/null
@@ -1,12 +0,0 @@
-extends layout/layout.pug
-
-block variables
- - page_classname = "u2f-register";
-
-block form-header
- h1 Register your security key
-
-block content
- p Touch the token to register your security key.
- img(src="/img/pendrive.png" alt="pendrive")
- script(src="/js/u2f-api.js", type="text/javascript")
\ No newline at end of file