From b61697055af0fea40eddce62a7e2eb9cd6f687df Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 30 Jan 2015 13:21:51 -0500 Subject: [PATCH 01/12] Removing gulp dependency, making file hierarchy easier to understand. --- browser/main.js | 13 +- deps | 10 + .../clearsans-bold-webfont.ttf | Bin .../clearsans-bolditalic-webfont.ttf | Bin .../clearsans-italic-webfont.ttf | Bin .../clearsans-light-webfont.ttf | Bin .../clearsans-medium-webfont.ttf | Bin .../clearsans-mediumitalic-webfont.ttf | Bin .../clearsans-regular-webfont.ttf | Bin .../clearsans-thin-webfont.ttf | Bin {app/fonts => fonts}/streamline-24px.eot | Bin {app/fonts => fonts}/streamline-24px.svg | 0 {app/fonts => fonts}/streamline-24px.ttf | Bin {app/fonts => fonts}/streamline-24px.woff | Bin gulpfile.js | 204 - {app/images => images}/close.png | Bin {app/images => images}/close@2x.png | Bin .../downloading-arrow-white.png | Bin .../downloading-arrow-white@2x.png | Bin {app/images => images}/downloading-arrow.png | Bin .../downloading-arrow@2x.png | Bin {app/images => images}/downloading-white.png | Bin .../downloading-white@2x.png | Bin {app/images => images}/downloading.png | Bin {app/images => images}/downloading@2x.png | Bin {app/images => images}/error.png | Bin {app/images => images}/error@2x.png | Bin {app/images => images}/fullscreen.png | Bin {app/images => images}/fullscreen@2x.png | Bin {app/images => images}/fullscreenclose.png | Bin {app/images => images}/loading.png | Bin {app/images => images}/loading@2x.png | Bin {app/images => images}/minimize.png | Bin {app/images => images}/minimize@2x.png | Bin {app/images => images}/official.png | Bin {app/images => images}/official@2x.png | Bin {app/images => images}/paused.png | Bin {app/images => images}/paused@2x.png | Bin {app/images => images}/restarting.png | Bin {app/images => images}/restarting@2x.png | Bin {app/images => images}/roundedcontainer.png | Bin .../images => images}/roundedcontainer@2x.png | Bin {app/images => images}/running-white.png | Bin {app/images => images}/running-white@2x.png | Bin {app/images => images}/running.png | Bin {app/images => images}/running@2x.png | Bin {app/images => images}/runningwave-white.png | Bin .../runningwave-white@2x.png | Bin {app/images => images}/runningwave.png | Bin {app/images => images}/runningwave@2x.png | Bin {app/images => images}/still-white.png | Bin {app/images => images}/still-white@2x.png | Bin {app/images => images}/stopped-white.png | Bin {app/images => images}/stopped-white@2x.png | Bin {app/images => images}/stopped.png | Bin {app/images => images}/stopped@2x.png | Bin {app/images => images}/wavy-white.png | Bin {app/images => images}/wavy-white@2x.png | Bin app/index.html => index.html | 1 + package.json | 44 +- release | 35 + specs/App-spec.js | 11 - specs/specs.html | 9 - {app => src}/ContainerDetails.react.js | 3 +- .../ContainerDetailsSettings.react.js | 0 {app => src}/ContainerList.react.js | 0 {app => src}/ContainerModal.react.js | 0 {app => src}/ContainerStore.js | 14 +- {app => src}/ContainerUtil.js | 0 {app => src}/Containers.react.js | 0 {app => src}/Header.react.js | 0 {app => src}/Menu.js | 0 {app => src}/NoContainers.react.js | 0 {app => src}/Preferences.react.js | 0 {app => src}/Radial.react.js | 0 {app => src}/Setup.react.js | 0 {app => src}/boot2docker.js | 0 {app => src}/docker.js | 0 {app => src}/main.js | 8 - {app => src}/registry.js | 0 {app => src}/router.js | 0 {app => src}/routes.js | 0 {app => src}/util.js | 0 {app => src}/virtualbox.js | 6 +- {app/styles => styles}/bootstrap/alerts.less | 0 {app/styles => styles}/bootstrap/badges.less | 0 .../bootstrap/bootstrap.less | 0 .../bootstrap/breadcrumbs.less | 0 .../bootstrap/button-groups.less | 0 {app/styles => styles}/bootstrap/buttons.less | 0 .../styles => styles}/bootstrap/carousel.less | 0 {app/styles => styles}/bootstrap/close.less | 0 {app/styles => styles}/bootstrap/code.less | 0 .../bootstrap/component-animations.less | 0 .../bootstrap/dropdowns.less | 0 {app/styles => styles}/bootstrap/forms.less | 0 .../bootstrap/glyphicons.less | 0 {app/styles => styles}/bootstrap/grid.less | 0 .../bootstrap/input-groups.less | 0 .../bootstrap/jumbotron.less | 0 {app/styles => styles}/bootstrap/labels.less | 0 .../bootstrap/list-group.less | 0 {app/styles => styles}/bootstrap/media.less | 0 {app/styles => styles}/bootstrap/mixins.less | 0 .../bootstrap/mixins/alerts.less | 0 .../bootstrap/mixins/background-variant.less | 0 .../bootstrap/mixins/border-radius.less | 0 .../bootstrap/mixins/buttons.less | 0 .../bootstrap/mixins/center-block.less | 0 .../bootstrap/mixins/clearfix.less | 0 .../bootstrap/mixins/forms.less | 0 .../bootstrap/mixins/gradients.less | 0 .../bootstrap/mixins/grid-framework.less | 0 .../bootstrap/mixins/grid.less | 0 .../bootstrap/mixins/hide-text.less | 0 .../bootstrap/mixins/image.less | 0 .../bootstrap/mixins/labels.less | 0 .../bootstrap/mixins/list-group.less | 0 .../bootstrap/mixins/nav-divider.less | 0 .../bootstrap/mixins/nav-vertical-align.less | 0 .../bootstrap/mixins/opacity.less | 0 .../bootstrap/mixins/pagination.less | 0 .../bootstrap/mixins/panels.less | 0 .../bootstrap/mixins/progress-bar.less | 0 .../bootstrap/mixins/reset-filter.less | 0 .../bootstrap/mixins/resize.less | 0 .../mixins/responsive-visibility.less | 0 .../bootstrap/mixins/size.less | 0 .../bootstrap/mixins/tab-focus.less | 0 .../bootstrap/mixins/table-row.less | 0 .../bootstrap/mixins/text-emphasis.less | 0 .../bootstrap/mixins/text-overflow.less | 0 .../bootstrap/mixins/vendor-prefixes.less | 0 {app/styles => styles}/bootstrap/modals.less | 0 {app/styles => styles}/bootstrap/navbar.less | 0 {app/styles => styles}/bootstrap/navs.less | 0 .../bootstrap/normalize.less | 0 {app/styles => styles}/bootstrap/pager.less | 0 .../bootstrap/pagination.less | 0 {app/styles => styles}/bootstrap/panels.less | 0 .../styles => styles}/bootstrap/popovers.less | 0 {app/styles => styles}/bootstrap/print.less | 0 .../bootstrap/progress-bars.less | 0 .../bootstrap/responsive-embed.less | 0 .../bootstrap/responsive-utilities.less | 0 .../bootstrap/scaffolding.less | 0 {app/styles => styles}/bootstrap/tables.less | 0 {app/styles => styles}/bootstrap/theme.less | 0 .../bootstrap/thumbnails.less | 0 {app/styles => styles}/bootstrap/tooltip.less | 0 {app/styles => styles}/bootstrap/type.less | 0 .../bootstrap/utilities.less | 0 .../bootstrap/variables.less | 0 {app/styles => styles}/bootstrap/wells.less | 0 {app/styles => styles}/clearsans.less | 0 {app/styles => styles}/container-modal.less | 0 {app/styles => styles}/containers.less | 0 {app/styles => styles}/header.less | 0 {app/styles => styles}/icons.less | 0 {app/styles => styles}/main.less | 1 + {app/styles => styles}/preferences.less | 0 {app/styles => styles}/radial.less | 0 {app/styles => styles}/retina.less | 0 {app/styles => styles}/setup.less | 0 {app/styles => styles}/theme.less | 0 {app/styles => styles}/variables.less | 0 test.css | 14019 ++++++++++++++++ vendor/jasmine-2.1.3/boot.js | 120 - vendor/jasmine-2.1.3/console.js | 190 - vendor/jasmine-2.1.3/jasmine-html.js | 404 - vendor/jasmine-2.1.3/jasmine.css | 62 - vendor/jasmine-2.1.3/jasmine.js | 2908 ---- vendor/jasmine-2.1.3/jasmine_favicon.png | Bin 1486 -> 0 bytes 173 files changed, 14093 insertions(+), 3969 deletions(-) rename {app/fonts => fonts}/clearsans-bold-webfont.ttf (100%) rename {app/fonts => fonts}/clearsans-bolditalic-webfont.ttf (100%) rename {app/fonts => fonts}/clearsans-italic-webfont.ttf (100%) rename {app/fonts => fonts}/clearsans-light-webfont.ttf (100%) rename {app/fonts => fonts}/clearsans-medium-webfont.ttf (100%) rename {app/fonts => fonts}/clearsans-mediumitalic-webfont.ttf (100%) rename {app/fonts => fonts}/clearsans-regular-webfont.ttf (100%) rename {app/fonts => fonts}/clearsans-thin-webfont.ttf (100%) rename {app/fonts => fonts}/streamline-24px.eot (100%) rename {app/fonts => fonts}/streamline-24px.svg (100%) rename {app/fonts => fonts}/streamline-24px.ttf (100%) rename {app/fonts => fonts}/streamline-24px.woff (100%) delete mode 100644 gulpfile.js rename {app/images => images}/close.png (100%) rename {app/images => images}/close@2x.png (100%) rename {app/images => images}/downloading-arrow-white.png (100%) rename {app/images => images}/downloading-arrow-white@2x.png (100%) rename {app/images => images}/downloading-arrow.png (100%) rename {app/images => images}/downloading-arrow@2x.png (100%) rename {app/images => images}/downloading-white.png (100%) rename {app/images => images}/downloading-white@2x.png (100%) rename {app/images => images}/downloading.png (100%) rename {app/images => images}/downloading@2x.png (100%) rename {app/images => images}/error.png (100%) rename {app/images => images}/error@2x.png (100%) rename {app/images => images}/fullscreen.png (100%) rename {app/images => images}/fullscreen@2x.png (100%) rename {app/images => images}/fullscreenclose.png (100%) rename {app/images => images}/loading.png (100%) rename {app/images => images}/loading@2x.png (100%) rename {app/images => images}/minimize.png (100%) rename {app/images => images}/minimize@2x.png (100%) rename {app/images => images}/official.png (100%) rename {app/images => images}/official@2x.png (100%) rename {app/images => images}/paused.png (100%) rename {app/images => images}/paused@2x.png (100%) rename {app/images => images}/restarting.png (100%) rename {app/images => images}/restarting@2x.png (100%) rename {app/images => images}/roundedcontainer.png (100%) rename {app/images => images}/roundedcontainer@2x.png (100%) rename {app/images => images}/running-white.png (100%) rename {app/images => images}/running-white@2x.png (100%) rename {app/images => images}/running.png (100%) rename {app/images => images}/running@2x.png (100%) rename {app/images => images}/runningwave-white.png (100%) rename {app/images => images}/runningwave-white@2x.png (100%) rename {app/images => images}/runningwave.png (100%) rename {app/images => images}/runningwave@2x.png (100%) rename {app/images => images}/still-white.png (100%) rename {app/images => images}/still-white@2x.png (100%) rename {app/images => images}/stopped-white.png (100%) rename {app/images => images}/stopped-white@2x.png (100%) rename {app/images => images}/stopped.png (100%) rename {app/images => images}/stopped@2x.png (100%) rename {app/images => images}/wavy-white.png (100%) rename {app/images => images}/wavy-white@2x.png (100%) rename app/index.html => index.html (83%) create mode 100755 release delete mode 100644 specs/App-spec.js delete mode 100644 specs/specs.html rename {app => src}/ContainerDetails.react.js (99%) rename {app => src}/ContainerDetailsSettings.react.js (100%) rename {app => src}/ContainerList.react.js (100%) rename {app => src}/ContainerModal.react.js (100%) rename {app => src}/ContainerStore.js (98%) rename {app => src}/ContainerUtil.js (100%) rename {app => src}/Containers.react.js (100%) rename {app => src}/Header.react.js (100%) rename {app => src}/Menu.js (100%) rename {app => src}/NoContainers.react.js (100%) rename {app => src}/Preferences.react.js (100%) rename {app => src}/Radial.react.js (100%) rename {app => src}/Setup.react.js (100%) rename {app => src}/boot2docker.js (100%) rename {app => src}/docker.js (100%) rename {app => src}/main.js (83%) rename {app => src}/registry.js (100%) rename {app => src}/router.js (100%) rename {app => src}/routes.js (100%) rename {app => src}/util.js (100%) rename {app => src}/virtualbox.js (88%) rename {app/styles => styles}/bootstrap/alerts.less (100%) rename {app/styles => styles}/bootstrap/badges.less (100%) rename {app/styles => styles}/bootstrap/bootstrap.less (100%) rename {app/styles => styles}/bootstrap/breadcrumbs.less (100%) rename {app/styles => styles}/bootstrap/button-groups.less (100%) rename {app/styles => styles}/bootstrap/buttons.less (100%) rename {app/styles => styles}/bootstrap/carousel.less (100%) rename {app/styles => styles}/bootstrap/close.less (100%) rename {app/styles => styles}/bootstrap/code.less (100%) rename {app/styles => styles}/bootstrap/component-animations.less (100%) rename {app/styles => styles}/bootstrap/dropdowns.less (100%) rename {app/styles => styles}/bootstrap/forms.less (100%) rename {app/styles => styles}/bootstrap/glyphicons.less (100%) rename {app/styles => styles}/bootstrap/grid.less (100%) rename {app/styles => styles}/bootstrap/input-groups.less (100%) rename {app/styles => styles}/bootstrap/jumbotron.less (100%) rename {app/styles => styles}/bootstrap/labels.less (100%) rename {app/styles => styles}/bootstrap/list-group.less (100%) rename {app/styles => styles}/bootstrap/media.less (100%) rename {app/styles => styles}/bootstrap/mixins.less (100%) rename {app/styles => styles}/bootstrap/mixins/alerts.less (100%) rename {app/styles => styles}/bootstrap/mixins/background-variant.less (100%) rename {app/styles => styles}/bootstrap/mixins/border-radius.less (100%) rename {app/styles => styles}/bootstrap/mixins/buttons.less (100%) rename {app/styles => styles}/bootstrap/mixins/center-block.less (100%) rename {app/styles => styles}/bootstrap/mixins/clearfix.less (100%) rename {app/styles => styles}/bootstrap/mixins/forms.less (100%) rename {app/styles => styles}/bootstrap/mixins/gradients.less (100%) rename {app/styles => styles}/bootstrap/mixins/grid-framework.less (100%) rename {app/styles => styles}/bootstrap/mixins/grid.less (100%) rename {app/styles => styles}/bootstrap/mixins/hide-text.less (100%) rename {app/styles => styles}/bootstrap/mixins/image.less (100%) rename {app/styles => styles}/bootstrap/mixins/labels.less (100%) rename {app/styles => styles}/bootstrap/mixins/list-group.less (100%) rename {app/styles => styles}/bootstrap/mixins/nav-divider.less (100%) rename {app/styles => styles}/bootstrap/mixins/nav-vertical-align.less (100%) rename {app/styles => styles}/bootstrap/mixins/opacity.less (100%) rename {app/styles => styles}/bootstrap/mixins/pagination.less (100%) rename {app/styles => styles}/bootstrap/mixins/panels.less (100%) rename {app/styles => styles}/bootstrap/mixins/progress-bar.less (100%) rename {app/styles => styles}/bootstrap/mixins/reset-filter.less (100%) rename {app/styles => styles}/bootstrap/mixins/resize.less (100%) rename {app/styles => styles}/bootstrap/mixins/responsive-visibility.less (100%) rename {app/styles => styles}/bootstrap/mixins/size.less (100%) rename {app/styles => styles}/bootstrap/mixins/tab-focus.less (100%) rename {app/styles => styles}/bootstrap/mixins/table-row.less (100%) rename {app/styles => styles}/bootstrap/mixins/text-emphasis.less (100%) rename {app/styles => styles}/bootstrap/mixins/text-overflow.less (100%) rename {app/styles => styles}/bootstrap/mixins/vendor-prefixes.less (100%) rename {app/styles => styles}/bootstrap/modals.less (100%) rename {app/styles => styles}/bootstrap/navbar.less (100%) rename {app/styles => styles}/bootstrap/navs.less (100%) rename {app/styles => styles}/bootstrap/normalize.less (100%) rename {app/styles => styles}/bootstrap/pager.less (100%) rename {app/styles => styles}/bootstrap/pagination.less (100%) rename {app/styles => styles}/bootstrap/panels.less (100%) rename {app/styles => styles}/bootstrap/popovers.less (100%) rename {app/styles => styles}/bootstrap/print.less (100%) rename {app/styles => styles}/bootstrap/progress-bars.less (100%) rename {app/styles => styles}/bootstrap/responsive-embed.less (100%) rename {app/styles => styles}/bootstrap/responsive-utilities.less (100%) rename {app/styles => styles}/bootstrap/scaffolding.less (100%) rename {app/styles => styles}/bootstrap/tables.less (100%) rename {app/styles => styles}/bootstrap/theme.less (100%) rename {app/styles => styles}/bootstrap/thumbnails.less (100%) rename {app/styles => styles}/bootstrap/tooltip.less (100%) rename {app/styles => styles}/bootstrap/type.less (100%) rename {app/styles => styles}/bootstrap/utilities.less (100%) rename {app/styles => styles}/bootstrap/variables.less (100%) rename {app/styles => styles}/bootstrap/wells.less (100%) rename {app/styles => styles}/clearsans.less (100%) rename {app/styles => styles}/container-modal.less (100%) rename {app/styles => styles}/containers.less (100%) rename {app/styles => styles}/header.less (100%) rename {app/styles => styles}/icons.less (100%) rename {app/styles => styles}/main.less (99%) rename {app/styles => styles}/preferences.less (100%) rename {app/styles => styles}/radial.less (100%) rename {app/styles => styles}/retina.less (100%) rename {app/styles => styles}/setup.less (100%) rename {app/styles => styles}/theme.less (100%) rename {app/styles => styles}/variables.less (100%) create mode 100644 test.css delete mode 100755 vendor/jasmine-2.1.3/boot.js delete mode 100755 vendor/jasmine-2.1.3/console.js delete mode 100755 vendor/jasmine-2.1.3/jasmine-html.js delete mode 100755 vendor/jasmine-2.1.3/jasmine.css delete mode 100755 vendor/jasmine-2.1.3/jasmine.js delete mode 100755 vendor/jasmine-2.1.3/jasmine_favicon.png diff --git a/browser/main.js b/browser/main.js index 21bec8ecd9..5e86638a0b 100644 --- a/browser/main.js +++ b/browser/main.js @@ -10,12 +10,6 @@ var app = require('app'); var BrowserWindow = require('browser-window'); var ipc = require('ipc'); -var argv = require('minimist')(process.argv); - -if (argv.test) { - console.log('Running tests'); -} - process.env.NODE_PATH = __dirname + '/../node_modules'; process.chdir(path.join(__dirname, '..')); @@ -38,12 +32,7 @@ app.on('ready', function() { mainWindow = new BrowserWindow(windowOptions); mainWindow.hide(); - - if (argv.test) { - mainWindow.loadUrl('file://' + __dirname + '/../build/specs.html'); - } else { - mainWindow.loadUrl('file://' + __dirname + '/../build/index.html'); - } + mainWindow.loadUrl('file://' + __dirname + '/../build/index.html'); process.on('uncaughtException', app.quit); diff --git a/deps b/deps index 059abaf35c..31d4569aa9 100755 --- a/deps +++ b/deps @@ -3,8 +3,18 @@ BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export BOOT2DOCKER_CLI_VERSION=$(node -pe "JSON.parse(process.argv[1])['boot2docker-version']" "$(cat $BASE/package.json)") export BOOT2DOCKER_CLI_VERSION_FILE=boot2docker-$BOOT2DOCKER_CLI_VERSION +export ATOM_SHELL_VERSION=$(node -pe "JSON.parse(process.argv[1])['atom-shell-version']" "$(cat $BASE/package.json)") +export ATOM_SHELL_VERSION_FILE=atom-shell-v$ATOM_SHELL_VERSION-darwin-x64.zip mkdir -p $BASE/cache +pushd $BASE/cache > /dev/null +if [ ! -f $ATOM_SHELL_VERSION_FILE ]; then + echo "-----> Downloading atom-shell..." + rm -rf atom-shell-* + curl -L -o $ATOM_SHELL_VERSION_FILE https://github.com/atom/atom-shell/releases/download/v$ATOM_SHELL_VERSION/atom-shell-v$ATOM_SHELL_VERSION-darwin-x64.zip + unzip $ATOM_SHELL_VERSION_FILE +fi +popd > /dev/null pushd $BASE/resources > /dev/null diff --git a/app/fonts/clearsans-bold-webfont.ttf b/fonts/clearsans-bold-webfont.ttf similarity index 100% rename from app/fonts/clearsans-bold-webfont.ttf rename to fonts/clearsans-bold-webfont.ttf diff --git a/app/fonts/clearsans-bolditalic-webfont.ttf b/fonts/clearsans-bolditalic-webfont.ttf similarity index 100% rename from app/fonts/clearsans-bolditalic-webfont.ttf rename to fonts/clearsans-bolditalic-webfont.ttf diff --git a/app/fonts/clearsans-italic-webfont.ttf b/fonts/clearsans-italic-webfont.ttf similarity index 100% rename from app/fonts/clearsans-italic-webfont.ttf rename to fonts/clearsans-italic-webfont.ttf diff --git a/app/fonts/clearsans-light-webfont.ttf b/fonts/clearsans-light-webfont.ttf similarity index 100% rename from app/fonts/clearsans-light-webfont.ttf rename to fonts/clearsans-light-webfont.ttf diff --git a/app/fonts/clearsans-medium-webfont.ttf b/fonts/clearsans-medium-webfont.ttf similarity index 100% rename from app/fonts/clearsans-medium-webfont.ttf rename to fonts/clearsans-medium-webfont.ttf diff --git a/app/fonts/clearsans-mediumitalic-webfont.ttf b/fonts/clearsans-mediumitalic-webfont.ttf similarity index 100% rename from app/fonts/clearsans-mediumitalic-webfont.ttf rename to fonts/clearsans-mediumitalic-webfont.ttf diff --git a/app/fonts/clearsans-regular-webfont.ttf b/fonts/clearsans-regular-webfont.ttf similarity index 100% rename from app/fonts/clearsans-regular-webfont.ttf rename to fonts/clearsans-regular-webfont.ttf diff --git a/app/fonts/clearsans-thin-webfont.ttf b/fonts/clearsans-thin-webfont.ttf similarity index 100% rename from app/fonts/clearsans-thin-webfont.ttf rename to fonts/clearsans-thin-webfont.ttf diff --git a/app/fonts/streamline-24px.eot b/fonts/streamline-24px.eot similarity index 100% rename from app/fonts/streamline-24px.eot rename to fonts/streamline-24px.eot diff --git a/app/fonts/streamline-24px.svg b/fonts/streamline-24px.svg similarity index 100% rename from app/fonts/streamline-24px.svg rename to fonts/streamline-24px.svg diff --git a/app/fonts/streamline-24px.ttf b/fonts/streamline-24px.ttf similarity index 100% rename from app/fonts/streamline-24px.ttf rename to fonts/streamline-24px.ttf diff --git a/app/fonts/streamline-24px.woff b/fonts/streamline-24px.woff similarity index 100% rename from app/fonts/streamline-24px.woff rename to fonts/streamline-24px.woff diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 7468cada7b..0000000000 --- a/gulpfile.js +++ /dev/null @@ -1,204 +0,0 @@ -var gulp = require('gulp'); -var source = require('vinyl-source-stream'); // Used to stream bundle for further handling -var browserify = require('browserify'); -var watchify = require('watchify'); -var reactify = require('reactify'); -var gulpif = require('gulp-if'); -var uglify = require('gulp-uglifyjs'); -var notify = require('gulp-notify'); -var concat = require('gulp-concat'); -var less = require('gulp-less'); -var livereload = require('gulp-livereload'); -var cssmin = require('gulp-cssmin'); -var imagemin = require('gulp-imagemin'); -var gutil = require('gulp-util'); -var shell = require('gulp-shell'); -var plumber = require('gulp-plumber'); -var sourcemaps = require('gulp-sourcemaps'); -var glob = require('glob'); -var runSequence = require('run-sequence'); -var ecstatic = require('ecstatic'); -var downloadatomshell = require('gulp-download-atom-shell'); -var packagejson = require('./package.json'); -var http = require('http'); -var react = require('gulp-react'); -var fs = require('fs'); - -var dependencies = Object.keys(packagejson.dependencies); -var devDependencies = Object.keys(packagejson.devDependencies); -var options = { - dev: process.argv.indexOf('release') === -1 && process.argv.indexOf('test') === -1, - test: process.argv.indexOf('test') !== -1, - filename: 'Kitematic.app', - name: 'Kitematic' -}; - -gulp.task('js', function () { - gulp.src('./app/**/*.js') - .pipe(plumber(function(error) { - gutil.log(gutil.colors.red('Error (' + error.plugin + '): ' + error.message)); - // emit the end event, to properly end the task - this.emit('end'); - })) - .pipe(react()) - .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) - .pipe(gulpif(options.dev, livereload())); -}); - -gulp.task('specs', function () { - var bundler = browserify({ - entries: glob.sync('./specs/**/*-spec.js'), - debug: true, // Gives us sourcemapping - transform: [reactify], - cache: {}, packageCache: {}, fullPaths: true // Requirement of watchify - }); - - dependencies.forEach(function (dep) { - bundler.external(dep); - }); - - devDependencies.forEach(function (dep) { - bundler.external(dep); - }); - - bundler.external('./app'); - - bundler.bundle() - .on('error', gutil.log) - .pipe(source('specs.js')) - .pipe(gulp.dest('./build')); - - gulp.src('./specs/specs.html') - .pipe(gulp.dest('./build')); -}); - -gulp.task('images', function() { - return gulp.src('./app/images/*') - .pipe(imagemin({ - progressive: true, - interlaced: true, - svgoPlugins: [{removeViewBox: false}] - })) - .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) - .pipe(gulpif(options.dev, livereload())); -}); - -gulp.task('styles', function () { - return gulp.src('app/styles/main.less') - .pipe(plumber(function(error) { - gutil.log(gutil.colors.red('Error (' + error.plugin + '): ' + error.message)); - // emit the end event, to properly end the task - this.emit('end'); - })) - .pipe(gulpif(options.dev, sourcemaps.init())) - .pipe(less()) - .pipe(gulpif(options.dev, sourcemaps.write())) - .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) - .pipe(gulpif(!options.dev, cssmin())) - .pipe(concat('main.css')) - .pipe(gulpif(options.dev && !options.test, livereload())); -}); - -gulp.task('download', function (cb) { - downloadatomshell({ - version: packagejson['atom-shell-version'], - outputDir: 'cache' - }, cb); -}); - -gulp.task('copy', function () { - gulp.src('./app/index.html') - .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) - .pipe(gulpif(options.dev, livereload())); - - gulp.src('./app/fonts/**') - .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) - .pipe(gulpif(options.dev, livereload())); -}); - -gulp.task('dist', function (cb) { - var stream = gulp.src('').pipe(shell([ - 'rm -Rf ./dist', - 'mkdir -p ./dist/osx', - 'cp -R ./cache/Atom.app ./dist/osx/<%= filename %>', - 'mv ./dist/osx/<%= filename %>/Contents/MacOS/Atom ./dist/osx/<%= filename %>/Contents/MacOS/<%= name %>', - 'mkdir -p ./dist/osx/<%= filename %>/Contents/Resources/app', - 'cp -R browser dist/osx/<%= filename %>/Contents/Resources/app', - 'cp package.json dist/osx/<%= filename %>/Contents/Resources/app/', - 'mkdir -p dist/osx/<%= filename %>/Contents/Resources/app/resources', - 'cp -v resources/* dist/osx/<%= filename %>/Contents/Resources/app/resources/ || :', - 'cp kitematic.icns dist/osx/<%= filename %>/Contents/Resources/atom.icns', - '/usr/libexec/PlistBuddy -c "Set :CFBundleVersion <%= version %>" dist/osx/<%= filename %>/Contents/Info.plist', - '/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName <%= name %>" dist/osx/<%= filename %>/Contents/Info.plist', - '/usr/libexec/PlistBuddy -c "Set :CFBundleName <%= name %>" dist/osx/<%= filename %>/Contents/Info.plist', - '/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier <%= bundle %>" dist/osx/<%= filename %>/Contents/Info.plist', - '/usr/libexec/PlistBuddy -c "Set :CFBundleExecutable <%= name %>" dist/osx/<%= filename %>/Contents/Info.plist' - ], { - templateData: { - filename: options.filename, - name: options.name, - version: packagejson.version, - bundle: 'com.kitematic.app' - } - })); - - dependencies.forEach(function (d) { - stream = stream.pipe(shell([ - 'cp -R node_modules/' + d + ' dist/osx/<%= filename %>/Contents/Resources/app/node_modules/' - ], { - templateData: { - filename: options.filename - } - })); - }); - - return stream; -}); - -gulp.task('sign', function () { - try { - var signing_identity = fs.readFileSync('./identity', 'utf8').trim(); - return gulp.src('').pipe(shell([ - 'codesign --deep --force --verbose --sign "' + signing_identity + '" ' + options.filename - ], { - cwd: './dist/osx/' - })); - } catch (error) { - gutil.log(gutil.colors.red('Error: ' + error.message)); - } -}); - -gulp.task('zip', function () { - return gulp.src('').pipe(shell([ - 'ditto -c -k --sequesterRsrc --keepParent ' + options.filename + ' ' + options.name + '-' + packagejson.version + '.zip' - ], { - cwd: './dist/osx/' - })); -}); - -gulp.task('release', function () { - runSequence('download', 'dist', ['copy', 'images', 'js', 'styles'], 'sign', 'zip'); -}); - -gulp.task('test', ['download', 'copy', 'js', 'images', 'styles', 'specs'], function () { - var env = process.env; - env.NODE_ENV = 'development'; - gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom . --test'], { - env: env - })); -}); - -gulp.task('default', ['download', 'copy', 'js', 'images', 'styles'], function () { - gulp.watch('./app/**/*.js', ['js']); - gulp.watch('./app/**/*.html', ['copy']); - gulp.watch('./app/styles/**/*.less', ['styles']); - gulp.watch('./app/images/**', ['images']); - - livereload.listen(); - - var env = process.env; - env.NODE_ENV = 'development'; - gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom .'], { - env: env - })); -}); diff --git a/app/images/close.png b/images/close.png similarity index 100% rename from app/images/close.png rename to images/close.png diff --git a/app/images/close@2x.png b/images/close@2x.png similarity index 100% rename from app/images/close@2x.png rename to images/close@2x.png diff --git a/app/images/downloading-arrow-white.png b/images/downloading-arrow-white.png similarity index 100% rename from app/images/downloading-arrow-white.png rename to images/downloading-arrow-white.png diff --git a/app/images/downloading-arrow-white@2x.png b/images/downloading-arrow-white@2x.png similarity index 100% rename from app/images/downloading-arrow-white@2x.png rename to images/downloading-arrow-white@2x.png diff --git a/app/images/downloading-arrow.png b/images/downloading-arrow.png similarity index 100% rename from app/images/downloading-arrow.png rename to images/downloading-arrow.png diff --git a/app/images/downloading-arrow@2x.png b/images/downloading-arrow@2x.png similarity index 100% rename from app/images/downloading-arrow@2x.png rename to images/downloading-arrow@2x.png diff --git a/app/images/downloading-white.png b/images/downloading-white.png similarity index 100% rename from app/images/downloading-white.png rename to images/downloading-white.png diff --git a/app/images/downloading-white@2x.png b/images/downloading-white@2x.png similarity index 100% rename from app/images/downloading-white@2x.png rename to images/downloading-white@2x.png diff --git a/app/images/downloading.png b/images/downloading.png similarity index 100% rename from app/images/downloading.png rename to images/downloading.png diff --git a/app/images/downloading@2x.png b/images/downloading@2x.png similarity index 100% rename from app/images/downloading@2x.png rename to images/downloading@2x.png diff --git a/app/images/error.png b/images/error.png similarity index 100% rename from app/images/error.png rename to images/error.png diff --git a/app/images/error@2x.png b/images/error@2x.png similarity index 100% rename from app/images/error@2x.png rename to images/error@2x.png diff --git a/app/images/fullscreen.png b/images/fullscreen.png similarity index 100% rename from app/images/fullscreen.png rename to images/fullscreen.png diff --git a/app/images/fullscreen@2x.png b/images/fullscreen@2x.png similarity index 100% rename from app/images/fullscreen@2x.png rename to images/fullscreen@2x.png diff --git a/app/images/fullscreenclose.png b/images/fullscreenclose.png similarity index 100% rename from app/images/fullscreenclose.png rename to images/fullscreenclose.png diff --git a/app/images/loading.png b/images/loading.png similarity index 100% rename from app/images/loading.png rename to images/loading.png diff --git a/app/images/loading@2x.png b/images/loading@2x.png similarity index 100% rename from app/images/loading@2x.png rename to images/loading@2x.png diff --git a/app/images/minimize.png b/images/minimize.png similarity index 100% rename from app/images/minimize.png rename to images/minimize.png diff --git a/app/images/minimize@2x.png b/images/minimize@2x.png similarity index 100% rename from app/images/minimize@2x.png rename to images/minimize@2x.png diff --git a/app/images/official.png b/images/official.png similarity index 100% rename from app/images/official.png rename to images/official.png diff --git a/app/images/official@2x.png b/images/official@2x.png similarity index 100% rename from app/images/official@2x.png rename to images/official@2x.png diff --git a/app/images/paused.png b/images/paused.png similarity index 100% rename from app/images/paused.png rename to images/paused.png diff --git a/app/images/paused@2x.png b/images/paused@2x.png similarity index 100% rename from app/images/paused@2x.png rename to images/paused@2x.png diff --git a/app/images/restarting.png b/images/restarting.png similarity index 100% rename from app/images/restarting.png rename to images/restarting.png diff --git a/app/images/restarting@2x.png b/images/restarting@2x.png similarity index 100% rename from app/images/restarting@2x.png rename to images/restarting@2x.png diff --git a/app/images/roundedcontainer.png b/images/roundedcontainer.png similarity index 100% rename from app/images/roundedcontainer.png rename to images/roundedcontainer.png diff --git a/app/images/roundedcontainer@2x.png b/images/roundedcontainer@2x.png similarity index 100% rename from app/images/roundedcontainer@2x.png rename to images/roundedcontainer@2x.png diff --git a/app/images/running-white.png b/images/running-white.png similarity index 100% rename from app/images/running-white.png rename to images/running-white.png diff --git a/app/images/running-white@2x.png b/images/running-white@2x.png similarity index 100% rename from app/images/running-white@2x.png rename to images/running-white@2x.png diff --git a/app/images/running.png b/images/running.png similarity index 100% rename from app/images/running.png rename to images/running.png diff --git a/app/images/running@2x.png b/images/running@2x.png similarity index 100% rename from app/images/running@2x.png rename to images/running@2x.png diff --git a/app/images/runningwave-white.png b/images/runningwave-white.png similarity index 100% rename from app/images/runningwave-white.png rename to images/runningwave-white.png diff --git a/app/images/runningwave-white@2x.png b/images/runningwave-white@2x.png similarity index 100% rename from app/images/runningwave-white@2x.png rename to images/runningwave-white@2x.png diff --git a/app/images/runningwave.png b/images/runningwave.png similarity index 100% rename from app/images/runningwave.png rename to images/runningwave.png diff --git a/app/images/runningwave@2x.png b/images/runningwave@2x.png similarity index 100% rename from app/images/runningwave@2x.png rename to images/runningwave@2x.png diff --git a/app/images/still-white.png b/images/still-white.png similarity index 100% rename from app/images/still-white.png rename to images/still-white.png diff --git a/app/images/still-white@2x.png b/images/still-white@2x.png similarity index 100% rename from app/images/still-white@2x.png rename to images/still-white@2x.png diff --git a/app/images/stopped-white.png b/images/stopped-white.png similarity index 100% rename from app/images/stopped-white.png rename to images/stopped-white.png diff --git a/app/images/stopped-white@2x.png b/images/stopped-white@2x.png similarity index 100% rename from app/images/stopped-white@2x.png rename to images/stopped-white@2x.png diff --git a/app/images/stopped.png b/images/stopped.png similarity index 100% rename from app/images/stopped.png rename to images/stopped.png diff --git a/app/images/stopped@2x.png b/images/stopped@2x.png similarity index 100% rename from app/images/stopped@2x.png rename to images/stopped@2x.png diff --git a/app/images/wavy-white.png b/images/wavy-white.png similarity index 100% rename from app/images/wavy-white.png rename to images/wavy-white.png diff --git a/app/images/wavy-white@2x.png b/images/wavy-white@2x.png similarity index 100% rename from app/images/wavy-white@2x.png rename to images/wavy-white@2x.png diff --git a/app/index.html b/index.html similarity index 83% rename from app/index.html rename to index.html index 699c7186f0..a97ba8b788 100644 --- a/app/index.html +++ b/index.html @@ -7,5 +7,6 @@ + diff --git a/package.json b/package.json index e11677079d..6451447e46 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,10 @@ }, "bugs": "https://github.com/kitematic/kitematic/issues", "scripts": { - "start": "gulp", + "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & ./cache/Atom.app/Contents/MacOS/Atom .", "preinstall": "./deps", - "test": "gulp test", - "release": "gulp release" + "test": "jest", + "release": "./release" }, "licenses": [ { @@ -22,8 +22,14 @@ "url": "https://raw.githubusercontent.com/kitematic/kitematic/master/LICENSE" } ], + "jest": { + "scriptPreprocessor": "spec/support/preprocessor.js", + "unmockedModulePathPatterns": [ + "node_modules/react" + ] + }, "boot2docker-version": "1.3.2", - "atom-shell-version": "0.20.6", + "atom-shell-version": "0.21.0", "dependencies": { "ansi-to-html": "0.2.0", "async": "^0.9.0", @@ -33,7 +39,6 @@ "gulp-react": "^2.0.0", "jquery": "^2.1.3", "minimist": "^1.1.0", - "moment": "2.8.1", "node-uuid": "1.4.1", "object-assign": "^2.0.0", "open": "0.0.5", @@ -41,37 +46,18 @@ "react-bootstrap": "^0.13.2", "react-retina-image": "^1.1.2", "react-router": "^0.11.6", - "request": "2.42.0", + "request": "^2.51.0", "request-progress": "0.3.1", "retina.js": "^1.1.0", "underscore": "^1.7.0" }, "devDependencies": { - "browserify": "^6.2.0", "ecstatic": "^0.5.8", "glob": "^4.0.6", - "gulp": "^3.8.10", - "gulp-atom": "0.0.5", - "gulp-concat": "^2.3.4", - "gulp-cssmin": "^0.1.6", - "gulp-download-atom-shell": "0.0.4", - "gulp-if": "^1.2.4", - "gulp-imagemin": "^2.0.0", - "gulp-less": "^2.0.1", - "gulp-livereload": "^2.1.1", - "gulp-notify": "^1.4.2", - "gulp-plumber": "^0.6.6", - "gulp-shell": "^0.2.11", - "gulp-sourcemaps": "^1.2.8", - "gulp-streamify": "0.0.5", - "gulp-uglify": "^0.3.1", - "gulp-uglifyjs": "^0.5.0", - "gulp-util": "^3.0.0", + "jasmine-reporters": "^1.0.1", "jasmine-tagged": "^1.1.2", - "livereload-js": "^2.2.1", - "reactify": "^0.15.2", - "run-sequence": "^1.0.2", - "vinyl-source-stream": "^0.1.1", - "watchify": "^2.1.1" + "react-tools": "^0.12.2", + "wess": "^0.2.2", + "wiper": "^1.0.2" } } diff --git a/release b/release new file mode 100755 index 0000000000..7aa58dac37 --- /dev/null +++ b/release @@ -0,0 +1,35 @@ +#!/bin/bash +BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +export NAME=$(node -pe "JSON.parse(process.argv[1])['name']" "$(cat $BASE/package.json)") +export VERSION=$(node -pe "JSON.parse(process.argv[1])['version']" "$(cat $BASE/package.json)") +export FILENAME=$NAME.app +export BUNDLE=com.kitematic.app + +rm -Rf ./dist +mkdir -p ./dist/osx +cp -R ./cache/Atom.app ./dist/osx/$FILENAME +mv ./dist/osx/$FILENAME/Contents/MacOS/Atom ./dist/osx/$FILENAME/Contents/MacOS/$NAME +mkdir -p ./dist/osx/$FILENAME/Contents/Resources/app +cp -R browser dist/osx/$FILENAME/Contents/Resources/app +cp package.json dist/osx/$FILENAME/Contents/Resources/app/ +mkdir -p dist/osx/$FILENAME/Contents/Resources/app/resources +mkdir -p dist/osx/$FILENAME/Contents/Resources/app/node_modules +cp -v resources/* dist/osx/$FILENAME/Contents/Resources/app/resources/ || : +cp kitematic.icns dist/osx/$FILENAME/Contents/Resources/atom.icns +/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $VERSION" dist/osx/$FILENAME/Contents/Info.plist +/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName $NAME" dist/osx/$FILENAME/Contents/Info.plist +/usr/libexec/PlistBuddy -c "Set :CFBundleName $NAME" dist/osx/$FILENAME/Contents/Info.plist +/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $BUNDLE" dist/osx/$FILENAME/Contents/Info.plist +/usr/libexec/PlistBuddy -c "Set :CFBundleExecutable $NAME" dist/osx/$FILENAME/Contents/Info.plist + +rsync ./index.html ./dist/osx/$FILENAME/Contents/Resources/app/build/ +rsync ./fonts/* ./dist/osx/$FILENAME/Contents/Resources/app/build/ +rsync ./images/* ./dist/osx/$FILENAME/Contents/Resources/app/build/ +jsx src/ ./dist/osx/$FILENAME/Contents/Resources/app/build/ +wess -m -i ./styles/main.less -o ./dist/osx/$FILENAME/Contents/Resources/app/build/main.css + +if [ -f $BASE/identity ]; then + codesign --deep --force --verbose --sign "$(cat $BASE/identity)" ./dist/osx/$FILENAME +fi + +ditto -c -k --sequesterRsrc --keepParent ./dist/osx/$FILENAME ./dist/osx/$NAME-$VERSION.zip diff --git a/specs/App-spec.js b/specs/App-spec.js deleted file mode 100644 index cc2a1f9d26..0000000000 --- a/specs/App-spec.js +++ /dev/null @@ -1,11 +0,0 @@ -var Containers = require('./../app/Containers.react.js'); -var TestUtils = require('react/addons').TestUtils; -var jasmine = require('jasmine-node'); - -describe('Containers', function() { - it('should be wrapped with a div', function() { - // var app = TestUtils.renderIntoDocument(App()); - expect(true).toEqual(true); - }); - -}); diff --git a/specs/specs.html b/specs/specs.html deleted file mode 100644 index ffec40e8ea..0000000000 --- a/specs/specs.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/app/ContainerDetails.react.js b/src/ContainerDetails.react.js similarity index 99% rename from app/ContainerDetails.react.js rename to src/ContainerDetails.react.js index c1d48058ab..7f0fbc7941 100644 --- a/app/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -12,6 +12,7 @@ var ContainerUtil = require('./ContainerUtil'); var docker = require('./docker'); var boot2docker = require('./boot2docker'); var ProgressBar = require('react-bootstrap/ProgressBar'); +var Popover = require('react-bootstrap/Popover'); var ContainerDetails = React.createClass({ mixins: [Router.State, Router.Navigation], @@ -34,8 +35,6 @@ var ContainerDetails = React.createClass({ componentWillReceiveProps: function () { this.init(); }, - componentWillMount: function () { - }, componentDidMount: function () { this.init(); ContainerStore.on(ContainerStore.SERVER_PROGRESS_EVENT, this.updateProgress); diff --git a/app/ContainerDetailsSettings.react.js b/src/ContainerDetailsSettings.react.js similarity index 100% rename from app/ContainerDetailsSettings.react.js rename to src/ContainerDetailsSettings.react.js diff --git a/app/ContainerList.react.js b/src/ContainerList.react.js similarity index 100% rename from app/ContainerList.react.js rename to src/ContainerList.react.js diff --git a/app/ContainerModal.react.js b/src/ContainerModal.react.js similarity index 100% rename from app/ContainerModal.react.js rename to src/ContainerModal.react.js diff --git a/app/ContainerStore.js b/src/ContainerStore.js similarity index 98% rename from app/ContainerStore.js rename to src/ContainerStore.js index ff975c4241..3e79c24728 100644 --- a/app/ContainerStore.js +++ b/src/ContainerStore.js @@ -226,14 +226,14 @@ var ContainerStore = assign(EventEmitter.prototype, { // If the event is delete, remove the container if (data.status === 'destroy') { var container = _.findWhere(_.values(_containers), {Id: data.id}); - if (!container) { - return; + if (container) { + delete _containers[container.Name]; + if (!_muted[container.Name]) { + this.emit(this.SERVER_CONTAINER_EVENT, container.Name, data.status); + } + } else { + this.emit(this.SERVER_CONTAINER_EVENT, data.status); } - delete _containers[container.Name]; - if (_muted[container.Name]) { - return; - } - this.emit(this.SERVER_CONTAINER_EVENT, container.Name, data.status); } else { this.fetchContainer(data.id, function (err) { if (err) { diff --git a/app/ContainerUtil.js b/src/ContainerUtil.js similarity index 100% rename from app/ContainerUtil.js rename to src/ContainerUtil.js diff --git a/app/Containers.react.js b/src/Containers.react.js similarity index 100% rename from app/Containers.react.js rename to src/Containers.react.js diff --git a/app/Header.react.js b/src/Header.react.js similarity index 100% rename from app/Header.react.js rename to src/Header.react.js diff --git a/app/Menu.js b/src/Menu.js similarity index 100% rename from app/Menu.js rename to src/Menu.js diff --git a/app/NoContainers.react.js b/src/NoContainers.react.js similarity index 100% rename from app/NoContainers.react.js rename to src/NoContainers.react.js diff --git a/app/Preferences.react.js b/src/Preferences.react.js similarity index 100% rename from app/Preferences.react.js rename to src/Preferences.react.js diff --git a/app/Radial.react.js b/src/Radial.react.js similarity index 100% rename from app/Radial.react.js rename to src/Radial.react.js diff --git a/app/Setup.react.js b/src/Setup.react.js similarity index 100% rename from app/Setup.react.js rename to src/Setup.react.js diff --git a/app/boot2docker.js b/src/boot2docker.js similarity index 100% rename from app/boot2docker.js rename to src/boot2docker.js diff --git a/app/docker.js b/src/docker.js similarity index 100% rename from app/docker.js rename to src/docker.js diff --git a/app/main.js b/src/main.js similarity index 83% rename from app/main.js rename to src/main.js index 5970a0a0b1..4c485a892b 100644 --- a/app/main.js +++ b/src/main.js @@ -28,14 +28,6 @@ Bugsnag.releaseStage = process.env.NODE_ENV === 'development' ? 'development' : Bugsnag.notifyReleaseStages = []; Bugsnag.appVersion = app.getVersion(); -if (process.env.NODE_ENV === 'development') { - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = 'http://localhost:35729/livereload.js'; - var head = document.getElementsByTagName('head')[0]; - head.appendChild(script); -} - if (!window.location.hash.length || window.location.hash === '#/') { router.run(function (Handler) { React.render(, document.body); diff --git a/app/registry.js b/src/registry.js similarity index 100% rename from app/registry.js rename to src/registry.js diff --git a/app/router.js b/src/router.js similarity index 100% rename from app/router.js rename to src/router.js diff --git a/app/routes.js b/src/routes.js similarity index 100% rename from app/routes.js rename to src/routes.js diff --git a/app/util.js b/src/util.js similarity index 100% rename from app/util.js rename to src/util.js diff --git a/app/virtualbox.js b/src/virtualbox.js similarity index 88% rename from app/virtualbox.js rename to src/virtualbox.js index a7192793de..a1071e8e8f 100644 --- a/app/virtualbox.js +++ b/src/virtualbox.js @@ -49,7 +49,7 @@ var VirtualBox = { callback('VirtualBox not installed.'); return; } - exec('list runningvms | sed -E \'s/.*\\{(.*)\\}/\\1/\' | xargs -L1 -I {} VBoxManage controlvm {} savestate', function (stderr, stdout, code) { + exec('/usr/bin/VBoxManage list runningvms | sed -E \'s/.*\\{(.*)\\}/\\1/\' | xargs -L1 -I {} /usr/bin/VBoxManage controlvm {} savestate', function (stderr, stdout, code) { if (code) { callback(stderr); } else { @@ -84,7 +84,7 @@ var VirtualBox = { VirtualBox.vmState(name, function (err, state) { // No VM found if (err) { callback(null, false); return; } - VirtualBox.exec('controlvm ' + name + ' acpipowerbutton', function (stderr, stdout, code) { + exec('/usr/bin/VBoxManage controlvm ' + name + ' acpipowerbutton', function (stderr, stdout, code) { if (code) { callback(stderr, false); return; } var state = null; @@ -97,7 +97,7 @@ var VirtualBox = { setTimeout(callback, 250); }); }, function (err) { - VirtualBox.exec('unregistervm ' + name + ' --delete', function (stderr, stdout, code) { + exec('/usr/bin/VBoxManage unregistervm ' + name + ' --delete', function (stderr, stdout, code) { if (code) { callback(err); return; } callback(); }); diff --git a/app/styles/bootstrap/alerts.less b/styles/bootstrap/alerts.less similarity index 100% rename from app/styles/bootstrap/alerts.less rename to styles/bootstrap/alerts.less diff --git a/app/styles/bootstrap/badges.less b/styles/bootstrap/badges.less similarity index 100% rename from app/styles/bootstrap/badges.less rename to styles/bootstrap/badges.less diff --git a/app/styles/bootstrap/bootstrap.less b/styles/bootstrap/bootstrap.less similarity index 100% rename from app/styles/bootstrap/bootstrap.less rename to styles/bootstrap/bootstrap.less diff --git a/app/styles/bootstrap/breadcrumbs.less b/styles/bootstrap/breadcrumbs.less similarity index 100% rename from app/styles/bootstrap/breadcrumbs.less rename to styles/bootstrap/breadcrumbs.less diff --git a/app/styles/bootstrap/button-groups.less b/styles/bootstrap/button-groups.less similarity index 100% rename from app/styles/bootstrap/button-groups.less rename to styles/bootstrap/button-groups.less diff --git a/app/styles/bootstrap/buttons.less b/styles/bootstrap/buttons.less similarity index 100% rename from app/styles/bootstrap/buttons.less rename to styles/bootstrap/buttons.less diff --git a/app/styles/bootstrap/carousel.less b/styles/bootstrap/carousel.less similarity index 100% rename from app/styles/bootstrap/carousel.less rename to styles/bootstrap/carousel.less diff --git a/app/styles/bootstrap/close.less b/styles/bootstrap/close.less similarity index 100% rename from app/styles/bootstrap/close.less rename to styles/bootstrap/close.less diff --git a/app/styles/bootstrap/code.less b/styles/bootstrap/code.less similarity index 100% rename from app/styles/bootstrap/code.less rename to styles/bootstrap/code.less diff --git a/app/styles/bootstrap/component-animations.less b/styles/bootstrap/component-animations.less similarity index 100% rename from app/styles/bootstrap/component-animations.less rename to styles/bootstrap/component-animations.less diff --git a/app/styles/bootstrap/dropdowns.less b/styles/bootstrap/dropdowns.less similarity index 100% rename from app/styles/bootstrap/dropdowns.less rename to styles/bootstrap/dropdowns.less diff --git a/app/styles/bootstrap/forms.less b/styles/bootstrap/forms.less similarity index 100% rename from app/styles/bootstrap/forms.less rename to styles/bootstrap/forms.less diff --git a/app/styles/bootstrap/glyphicons.less b/styles/bootstrap/glyphicons.less similarity index 100% rename from app/styles/bootstrap/glyphicons.less rename to styles/bootstrap/glyphicons.less diff --git a/app/styles/bootstrap/grid.less b/styles/bootstrap/grid.less similarity index 100% rename from app/styles/bootstrap/grid.less rename to styles/bootstrap/grid.less diff --git a/app/styles/bootstrap/input-groups.less b/styles/bootstrap/input-groups.less similarity index 100% rename from app/styles/bootstrap/input-groups.less rename to styles/bootstrap/input-groups.less diff --git a/app/styles/bootstrap/jumbotron.less b/styles/bootstrap/jumbotron.less similarity index 100% rename from app/styles/bootstrap/jumbotron.less rename to styles/bootstrap/jumbotron.less diff --git a/app/styles/bootstrap/labels.less b/styles/bootstrap/labels.less similarity index 100% rename from app/styles/bootstrap/labels.less rename to styles/bootstrap/labels.less diff --git a/app/styles/bootstrap/list-group.less b/styles/bootstrap/list-group.less similarity index 100% rename from app/styles/bootstrap/list-group.less rename to styles/bootstrap/list-group.less diff --git a/app/styles/bootstrap/media.less b/styles/bootstrap/media.less similarity index 100% rename from app/styles/bootstrap/media.less rename to styles/bootstrap/media.less diff --git a/app/styles/bootstrap/mixins.less b/styles/bootstrap/mixins.less similarity index 100% rename from app/styles/bootstrap/mixins.less rename to styles/bootstrap/mixins.less diff --git a/app/styles/bootstrap/mixins/alerts.less b/styles/bootstrap/mixins/alerts.less similarity index 100% rename from app/styles/bootstrap/mixins/alerts.less rename to styles/bootstrap/mixins/alerts.less diff --git a/app/styles/bootstrap/mixins/background-variant.less b/styles/bootstrap/mixins/background-variant.less similarity index 100% rename from app/styles/bootstrap/mixins/background-variant.less rename to styles/bootstrap/mixins/background-variant.less diff --git a/app/styles/bootstrap/mixins/border-radius.less b/styles/bootstrap/mixins/border-radius.less similarity index 100% rename from app/styles/bootstrap/mixins/border-radius.less rename to styles/bootstrap/mixins/border-radius.less diff --git a/app/styles/bootstrap/mixins/buttons.less b/styles/bootstrap/mixins/buttons.less similarity index 100% rename from app/styles/bootstrap/mixins/buttons.less rename to styles/bootstrap/mixins/buttons.less diff --git a/app/styles/bootstrap/mixins/center-block.less b/styles/bootstrap/mixins/center-block.less similarity index 100% rename from app/styles/bootstrap/mixins/center-block.less rename to styles/bootstrap/mixins/center-block.less diff --git a/app/styles/bootstrap/mixins/clearfix.less b/styles/bootstrap/mixins/clearfix.less similarity index 100% rename from app/styles/bootstrap/mixins/clearfix.less rename to styles/bootstrap/mixins/clearfix.less diff --git a/app/styles/bootstrap/mixins/forms.less b/styles/bootstrap/mixins/forms.less similarity index 100% rename from app/styles/bootstrap/mixins/forms.less rename to styles/bootstrap/mixins/forms.less diff --git a/app/styles/bootstrap/mixins/gradients.less b/styles/bootstrap/mixins/gradients.less similarity index 100% rename from app/styles/bootstrap/mixins/gradients.less rename to styles/bootstrap/mixins/gradients.less diff --git a/app/styles/bootstrap/mixins/grid-framework.less b/styles/bootstrap/mixins/grid-framework.less similarity index 100% rename from app/styles/bootstrap/mixins/grid-framework.less rename to styles/bootstrap/mixins/grid-framework.less diff --git a/app/styles/bootstrap/mixins/grid.less b/styles/bootstrap/mixins/grid.less similarity index 100% rename from app/styles/bootstrap/mixins/grid.less rename to styles/bootstrap/mixins/grid.less diff --git a/app/styles/bootstrap/mixins/hide-text.less b/styles/bootstrap/mixins/hide-text.less similarity index 100% rename from app/styles/bootstrap/mixins/hide-text.less rename to styles/bootstrap/mixins/hide-text.less diff --git a/app/styles/bootstrap/mixins/image.less b/styles/bootstrap/mixins/image.less similarity index 100% rename from app/styles/bootstrap/mixins/image.less rename to styles/bootstrap/mixins/image.less diff --git a/app/styles/bootstrap/mixins/labels.less b/styles/bootstrap/mixins/labels.less similarity index 100% rename from app/styles/bootstrap/mixins/labels.less rename to styles/bootstrap/mixins/labels.less diff --git a/app/styles/bootstrap/mixins/list-group.less b/styles/bootstrap/mixins/list-group.less similarity index 100% rename from app/styles/bootstrap/mixins/list-group.less rename to styles/bootstrap/mixins/list-group.less diff --git a/app/styles/bootstrap/mixins/nav-divider.less b/styles/bootstrap/mixins/nav-divider.less similarity index 100% rename from app/styles/bootstrap/mixins/nav-divider.less rename to styles/bootstrap/mixins/nav-divider.less diff --git a/app/styles/bootstrap/mixins/nav-vertical-align.less b/styles/bootstrap/mixins/nav-vertical-align.less similarity index 100% rename from app/styles/bootstrap/mixins/nav-vertical-align.less rename to styles/bootstrap/mixins/nav-vertical-align.less diff --git a/app/styles/bootstrap/mixins/opacity.less b/styles/bootstrap/mixins/opacity.less similarity index 100% rename from app/styles/bootstrap/mixins/opacity.less rename to styles/bootstrap/mixins/opacity.less diff --git a/app/styles/bootstrap/mixins/pagination.less b/styles/bootstrap/mixins/pagination.less similarity index 100% rename from app/styles/bootstrap/mixins/pagination.less rename to styles/bootstrap/mixins/pagination.less diff --git a/app/styles/bootstrap/mixins/panels.less b/styles/bootstrap/mixins/panels.less similarity index 100% rename from app/styles/bootstrap/mixins/panels.less rename to styles/bootstrap/mixins/panels.less diff --git a/app/styles/bootstrap/mixins/progress-bar.less b/styles/bootstrap/mixins/progress-bar.less similarity index 100% rename from app/styles/bootstrap/mixins/progress-bar.less rename to styles/bootstrap/mixins/progress-bar.less diff --git a/app/styles/bootstrap/mixins/reset-filter.less b/styles/bootstrap/mixins/reset-filter.less similarity index 100% rename from app/styles/bootstrap/mixins/reset-filter.less rename to styles/bootstrap/mixins/reset-filter.less diff --git a/app/styles/bootstrap/mixins/resize.less b/styles/bootstrap/mixins/resize.less similarity index 100% rename from app/styles/bootstrap/mixins/resize.less rename to styles/bootstrap/mixins/resize.less diff --git a/app/styles/bootstrap/mixins/responsive-visibility.less b/styles/bootstrap/mixins/responsive-visibility.less similarity index 100% rename from app/styles/bootstrap/mixins/responsive-visibility.less rename to styles/bootstrap/mixins/responsive-visibility.less diff --git a/app/styles/bootstrap/mixins/size.less b/styles/bootstrap/mixins/size.less similarity index 100% rename from app/styles/bootstrap/mixins/size.less rename to styles/bootstrap/mixins/size.less diff --git a/app/styles/bootstrap/mixins/tab-focus.less b/styles/bootstrap/mixins/tab-focus.less similarity index 100% rename from app/styles/bootstrap/mixins/tab-focus.less rename to styles/bootstrap/mixins/tab-focus.less diff --git a/app/styles/bootstrap/mixins/table-row.less b/styles/bootstrap/mixins/table-row.less similarity index 100% rename from app/styles/bootstrap/mixins/table-row.less rename to styles/bootstrap/mixins/table-row.less diff --git a/app/styles/bootstrap/mixins/text-emphasis.less b/styles/bootstrap/mixins/text-emphasis.less similarity index 100% rename from app/styles/bootstrap/mixins/text-emphasis.less rename to styles/bootstrap/mixins/text-emphasis.less diff --git a/app/styles/bootstrap/mixins/text-overflow.less b/styles/bootstrap/mixins/text-overflow.less similarity index 100% rename from app/styles/bootstrap/mixins/text-overflow.less rename to styles/bootstrap/mixins/text-overflow.less diff --git a/app/styles/bootstrap/mixins/vendor-prefixes.less b/styles/bootstrap/mixins/vendor-prefixes.less similarity index 100% rename from app/styles/bootstrap/mixins/vendor-prefixes.less rename to styles/bootstrap/mixins/vendor-prefixes.less diff --git a/app/styles/bootstrap/modals.less b/styles/bootstrap/modals.less similarity index 100% rename from app/styles/bootstrap/modals.less rename to styles/bootstrap/modals.less diff --git a/app/styles/bootstrap/navbar.less b/styles/bootstrap/navbar.less similarity index 100% rename from app/styles/bootstrap/navbar.less rename to styles/bootstrap/navbar.less diff --git a/app/styles/bootstrap/navs.less b/styles/bootstrap/navs.less similarity index 100% rename from app/styles/bootstrap/navs.less rename to styles/bootstrap/navs.less diff --git a/app/styles/bootstrap/normalize.less b/styles/bootstrap/normalize.less similarity index 100% rename from app/styles/bootstrap/normalize.less rename to styles/bootstrap/normalize.less diff --git a/app/styles/bootstrap/pager.less b/styles/bootstrap/pager.less similarity index 100% rename from app/styles/bootstrap/pager.less rename to styles/bootstrap/pager.less diff --git a/app/styles/bootstrap/pagination.less b/styles/bootstrap/pagination.less similarity index 100% rename from app/styles/bootstrap/pagination.less rename to styles/bootstrap/pagination.less diff --git a/app/styles/bootstrap/panels.less b/styles/bootstrap/panels.less similarity index 100% rename from app/styles/bootstrap/panels.less rename to styles/bootstrap/panels.less diff --git a/app/styles/bootstrap/popovers.less b/styles/bootstrap/popovers.less similarity index 100% rename from app/styles/bootstrap/popovers.less rename to styles/bootstrap/popovers.less diff --git a/app/styles/bootstrap/print.less b/styles/bootstrap/print.less similarity index 100% rename from app/styles/bootstrap/print.less rename to styles/bootstrap/print.less diff --git a/app/styles/bootstrap/progress-bars.less b/styles/bootstrap/progress-bars.less similarity index 100% rename from app/styles/bootstrap/progress-bars.less rename to styles/bootstrap/progress-bars.less diff --git a/app/styles/bootstrap/responsive-embed.less b/styles/bootstrap/responsive-embed.less similarity index 100% rename from app/styles/bootstrap/responsive-embed.less rename to styles/bootstrap/responsive-embed.less diff --git a/app/styles/bootstrap/responsive-utilities.less b/styles/bootstrap/responsive-utilities.less similarity index 100% rename from app/styles/bootstrap/responsive-utilities.less rename to styles/bootstrap/responsive-utilities.less diff --git a/app/styles/bootstrap/scaffolding.less b/styles/bootstrap/scaffolding.less similarity index 100% rename from app/styles/bootstrap/scaffolding.less rename to styles/bootstrap/scaffolding.less diff --git a/app/styles/bootstrap/tables.less b/styles/bootstrap/tables.less similarity index 100% rename from app/styles/bootstrap/tables.less rename to styles/bootstrap/tables.less diff --git a/app/styles/bootstrap/theme.less b/styles/bootstrap/theme.less similarity index 100% rename from app/styles/bootstrap/theme.less rename to styles/bootstrap/theme.less diff --git a/app/styles/bootstrap/thumbnails.less b/styles/bootstrap/thumbnails.less similarity index 100% rename from app/styles/bootstrap/thumbnails.less rename to styles/bootstrap/thumbnails.less diff --git a/app/styles/bootstrap/tooltip.less b/styles/bootstrap/tooltip.less similarity index 100% rename from app/styles/bootstrap/tooltip.less rename to styles/bootstrap/tooltip.less diff --git a/app/styles/bootstrap/type.less b/styles/bootstrap/type.less similarity index 100% rename from app/styles/bootstrap/type.less rename to styles/bootstrap/type.less diff --git a/app/styles/bootstrap/utilities.less b/styles/bootstrap/utilities.less similarity index 100% rename from app/styles/bootstrap/utilities.less rename to styles/bootstrap/utilities.less diff --git a/app/styles/bootstrap/variables.less b/styles/bootstrap/variables.less similarity index 100% rename from app/styles/bootstrap/variables.less rename to styles/bootstrap/variables.less diff --git a/app/styles/bootstrap/wells.less b/styles/bootstrap/wells.less similarity index 100% rename from app/styles/bootstrap/wells.less rename to styles/bootstrap/wells.less diff --git a/app/styles/clearsans.less b/styles/clearsans.less similarity index 100% rename from app/styles/clearsans.less rename to styles/clearsans.less diff --git a/app/styles/container-modal.less b/styles/container-modal.less similarity index 100% rename from app/styles/container-modal.less rename to styles/container-modal.less diff --git a/app/styles/containers.less b/styles/containers.less similarity index 100% rename from app/styles/containers.less rename to styles/containers.less diff --git a/app/styles/header.less b/styles/header.less similarity index 100% rename from app/styles/header.less rename to styles/header.less diff --git a/app/styles/icons.less b/styles/icons.less similarity index 100% rename from app/styles/icons.less rename to styles/icons.less diff --git a/app/styles/main.less b/styles/main.less similarity index 99% rename from app/styles/main.less rename to styles/main.less index 81fe584909..621115cd26 100644 --- a/app/styles/main.less +++ b/styles/main.less @@ -62,6 +62,7 @@ html, body { border: 1px solid #ddd; } + @-webkit-keyframes spin { from { -webkit-transform: rotate(0deg); diff --git a/app/styles/preferences.less b/styles/preferences.less similarity index 100% rename from app/styles/preferences.less rename to styles/preferences.less diff --git a/app/styles/radial.less b/styles/radial.less similarity index 100% rename from app/styles/radial.less rename to styles/radial.less diff --git a/app/styles/retina.less b/styles/retina.less similarity index 100% rename from app/styles/retina.less rename to styles/retina.less diff --git a/app/styles/setup.less b/styles/setup.less similarity index 100% rename from app/styles/setup.less rename to styles/setup.less diff --git a/app/styles/theme.less b/styles/theme.less similarity index 100% rename from app/styles/theme.less rename to styles/theme.less diff --git a/app/styles/variables.less b/styles/variables.less similarity index 100% rename from app/styles/variables.less rename to styles/variables.less diff --git a/test.css b/test.css new file mode 100644 index 0000000000..fcc0766b9d --- /dev/null +++ b/test.css @@ -0,0 +1,14019 @@ +@charset "UTF-8"; +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-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: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +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 { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + 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-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .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 th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fontsglyphicons-halflings-regular.eot'); + src: url('../fontsglyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fontsglyphicons-halflings-regular.woff') format('woff'), url('../fontsglyphicons-halflings-regular.ttf') format('truetype'), url('../fontsglyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur: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"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -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: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #24b8eb; + text-decoration: none; +} +a:hover, +a:focus { + color: #1089b2; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #7a9999; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + 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; +} +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, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777777; +} +h1, +.h1, +h2, +.h2, +h3, +.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, +.h4, +h5, +.h5, +h6, +.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 { + background-color: #fcf8e3; + padding: .2em; +} +.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: #777777; +} +.text-primary { + color: #24b8eb; +} +a.text-primary:hover { + color: #129bca; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #24b8eb; +} +a.bg-primary:hover { + background-color: #129bca; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #7a9999; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #7a9999; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #7a9999; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small: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: #ffffff; + background-color: #333333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + 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 { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + 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: #777777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + overflow-x: auto; + min-height: 0.01%; +} +@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 #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + 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="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, 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, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999999; +} +.form-control::-webkit-input-placeholder { + color: #999999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #7a9999; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + 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[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; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm, +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm, +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control { + height: auto; +} +.input-lg, +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control { + height: auto; +} +.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; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + border-color: #a94442; + background-color: #f2dede; +} +.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 .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 7px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 7px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333333; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} +.btn-default .badge { + color: #ffffff; + background-color: #333333; +} +.btn-primary { + color: #ffffff; + background-color: #24b8eb; + border-color: #15ade1; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #129bca; + border-color: #0f82a9; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #24b8eb; + border-color: #15ade1; +} +.btn-primary .badge { + color: #24b8eb; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #ffffff; +} +.btn-link { + color: #24b8eb; + font-weight: normal; + 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:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #1089b2; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + 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="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + 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; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} +.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: normal; + line-height: 1.42857143; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #24b8eb; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + 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-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-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-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 > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 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-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.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-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + 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="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + 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-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.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.33; + 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; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].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; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control: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: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #7a9999; + border: 1px solid #cccccc; + 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="radio"], +.input-group-addon input[type="checkbox"] { + 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:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-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:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-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:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + 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 { + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #7a9999; +} +.nav > li.disabled > a { + color: #777777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777777; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #7a9999; + border-color: #24b8eb; +} +.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 #dddddd; +} +.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: #7a9999 #7a9999 #dddddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.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:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.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:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #24b8eb; +} +.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 { + text-align: center; + margin-bottom: 5px; +} +.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:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-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 { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + visibility: visible !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + 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-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + 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; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + height: 50px; +} +.navbar-brand:hover, +.navbar-brand:focus { + 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; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + 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; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + 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 { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; +} +@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 .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + 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; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-top-right-radius: 4px; + border-top-left-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-left: 15px; + margin-right: 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: #777777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777777; +} +.navbar-default .navbar-nav > li > a { + color: #777777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #dddddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: #e7e7e7; + color: #555555; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777777; +} +.navbar-default .navbar-link:hover { + color: #333333; +} +.navbar-default .btn-link { + color: #777777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #080808; + color: #ffffff; +} +@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:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444444; +} +.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 { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; +} +.breadcrumb > .active { + color: #777777; +} +.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; + line-height: 1.42857143; + text-decoration: none; + color: #24b8eb; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #1089b2; + background-color: #7a9999; + border-color: #dddddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #24b8eb; + border-color: #24b8eb; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777777; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #7a9999; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777777; + background-color: #ffffff; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #24b8eb; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #129bca; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #777777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #24b8eb; + background-color: #ffffff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #7a9999; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #617f7f; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #24b8eb; +} +.thumbnail .caption { + padding: 9px; + color: #333333; +} +.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: bold; +} +.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 { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #31708f; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; +} +.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; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #24b8eb; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + 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 { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item { + color: #555555; +} +a.list-group-item .list-group-item-heading { + color: #333333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + color: #555555; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #7a9999; + color: #777777; + cursor: not-allowed; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #24b8eb; + border-color: #24b8eb; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #dff5fc; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + 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: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + 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-right-radius: 3px; + border-top-left-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-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .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 td:first-child, +.panel > .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 td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .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 td:last-child, +.panel > .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 td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} +.panel > .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 td:first-child, +.panel > .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 td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .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 td:last-child, +.panel > .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 td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .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 #dddddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 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 > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #dddddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.panel-default { + border-color: #dddddd; +} +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-primary { + border-color: #24b8eb; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #24b8eb; + border-color: #24b8eb; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #24b8eb; +} +.panel-primary > .panel-heading .badge { + color: #24b8eb; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #24b8eb; +} +.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 iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.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, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 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: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.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: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857143px; +} +.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-left: 5px; + margin-bottom: 0; +} +.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, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + visibility: visible; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + 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: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.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-weight: normal; + line-height: 1.42857143; + text-align: left; + background-color: #ffffff; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + 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 { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + transition: transform 0.6s ease-in-out; + backface-visibility: hidden; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + transform: translate3d(0, 0, 0); + left: 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; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; +} +.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%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 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-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: 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; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.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; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.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; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.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; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.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; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.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; + } +} +@font-face { + font-family: 'Clear'; + src: url('clearsans-regular-webfont.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Clear Sans'; + src: url('clearsans-medium-webfont.ttf') format('truetype'); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: 'Clear Sans'; + src: url('clearsans-light-webfont.ttf') format('truetype'); + font-weight: 300; + font-style: normal; +} +@font-face { + font-family: 'Clear Sans'; + src: url('clearsans-thin-webfont.ttf') format('truetype'); + font-weight: 100; + font-style: normal; +} +@font-face { + font-family: 'Clear Sans'; + src: url('clearsans-mediumitalic-webfont.ttf') format('truetype'); + font-weight: 500; + font-style: italic; +} +@font-face { + font-family: 'Clear Sans'; + src: url('clearsans-italic-webfont.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} +@font-face { + font-family: 'Clear Sans'; + src: url('clearsans-bolditalic-webfont.ttf') format('truetype'); + font-weight: 700; + font-style: italic; +} +@font-face { + font-family: 'Clear Sans'; + src: url('clearsans-bold-webfont.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} +h3 { + font-size: 14px; + color: #253237; +} +h4 { + font-size: 13px; + color: #546c70; + font-weight: 400; +} +.popover-content { + color: #546c70; + font-size: 13px; +} +input[type="text"].line { + border: 0; + border-bottom: 1px solid #c7d7d7; + color: #546c70; + font-weight: 300; + padding: 5px; + transition: all 0.1s; +} +input[type="text"].line:focus { + outline: 0; + border-bottom: 1px solid #24b8eb; +} +input[type="text"].line::-webkit-input-placeholder { + color: #ddd; + font-weight: 300; +} +.btn-group.tabs .btn { + padding: 6px 14px 6px 14px; +} +.btn-group .btn .icon-dropdown.icon:before { + position: relative; + font-size: 10px; + top: -2px; + margin-left: 0px; + margin-right: 4px; +} +.btn { + font-size: 12px; + background-color: transparent; + color: #546c70; + border: 1px solid #546c70; + border-radius: 25px; + box-shadow: none; + font-weight: 400; + text-shadow: none; + padding: 6px 14px 6px 14px; + height: 32px; + cursor: default; +} +.btn.small { + height: 22px; +} +.btn.small .icon { + font-size: 10px; +} +.btn .content { + position: relative; + top: -4px; + margin-left: 5px; + margin-right: 5px; +} +.btn .icon-dropdown.icon:before { + font-size: 10px; + position: relative; + top: -2px; +} +.btn .icon { + position: relative; + font-size: 16px; +} +.btn:active, +.btn.active { + background-image: none; + box-shadow: none; +} +.btn:focus, +.btn.focus { + box-shadow: none; + outline: none !important; +} +.btn.only-icon { + padding: 6px 7px 6px 7px; +} +.btn.only-icon.small { + padding: 2px 5px 3px 5px; +} +.btn-action { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #24b8eb; + color: #24b8eb; +} +.btn-action:hover, +.btn-action:focus { + border-color: #129bca; + color: #129bca; + cursor: default; + box-shadow: none; + background: none; +} +.btn-action:active { + background-color: #f6fcfe; + border-color: #129bca; + color: #129bca; + box-shadow: none; +} +.btn-action.active { + background-color: #24b8eb; + color: white; + box-shadow: none; +} +.btn-action:disabled, +.btn-action[disabled] { + opacity: 0.5; +} +.btn-positive { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #65e100; + color: #65e100; +} +.btn-positive:hover, +.btn-positive:focus { + border-color: #4eae00; + color: #4eae00; + cursor: default; + box-shadow: none; + background: none; +} +.btn-positive:active { + background-color: #e0ffc7; + border-color: #4eae00; + color: #4eae00; + box-shadow: none; +} +.btn-positive.active { + background-color: #65e100; + color: white; + box-shadow: none; +} +.btn-positive:disabled, +.btn-positive[disabled] { + opacity: 0.5; +} +.btn-default { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #ffffff; + color: #ffffff; +} +.btn-default:hover, +.btn-default:focus { + border-color: #e6e6e6; + color: #e6e6e6; + cursor: default; + box-shadow: none; + background: none; +} +.btn-default:active { + background-color: #ffffff; + border-color: #e6e6e6; + color: #e6e6e6; + box-shadow: none; +} +.btn-default.active { + background-color: #ffffff; + color: white; + box-shadow: none; +} +.btn-default:disabled, +.btn-default[disabled] { + opacity: 0.5; +} +.btn-primary { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #24b8eb; + color: #24b8eb; +} +.btn-primary:hover, +.btn-primary:focus { + border-color: #129bca; + color: #129bca; + cursor: default; + box-shadow: none; + background: none; +} +.btn-primary:active { + background-color: #f6fcfe; + border-color: #129bca; + color: #129bca; + box-shadow: none; +} +.btn-primary.active { + background-color: #24b8eb; + color: white; + box-shadow: none; +} +.btn-primary:disabled, +.btn-primary[disabled] { + opacity: 0.5; +} +.btn-success { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #5cb85c; + color: #5cb85c; +} +.btn-success:hover, +.btn-success:focus { + border-color: #449d44; + color: #449d44; + cursor: default; + box-shadow: none; + background: none; +} +.btn-success:active { + background-color: #fcfefc; + border-color: #449d44; + color: #449d44; + box-shadow: none; +} +.btn-success.active { + background-color: #5cb85c; + color: white; + box-shadow: none; +} +.btn-success:disabled, +.btn-success[disabled] { + opacity: 0.5; +} +.btn-info { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #5bc0de; + color: #5bc0de; +} +.btn-info:hover, +.btn-info:focus { + border-color: #31b0d5; + color: #31b0d5; + cursor: default; + box-shadow: none; + background: none; +} +.btn-info:active { + background-color: #ffffff; + border-color: #31b0d5; + color: #31b0d5; + box-shadow: none; +} +.btn-info.active { + background-color: #5bc0de; + color: white; + box-shadow: none; +} +.btn-info:disabled, +.btn-info[disabled] { + opacity: 0.5; +} +.btn-warning { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #f0ad4e; + color: #f0ad4e; +} +.btn-warning:hover, +.btn-warning:focus { + border-color: #ec971f; + color: #ec971f; + cursor: default; + box-shadow: none; + background: none; +} +.btn-warning:active { + background-color: #ffffff; + border-color: #ec971f; + color: #ec971f; + box-shadow: none; +} +.btn-warning.active { + background-color: #f0ad4e; + color: white; + box-shadow: none; +} +.btn-warning:disabled, +.btn-warning[disabled] { + opacity: 0.5; +} +.btn-danger { + transition: all 0.1s; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border-color: #d9534f; + color: #d9534f; +} +.btn-danger:hover, +.btn-danger:focus { + border-color: #c9302c; + color: #c9302c; + cursor: default; + box-shadow: none; + background: none; +} +.btn-danger:active { + background-color: #ffffff; + border-color: #c9302c; + color: #c9302c; + box-shadow: none; +} +.btn-danger.active { + background-color: #d9534f; + color: white; + box-shadow: none; +} +.btn-danger:disabled, +.btn-danger[disabled] { + opacity: 0.5; +} +@font-face { + font-family: "streamline-24px"; + src: url("streamline-24px.eot"); + src: url("streamline-24px.eot?#iefix") format("embedded-opentype"), url("streamline-24px.woff") format("woff"), url("streamline-24px.ttf") format("truetype"), url("streamline-24px.svg#streamline-24px") format("svg"); + font-weight: normal; + font-style: normal; +} +[data-icon]:before { + font-family: "streamline-24px" !important; + content: attr(data-icon); + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + font-family: "streamline-24px" !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-bin-1:before { + content: "\e000"; +} +.icon-bin-2:before { + content: "\e001"; +} +.icon-binocular:before { + content: "\e002"; +} +.icon-bomb:before { + content: "\e003"; +} +.icon-clip-1:before { + content: "\e004"; +} +.icon-clip-2:before { + content: "\e005"; +} +.icon-crosshair-1:before { + content: "\e006"; +} +.icon-crosshair-2:before { + content: "\e007"; +} +.icon-crosshair-3:before { + content: "\e008"; +} +.icon-cutter:before { + content: "\e009"; +} +.icon-delete-1:before { + content: "\e00a"; +} +.icon-delete-2:before { + content: "\e00b"; +} +.icon-edit-1:before { + content: "\e00c"; +} +.icon-edit-2:before { + content: "\e00d"; +} +.icon-edit-3:before { + content: "\e00e"; +} +.icon-hide:before { + content: "\e00f"; +} +.icon-ink:before { + content: "\e010"; +} +.icon-key-1:before { + content: "\e011"; +} +.icon-key-2:before { + content: "\e012"; +} +.icon-link-1:before { + content: "\e013"; +} +.icon-link-2:before { + content: "\e014"; +} +.icon-link-3:before { + content: "\e015"; +} +.icon-link-broken-1:before { + content: "\e016"; +} +.icon-link-broken-2:before { + content: "\e017"; +} +.icon-lock-1:before { + content: "\e018"; +} +.icon-lock-2:before { + content: "\e019"; +} +.icon-lock-3:before { + content: "\e01a"; +} +.icon-lock-4:before { + content: "\e01b"; +} +.icon-lock-5:before { + content: "\e01c"; +} +.icon-lock-unlock-1:before { + content: "\e01d"; +} +.icon-lock-unlock-2:before { + content: "\e01e"; +} +.icon-magnifier:before { + content: "\e01f"; +} +.icon-pen-1:before { + content: "\e020"; +} +.icon-pen-2:before { + content: "\e021"; +} +.icon-pen-3:before { + content: "\e022"; +} +.icon-pen-4:before { + content: "\e023"; +} +.icon-pencil-1:before { + content: "\e024"; +} +.icon-pencil-2:before { + content: "\e025"; +} +.icon-pencil-3:before { + content: "\e026"; +} +.icon-pin-1:before { + content: "\e027"; +} +.icon-pin-2:before { + content: "\e028"; +} +.icon-power-1:before { + content: "\e029"; +} +.icon-power-2:before { + content: "\e02a"; +} +.icon-preview-1:before { + content: "\e02b"; +} +.icon-preview-2:before { + content: "\e02c"; +} +.icon-scissor-1:before { + content: "\e02d"; +} +.icon-scissor-2:before { + content: "\e02e"; +} +.icon-skull-1:before { + content: "\e02f"; +} +.icon-skull-2:before { + content: "\e030"; +} +.icon-type-1:before { + content: "\e031"; +} +.icon-type-2:before { + content: "\e032"; +} +.icon-type-3:before { + content: "\e033"; +} +.icon-type-4:before { + content: "\e034"; +} +.icon-zoom-area:before { + content: "\e035"; +} +.icon-zoom-in:before { + content: "\e036"; +} +.icon-zoom-out:before { + content: "\e037"; +} +.icon-cursor-1:before { + content: "\e038"; +} +.icon-cursor-2:before { + content: "\e039"; +} +.icon-cursor-add:before { + content: "\e03a"; +} +.icon-cursor-duplicate:before { + content: "\e03b"; +} +.icon-cursor-move:before { + content: "\e03c"; +} +.icon-cursor-move-2:before { + content: "\e03d"; +} +.icon-cursor-select-area:before { + content: "\e03e"; +} +.icon-hand:before { + content: "\e03f"; +} +.icon-hand-block:before { + content: "\e040"; +} +.icon-hand-grab-1:before { + content: "\e041"; +} +.icon-hand-grab-2:before { + content: "\e042"; +} +.icon-hand-point:before { + content: "\e043"; +} +.icon-hand-touch-1:before { + content: "\e044"; +} +.icon-hand-touch-2:before { + content: "\e045"; +} +.icon-hand-touch-3:before { + content: "\e046"; +} +.icon-hand-touch-4:before { + content: "\e047"; +} +.icon-bookmark-1:before { + content: "\e048"; +} +.icon-bookmark-2:before { + content: "\e049"; +} +.icon-bookmark-3:before { + content: "\e04a"; +} +.icon-bookmark-4:before { + content: "\e04b"; +} +.icon-tag-1:before { + content: "\e04c"; +} +.icon-tag-2:before { + content: "\e04d"; +} +.icon-tag-add:before { + content: "\e04e"; +} +.icon-tag-delete:before { + content: "\e04f"; +} +.icon-tags-1:before { + content: "\e050"; +} +.icon-tags-2:before { + content: "\e051"; +} +.icon-anchor-point-1:before { + content: "\e052"; +} +.icon-anchor-point-2:before { + content: "\e053"; +} +.icon-arrange-1:before { + content: "\e054"; +} +.icon-arrange-2:before { + content: "\e055"; +} +.icon-artboard:before { + content: "\e056"; +} +.icon-brush-1:before { + content: "\e057"; +} +.icon-brush-2:before { + content: "\e058"; +} +.icon-bucket:before { + content: "\e059"; +} +.icon-crop:before { + content: "\e05a"; +} +.icon-dropper-1:before { + content: "\e05b"; +} +.icon-dropper-2:before { + content: "\e05c"; +} +.icon-dropper-3:before { + content: "\e05d"; +} +.icon-glue:before { + content: "\e05e"; +} +.icon-grid:before { + content: "\e05f"; +} +.icon-layers:before { + content: "\e060"; +} +.icon-magic-wand-1:before { + content: "\e061"; +} +.icon-magic-wand-2:before { + content: "\e062"; +} +.icon-magnet:before { + content: "\e063"; +} +.icon-marker:before { + content: "\e064"; +} +.icon-palette:before { + content: "\e065"; +} +.icon-pen-5:before { + content: "\e066"; +} +.icon-pen-6:before { + content: "\e067"; +} +.icon-quill:before { + content: "\e068"; +} +.icon-reflect:before { + content: "\e069"; +} +.icon-roller:before { + content: "\e06a"; +} +.icon-ruler-1:before { + content: "\e06b"; +} +.icon-ruler-2:before { + content: "\e06c"; +} +.icon-scale-diagonal-1:before { + content: "\e06d"; +} +.icon-scale-diagonal-2:before { + content: "\e06e"; +} +.icon-scale-horizontal:before { + content: "\e06f"; +} +.icon-scale-tool-1:before { + content: "\e070"; +} +.icon-scale-tool-2:before { + content: "\e071"; +} +.icon-scale-tool-3:before { + content: "\e072"; +} +.icon-scale-vertical:before { + content: "\e073"; +} +.icon-shear-tool:before { + content: "\e074"; +} +.icon-spray:before { + content: "\e075"; +} +.icon-stamp:before { + content: "\e076"; +} +.icon-stationery-1:before { + content: "\e077"; +} +.icon-stationery-2:before { + content: "\e078"; +} +.icon-stationery-3:before { + content: "\e079"; +} +.icon-vector:before { + content: "\e07a"; +} +.icon-award-1:before { + content: "\e07b"; +} +.icon-award-2:before { + content: "\e07c"; +} +.icon-award-3:before { + content: "\e07d"; +} +.icon-award-4:before { + content: "\e07e"; +} +.icon-award-5:before { + content: "\e07f"; +} +.icon-award-6:before { + content: "\e080"; +} +.icon-crown-1:before { + content: "\e081"; +} +.icon-crown-2:before { + content: "\e082"; +} +.icon-crown-3:before { + content: "\e083"; +} +.icon-fire:before { + content: "\e084"; +} +.icon-flag-1:before { + content: "\e085"; +} +.icon-flag-2:before { + content: "\e086"; +} +.icon-flag-3:before { + content: "\e087"; +} +.icon-flag-4:before { + content: "\e088"; +} +.icon-flag-5:before { + content: "\e089"; +} +.icon-flag-6:before { + content: "\e08a"; +} +.icon-flag-7:before { + content: "\e08b"; +} +.icon-flag-8:before { + content: "\e08c"; +} +.icon-google-plus-1:before { + content: "\e08d"; +} +.icon-google-plus-2:before { + content: "\e08e"; +} +.icon-hand-like-1:before { + content: "\e08f"; +} +.icon-hand-like-2:before { + content: "\e090"; +} +.icon-hand-unlike-1:before { + content: "\e091"; +} +.icon-hand-unlike-2:before { + content: "\e092"; +} +.icon-heart-1:before { + content: "\e093"; +} +.icon-heart-2:before { + content: "\e094"; +} +.icon-heart-angel:before { + content: "\e095"; +} +.icon-heart-broken:before { + content: "\e096"; +} +.icon-heart-minus:before { + content: "\e097"; +} +.icon-heart-plus:before { + content: "\e098"; +} +.icon-present:before { + content: "\e099"; +} +.icon-rank-1:before { + content: "\e09a"; +} +.icon-rank-2:before { + content: "\e09b"; +} +.icon-ribbon:before { + content: "\e09c"; +} +.icon-star-1:before { + content: "\e09d"; +} +.icon-star-2:before { + content: "\e09e"; +} +.icon-star-3:before { + content: "\e09f"; +} +.icon-star-4:before { + content: "\e0a0"; +} +.icon-star-5:before { + content: "\e0a1"; +} +.icon-star-6:before { + content: "\e0a2"; +} +.icon-star-7:before { + content: "\e0a3"; +} +.icon-star-8:before { + content: "\e0a4"; +} +.icon-star-9:before { + content: "\e0a5"; +} +.icon-star-10:before { + content: "\e0a6"; +} +.icon-trophy:before { + content: "\e0a7"; +} +.icon-bubble-2:before { + content: "\e0a8"; +} +.icon-bubble-add-1:before { + content: "\e0a9"; +} +.icon-bubble-add-2:before { + content: "\e0aa"; +} +.icon-bubble-add-3:before { + content: "\e0ab"; +} +.icon-bubble-ask-1:before { + content: "\e0ac"; +} +.icon-bubble-ask-2:before { + content: "\e0ad"; +} +.icon-bubble-attention-1:before { + content: "\e0ae"; +} +.icon-bubble-attention-2:before { + content: "\e0af"; +} +.icon-bubble-attention-3:before { + content: "\e0b0"; +} +.icon-bubble-attention-4:before { + content: "\e0b1"; +} +.icon-bubble-attention-5:before { + content: "\e0b2"; +} +.icon-bubble-attention-6:before { + content: "\e0b3"; +} +.icon-bubble-attention-7:before { + content: "\e0b4"; +} +.icon-bubble-block-1:before { + content: "\e0b5"; +} +.icon-bubble-block-2:before { + content: "\e0b6"; +} +.icon-bubble-block-3:before { + content: "\e0b7"; +} +.icon-bubble-chat-1:before { + content: "\e0b8"; +} +.icon-bubble-chat-2:before { + content: "\e0b9"; +} +.icon-bubble-check-1:before { + content: "\e0ba"; +} +.icon-bubble-check-2:before { + content: "\e0bb"; +} +.icon-bubble-check-3:before { + content: "\e0bc"; +} +.icon-bubble-comment-1:before { + content: "\e0bd"; +} +.icon-bubble-comment-2:before { + content: "\e0be"; +} +.icon-bubble-conversation-1:before { + content: "\e0bf"; +} +.icon-bubble-conversation-2:before { + content: "\e0c0"; +} +.icon-bubble-conversation-3:before { + content: "\e0c1"; +} +.icon-bubble-conversation-4:before { + content: "\e0c2"; +} +.icon-bubble-conversation-5:before { + content: "\e0c3"; +} +.icon-bubble-conversation-6:before { + content: "\e0c4"; +} +.icon-bubble-delete-1:before { + content: "\e0c5"; +} +.icon-bubble-delete-2:before { + content: "\e0c6"; +} +.icon-bubble-delete-3:before { + content: "\e0c7"; +} +.icon-bubble-edit-1:before { + content: "\e0c8"; +} +.icon-bubble-edit-2:before { + content: "\e0c9"; +} +.icon-bubble-edit-3:before { + content: "\e0ca"; +} +.icon-bubble-heart-1:before { + content: "\e0cb"; +} +.icon-bubble-heart-2:before { + content: "\e0cc"; +} +.icon-bubble-minus-1:before { + content: "\e0cd"; +} +.icon-bubble-minus-2:before { + content: "\e0ce"; +} +.icon-bubble-minus-3:before { + content: "\e0cf"; +} +.icon-bubble-quote-1:before { + content: "\e0d0"; +} +.icon-bubble-quote-2:before { + content: "\e0d1"; +} +.icon-bubble-smiley-3:before { + content: "\e0d2"; +} +.icon-bubble-smiley-4:before { + content: "\e0d3"; +} +.icon-bubble-smiley-smile:before { + content: "\e0d4"; +} +.icon-bubble-smiley-wink:before { + content: "\e0d5"; +} +.icon-bubble-star-1:before { + content: "\e0d6"; +} +.icon-bubble-star-2:before { + content: "\e0d7"; +} +.icon-bubble-star-3:before { + content: "\e0d8"; +} +.icon-chat-1:before { + content: "\e0d9"; +} +.icon-chat-2:before { + content: "\e0da"; +} +.icon-chat-3:before { + content: "\e0db"; +} +.icon-chat-4:before { + content: "\e0dc"; +} +.icon-chat-5:before { + content: "\e0dd"; +} +.icon-chat-bubble-1:before { + content: "\e0de"; +} +.icon-chat-bubble-2:before { + content: "\e0df"; +} +.icon-smiley-happy-1:before { + content: "\e0e0"; +} +.icon-smiley-happy-2:before { + content: "\e0e1"; +} +.icon-smiley-happy-3:before { + content: "\e0e2"; +} +.icon-smiley-happy-4:before { + content: "\e0e3"; +} +.icon-smiley-happy-5:before { + content: "\e0e4"; +} +.icon-smiley-relax:before { + content: "\e0e5"; +} +.icon-smiley-sad:before { + content: "\e0e6"; +} +.icon-smiley-surprise:before { + content: "\e0e7"; +} +.icon-thinking-1:before { + content: "\e0e8"; +} +.icon-thinking-2:before { + content: "\e0e9"; +} +.icon-call-1:before { + content: "\e0ea"; +} +.icon-call-2:before { + content: "\e0eb"; +} +.icon-call-3:before { + content: "\e0ec"; +} +.icon-call-4:before { + content: "\e0ed"; +} +.icon-call-add:before { + content: "\e0ee"; +} +.icon-call-block:before { + content: "\e0ef"; +} +.icon-call-delete:before { + content: "\e0f0"; +} +.icon-call-in:before { + content: "\e0f1"; +} +.icon-call-minus:before { + content: "\e0f2"; +} +.icon-call-out:before { + content: "\e0f3"; +} +.icon-contact:before { + content: "\e0f4"; +} +.icon-fax:before { + content: "\e0f5"; +} +.icon-hang-up:before { + content: "\e0f6"; +} +.icon-message:before { + content: "\e0f7"; +} +.icon-mobile-phone-1:before { + content: "\e0f8"; +} +.icon-mobile-phone-2:before { + content: "\e0f9"; +} +.icon-phone-1:before { + content: "\e0fa"; +} +.icon-phone-2:before { + content: "\e0fb"; +} +.icon-phone-3:before { + content: "\e0fc"; +} +.icon-phone-4:before { + content: "\e0fd"; +} +.icon-phone-vibration:before { + content: "\e0fe"; +} +.icon-signal-fine:before { + content: "\e0ff"; +} +.icon-signal-full:before { + content: "\e100"; +} +.icon-signal-high:before { + content: "\e101"; +} +.icon-signal-no:before { + content: "\e102"; +} +.icon-signal-poor:before { + content: "\e103"; +} +.icon-signal-weak:before { + content: "\e104"; +} +.icon-smartphone:before { + content: "\e105"; +} +.icon-tape:before { + content: "\e106"; +} +.icon-camera-symbol-1:before { + content: "\e107"; +} +.icon-camera-symbol-2:before { + content: "\e108"; +} +.icon-camera-symbol-3:before { + content: "\e109"; +} +.icon-headphone:before { + content: "\e10a"; +} +.icon-antenna-1:before { + content: "\e10b"; +} +.icon-antenna-2:before { + content: "\e10c"; +} +.icon-antenna-3:before { + content: "\e10d"; +} +.icon-hotspot-1:before { + content: "\e10e"; +} +.icon-hotspot-2:before { + content: "\e10f"; +} +.icon-link:before { + content: "\e110"; +} +.icon-megaphone-1:before { + content: "\e111"; +} +.icon-megaphone-2:before { + content: "\e112"; +} +.icon-radar:before { + content: "\e113"; +} +.icon-rss-1:before { + content: "\e114"; +} +.icon-rss-2:before { + content: "\e115"; +} +.icon-satellite:before { + content: "\e116"; +} +.icon-address-1:before { + content: "\e117"; +} +.icon-address-2:before { + content: "\e118"; +} +.icon-address-3:before { + content: "\e119"; +} +.icon-forward:before { + content: "\e11a"; +} +.icon-inbox-1:before { + content: "\e11b"; +} +.icon-inbox-2:before { + content: "\e11c"; +} +.icon-inbox-3:before { + content: "\e11d"; +} +.icon-inbox-4:before { + content: "\e11e"; +} +.icon-letter-1:before { + content: "\e11f"; +} +.icon-letter-2:before { + content: "\e120"; +} +.icon-letter-3:before { + content: "\e121"; +} +.icon-letter-4:before { + content: "\e122"; +} +.icon-letter-5:before { + content: "\e123"; +} +.icon-mail-1:before { + content: "\e124"; +} +.icon-mail-2:before { + content: "\e125"; +} +.icon-mail-add:before { + content: "\e126"; +} +.icon-mail-attention:before { + content: "\e127"; +} +.icon-mail-block:before { + content: "\e128"; +} +.icon-mail-box-1:before { + content: "\e129"; +} +.icon-mail-box-2:before { + content: "\e12a"; +} +.icon-mail-box-3:before { + content: "\e12b"; +} +.icon-mail-checked:before { + content: "\e12c"; +} +.icon-mail-compose:before { + content: "\e12d"; +} +.icon-mail-delete:before { + content: "\e12e"; +} +.icon-mail-favorite:before { + content: "\e12f"; +} +.icon-mail-inbox:before { + content: "\e130"; +} +.icon-mail-lock:before { + content: "\e131"; +} +.icon-mail-minus:before { + content: "\e132"; +} +.icon-mail-read:before { + content: "\e133"; +} +.icon-mail-recieved-1:before { + content: "\e134"; +} +.icon-mail-recieved-2:before { + content: "\e135"; +} +.icon-mail-search-1:before { + content: "\e136"; +} +.icon-mail-search-2:before { + content: "\e137"; +} +.icon-mail-sent-1:before { + content: "\e138"; +} +.icon-mail-sent-2:before { + content: "\e139"; +} +.icon-mail-setting:before { + content: "\e13a"; +} +.icon-mail-star:before { + content: "\e13b"; +} +.icon-mail-sync:before { + content: "\e13c"; +} +.icon-mail-time:before { + content: "\e13d"; +} +.icon-outbox-1:before { + content: "\e13e"; +} +.icon-outbox-2:before { + content: "\e13f"; +} +.icon-plane-paper-1:before { + content: "\e140"; +} +.icon-plane-paper-2:before { + content: "\e141"; +} +.icon-reply-mail-1:before { + content: "\e142"; +} +.icon-reply-mail-2:before { + content: "\e143"; +} +.icon-connection-1:before { + content: "\e144"; +} +.icon-connection-2:before { + content: "\e145"; +} +.icon-connection-3:before { + content: "\e146"; +} +.icon-contacts-1:before { + content: "\e147"; +} +.icon-contacts-2:before { + content: "\e148"; +} +.icon-contacts-3:before { + content: "\e149"; +} +.icon-contacts-4:before { + content: "\e14a"; +} +.icon-female:before { + content: "\e14b"; +} +.icon-gender-female:before { + content: "\e14c"; +} +.icon-gender-male:before { + content: "\e14d"; +} +.icon-genders:before { + content: "\e14e"; +} +.icon-id-1:before { + content: "\e14f"; +} +.icon-id-2:before { + content: "\e150"; +} +.icon-id-3:before { + content: "\e151"; +} +.icon-id-4:before { + content: "\e152"; +} +.icon-id-5:before { + content: "\e153"; +} +.icon-id-6:before { + content: "\e154"; +} +.icon-id-7:before { + content: "\e155"; +} +.icon-id-8:before { + content: "\e156"; +} +.icon-male:before { + content: "\e157"; +} +.icon-profile-1:before { + content: "\e158"; +} +.icon-profile-2:before { + content: "\e159"; +} +.icon-profile-3:before { + content: "\e15a"; +} +.icon-profile-4:before { + content: "\e15b"; +} +.icon-profile-5:before { + content: "\e15c"; +} +.icon-profile-6:before { + content: "\e15d"; +} +.icon-profile-athlete:before { + content: "\e15e"; +} +.icon-profile-bussiness-man:before { + content: "\e15f"; +} +.icon-profile-chef:before { + content: "\e160"; +} +.icon-profile-cop:before { + content: "\e161"; +} +.icon-profile-doctor-1:before { + content: "\e162"; +} +.icon-profile-doctor-2:before { + content: "\e163"; +} +.icon-profile-gentleman-1:before { + content: "\e164"; +} +.icon-profile-gentleman-2:before { + content: "\e165"; +} +.icon-profile-graduate:before { + content: "\e166"; +} +.icon-profile-king:before { + content: "\e167"; +} +.icon-profile-lady-1:before { + content: "\e168"; +} +.icon-profile-lady-2:before { + content: "\e169"; +} +.icon-profile-man:before { + content: "\e16a"; +} +.icon-profile-nurse1:before { + content: "\e16b"; +} +.icon-profile-nurse-2:before { + content: "\e16c"; +} +.icon-profile-prisoner:before { + content: "\e16d"; +} +.icon-profile-serviceman-1:before { + content: "\e16e"; +} +.icon-profile-serviceman-2:before { + content: "\e16f"; +} +.icon-profile-spy:before { + content: "\e170"; +} +.icon-profile-teacher:before { + content: "\e171"; +} +.icon-profile-thief:before { + content: "\e172"; +} +.icon-user-1:before { + content: "\e173"; +} +.icon-user-2:before { + content: "\e174"; +} +.icon-user-add-1:before { + content: "\e175"; +} +.icon-user-add-2:before { + content: "\e176"; +} +.icon-user-block-1:before { + content: "\e177"; +} +.icon-user-block-2:before { + content: "\e178"; +} +.icon-user-checked-1:before { + content: "\e179"; +} +.icon-user-checked-2:before { + content: "\e17a"; +} +.icon-user-delete-1:before { + content: "\e17b"; +} +.icon-user-delete-2:before { + content: "\e17c"; +} +.icon-user-edit-1:before { + content: "\e17d"; +} +.icon-user-edit-2:before { + content: "\e17e"; +} +.icon-user-heart-1:before { + content: "\e17f"; +} +.icon-user-heart-2:before { + content: "\e180"; +} +.icon-user-lock-1:before { + content: "\e181"; +} +.icon-user-lock-2:before { + content: "\e182"; +} +.icon-user-minus-1:before { + content: "\e183"; +} +.icon-user-minus-2:before { + content: "\e184"; +} +.icon-user-search-1:before { + content: "\e185"; +} +.icon-user-search-2:before { + content: "\e186"; +} +.icon-user-setting-1:before { + content: "\e187"; +} +.icon-user-setting-2:before { + content: "\e188"; +} +.icon-user-star-1:before { + content: "\e189"; +} +.icon-user-star-2:before { + content: "\e18a"; +} +.icon-bag-shopping-1:before { + content: "\e18b"; +} +.icon-bag-shopping-2:before { + content: "\e18c"; +} +.icon-bag-shopping-3:before { + content: "\e18d"; +} +.icon-basket-1:before { + content: "\e18e"; +} +.icon-basket-2:before { + content: "\e18f"; +} +.icon-basket-3:before { + content: "\e190"; +} +.icon-basket-add:before { + content: "\e191"; +} +.icon-basket-minus:before { + content: "\e192"; +} +.icon-briefcase:before { + content: "\e193"; +} +.icon-cart-1:before { + content: "\e194"; +} +.icon-cart-2:before { + content: "\e195"; +} +.icon-cart-3:before { + content: "\e196"; +} +.icon-cart-4:before { + content: "\e197"; +} +.icon-cut:before { + content: "\e198"; +} +.icon-handbag-1:before { + content: "\e199"; +} +.icon-handbag-2:before { + content: "\e19a"; +} +.icon-purse-1:before { + content: "\e19b"; +} +.icon-purse-2:before { + content: "\e19c"; +} +.icon-qr-code:before { + content: "\e19d"; +} +.icon-receipt-1:before { + content: "\e19e"; +} +.icon-receipt-2:before { + content: "\e19f"; +} +.icon-receipt-3:before { + content: "\e1a0"; +} +.icon-receipt-4:before { + content: "\e1a1"; +} +.icon-shopping-1:before { + content: "\e1a2"; +} +.icon-sign-new-1:before { + content: "\e1a3"; +} +.icon-sign-new-2:before { + content: "\e1a4"; +} +.icon-sign-parking:before { + content: "\e1a5"; +} +.icon-signal-star:before { + content: "\e1a6"; +} +.icon-trolley-1:before { + content: "\e1a7"; +} +.icon-trolley-2:before { + content: "\e1a8"; +} +.icon-trolley-3:before { + content: "\e1a9"; +} +.icon-trolley-load:before { + content: "\e1aa"; +} +.icon-trolley-off:before { + content: "\e1ab"; +} +.icon-wallet-1:before { + content: "\e1ac"; +} +.icon-wallet-2:before { + content: "\e1ad"; +} +.icon-wallet-3:before { + content: "\e1ae"; +} +.icon-camera-1:before { + content: "\e1af"; +} +.icon-camera-2:before { + content: "\e1b0"; +} +.icon-camera-3:before { + content: "\e1b1"; +} +.icon-camera-4:before { + content: "\e1b2"; +} +.icon-camera-5:before { + content: "\e1b3"; +} +.icon-camera-back:before { + content: "\e1b4"; +} +.icon-camera-focus:before { + content: "\e1b5"; +} +.icon-camera-frames:before { + content: "\e1b6"; +} +.icon-camera-front:before { + content: "\e1b7"; +} +.icon-camera-graph-1:before { + content: "\e1b8"; +} +.icon-camera-graph-2:before { + content: "\e1b9"; +} +.icon-camera-landscape:before { + content: "\e1ba"; +} +.icon-camera-lens-1:before { + content: "\e1bb"; +} +.icon-camera-lens-2:before { + content: "\e1bc"; +} +.icon-camera-light:before { + content: "\e1bd"; +} +.icon-camera-portrait:before { + content: "\e1be"; +} +.icon-camera-view:before { + content: "\e1bf"; +} +.icon-film-1:before { + content: "\e1c0"; +} +.icon-film-2:before { + content: "\e1c1"; +} +.icon-photo-1:before { + content: "\e1c2"; +} +.icon-photo-2:before { + content: "\e1c3"; +} +.icon-photo-frame:before { + content: "\e1c4"; +} +.icon-photos-1:before { + content: "\e1c5"; +} +.icon-photos-2:before { + content: "\e1c6"; +} +.icon-polaroid:before { + content: "\e1c7"; +} +.icon-signal-camera-1:before { + content: "\e1c8"; +} +.icon-signal-camera-2:before { + content: "\e1c9"; +} +.icon-user-photo:before { + content: "\e1ca"; +} +.icon-backward-1:before { + content: "\e1cb"; +} +.icon-dvd-player:before { + content: "\e1cc"; +} +.icon-eject-1:before { + content: "\e1cd"; +} +.icon-film-3:before { + content: "\e1ce"; +} +.icon-forward-1:before { + content: "\e1cf"; +} +.icon-handycam:before { + content: "\e1d0"; +} +.icon-movie-play-1:before { + content: "\e1d1"; +} +.icon-movie-play-2:before { + content: "\e1d2"; +} +.icon-movie-play-3:before { + content: "\e1d3"; +} +.icon-next-1:before { + content: "\e1d4"; +} +.icon-pause-1:before { + content: "\e1d5"; +} +.icon-play-1:before { + content: "\e1d6"; +} +.icon-player:before { + content: "\e1d7"; +} +.icon-previous-1:before { + content: "\e1d8"; +} +.icon-record-1:before { + content: "\e1d9"; +} +.icon-slate:before { + content: "\e1da"; +} +.icon-stop-1:before { + content: "\e1db"; +} +.icon-television:before { + content: "\e1dc"; +} +.icon-video-camera-1:before { + content: "\e1dd"; +} +.icon-video-camera-2:before { + content: "\e1de"; +} +.icon-backward-2:before { + content: "\e1df"; +} +.icon-cd:before { + content: "\e1e0"; +} +.icon-eject-2:before { + content: "\e1e1"; +} +.icon-equalizer-2:before { + content: "\e1e2"; +} +.icon-equalizer-3:before { + content: "\e1e3"; +} +.icon-forward-2:before { + content: "\e1e4"; +} +.icon-gramophone:before { + content: "\e1e5"; +} +.icon-gramophone-record-2:before { + content: "\e1e6"; +} +.icon-guitar:before { + content: "\e1e7"; +} +.icon-headphone-1:before { + content: "\e1e8"; +} +.icon-headphone-2:before { + content: "\e1e9"; +} +.icon-microphone-1:before { + content: "\e1ea"; +} +.icon-microphone-2:before { + content: "\e1eb"; +} +.icon-microphone-3:before { + content: "\e1ec"; +} +.icon-movie-play-4:before { + content: "\e1ed"; +} +.icon-music-note-1:before { + content: "\e1ee"; +} +.icon-music-note-2:before { + content: "\e1ef"; +} +.icon-music-note-3:before { + content: "\e1f0"; +} +.icon-music-note-4:before { + content: "\e1f1"; +} +.icon-next-2:before { + content: "\e1f2"; +} +.icon-notes-1:before { + content: "\e1f3"; +} +.icon-notes-2:before { + content: "\e1f4"; +} +.icon-pause-2:before { + content: "\e1f5"; +} +.icon-piano:before { + content: "\e1f6"; +} +.icon-play-2:before { + content: "\e1f7"; +} +.icon-playlist:before { + content: "\e1f8"; +} +.icon-previous-2:before { + content: "\e1f9"; +} +.icon-radio-1:before { + content: "\e1fa"; +} +.icon-radio-2:before { + content: "\e1fb"; +} +.icon-record-2:before { + content: "\e1fc"; +} +.icon-recorder:before { + content: "\e1fd"; +} +.icon-saxophone:before { + content: "\e1fe"; +} +.icon-speaker-1:before { + content: "\e1ff"; +} +.icon-speaker-2:before { + content: "\e200"; +} +.icon-speaker-3:before { + content: "\e201"; +} +.icon-stop-2:before { + content: "\e202"; +} +.icon-tape-1:before { + content: "\e203"; +} +.icon-trumpet:before { + content: "\e204"; +} +.icon-volume-down-1:before { + content: "\e205"; +} +.icon-volume-down-2:before { + content: "\e206"; +} +.icon-volume-loud-1:before { + content: "\e207"; +} +.icon-volume-loud-2:before { + content: "\e208"; +} +.icon-volume-low-1:before { + content: "\e209"; +} +.icon-volume-low-2:before { + content: "\e20a"; +} +.icon-volume-medium-1:before { + content: "\e20b"; +} +.icon-volume-medium-2:before { + content: "\e20c"; +} +.icon-volume-mute-1:before { + content: "\e20d"; +} +.icon-volume-mute-2:before { + content: "\e20e"; +} +.icon-volume-mute-3:before { + content: "\e20f"; +} +.icon-volume-up-1:before { + content: "\e210"; +} +.icon-volume-up-2:before { + content: "\e211"; +} +.icon-walkman:before { + content: "\e212"; +} +.icon-cloud:before { + content: "\e213"; +} +.icon-cloud-add:before { + content: "\e214"; +} +.icon-cloud-checked:before { + content: "\e215"; +} +.icon-cloud-delete:before { + content: "\e216"; +} +.icon-cloud-download:before { + content: "\e217"; +} +.icon-cloud-minus:before { + content: "\e218"; +} +.icon-cloud-refresh:before { + content: "\e219"; +} +.icon-cloud-sync:before { + content: "\e21a"; +} +.icon-cloud-upload:before { + content: "\e21b"; +} +.icon-download-1:before { + content: "\e21c"; +} +.icon-download-2:before { + content: "\e21d"; +} +.icon-download-3:before { + content: "\e21e"; +} +.icon-download-4:before { + content: "\e21f"; +} +.icon-download-5:before { + content: "\e220"; +} +.icon-download-6:before { + content: "\e221"; +} +.icon-download-7:before { + content: "\e222"; +} +.icon-download-8:before { + content: "\e223"; +} +.icon-download-9:before { + content: "\e224"; +} +.icon-download-10:before { + content: "\e225"; +} +.icon-download-11:before { + content: "\e226"; +} +.icon-download-12:before { + content: "\e227"; +} +.icon-download-13:before { + content: "\e228"; +} +.icon-download-14:before { + content: "\e229"; +} +.icon-download-15:before { + content: "\e22a"; +} +.icon-download-file:before { + content: "\e22b"; +} +.icon-download-folder:before { + content: "\e22c"; +} +.icon-goal-1:before { + content: "\e22d"; +} +.icon-goal-2:before { + content: "\e22e"; +} +.icon-transfer-1:before { + content: "\e22f"; +} +.icon-transfer-2:before { + content: "\e230"; +} +.icon-transfer-3:before { + content: "\e231"; +} +.icon-transfer-4:before { + content: "\e232"; +} +.icon-transfer-5:before { + content: "\e233"; +} +.icon-transfer-6:before { + content: "\e234"; +} +.icon-transfer-7:before { + content: "\e235"; +} +.icon-transfer-8:before { + content: "\e236"; +} +.icon-transfer-9:before { + content: "\e237"; +} +.icon-transfer-10:before { + content: "\e238"; +} +.icon-transfer-11:before { + content: "\e239"; +} +.icon-transfer-12:before { + content: "\e23a"; +} +.icon-upload-1:before { + content: "\e23b"; +} +.icon-upload-2:before { + content: "\e23c"; +} +.icon-upload-3:before { + content: "\e23d"; +} +.icon-upload-4:before { + content: "\e23e"; +} +.icon-upload-5:before { + content: "\e23f"; +} +.icon-upload-6:before { + content: "\e240"; +} +.icon-upload-7:before { + content: "\e241"; +} +.icon-upload-8:before { + content: "\e242"; +} +.icon-upload-9:before { + content: "\e243"; +} +.icon-upload-10:before { + content: "\e244"; +} +.icon-upload-11:before { + content: "\e245"; +} +.icon-upload-12:before { + content: "\e246"; +} +.icon-clipboard-1:before { + content: "\e247"; +} +.icon-clipboard-2:before { + content: "\e248"; +} +.icon-clipboard-3:before { + content: "\e249"; +} +.icon-clipboard-add:before { + content: "\e24a"; +} +.icon-clipboard-block:before { + content: "\e24b"; +} +.icon-clipboard-checked:before { + content: "\e24c"; +} +.icon-clipboard-delete:before { + content: "\e24d"; +} +.icon-clipboard-edit:before { + content: "\e24e"; +} +.icon-clipboard-minus:before { + content: "\e24f"; +} +.icon-document-1:before { + content: "\e250"; +} +.icon-document-2:before { + content: "\e251"; +} +.icon-file-1:before { + content: "\e252"; +} +.icon-file-2:before { + content: "\e253"; +} +.icon-file-add:before { + content: "\e254"; +} +.icon-file-attention:before { + content: "\e255"; +} +.icon-file-block:before { + content: "\e256"; +} +.icon-file-bookmark:before { + content: "\e257"; +} +.icon-file-checked:before { + content: "\e258"; +} +.icon-file-code:before { + content: "\e259"; +} +.icon-file-delete:before { + content: "\e25a"; +} +.icon-file-download:before { + content: "\e25b"; +} +.icon-file-edit:before { + content: "\e25c"; +} +.icon-file-favorite-1:before { + content: "\e25d"; +} +.icon-file-favorite-2:before { + content: "\e25e"; +} +.icon-file-graph-1:before { + content: "\e25f"; +} +.icon-file-graph-2:before { + content: "\e260"; +} +.icon-file-home:before { + content: "\e261"; +} +.icon-file-image-1:before { + content: "\e262"; +} +.icon-file-image-2:before { + content: "\e263"; +} +.icon-file-list:before { + content: "\e264"; +} +.icon-file-lock:before { + content: "\e265"; +} +.icon-file-media:before { + content: "\e266"; +} +.icon-file-minus:before { + content: "\e267"; +} +.icon-file-music:before { + content: "\e268"; +} +.icon-file-new:before { + content: "\e269"; +} +.icon-file-registry:before { + content: "\e26a"; +} +.icon-file-search:before { + content: "\e26b"; +} +.icon-file-setting:before { + content: "\e26c"; +} +.icon-file-sync:before { + content: "\e26d"; +} +.icon-file-table:before { + content: "\e26e"; +} +.icon-file-thumbnail:before { + content: "\e26f"; +} +.icon-file-time:before { + content: "\e270"; +} +.icon-file-transfer:before { + content: "\e271"; +} +.icon-file-upload:before { + content: "\e272"; +} +.icon-file-zip:before { + content: "\e273"; +} +.icon-files-1:before { + content: "\e274"; +} +.icon-files-2:before { + content: "\e275"; +} +.icon-files-3:before { + content: "\e276"; +} +.icon-files-4:before { + content: "\e277"; +} +.icon-files-5:before { + content: "\e278"; +} +.icon-files-6:before { + content: "\e279"; +} +.icon-hand-file-1:before { + content: "\e27a"; +} +.icon-hand-file-2:before { + content: "\e27b"; +} +.icon-note-paper-1:before { + content: "\e27c"; +} +.icon-note-paper-2:before { + content: "\e27d"; +} +.icon-note-paper-add:before { + content: "\e27e"; +} +.icon-note-paper-attention:before { + content: "\e27f"; +} +.icon-note-paper-block:before { + content: "\e280"; +} +.icon-note-paper-checked:before { + content: "\e281"; +} +.icon-note-paper-delete:before { + content: "\e282"; +} +.icon-note-paper-download:before { + content: "\e283"; +} +.icon-note-paper-edit:before { + content: "\e284"; +} +.icon-note-paper-favorite:before { + content: "\e285"; +} +.icon-note-paper-lock:before { + content: "\e286"; +} +.icon-note-paper-minus:before { + content: "\e287"; +} +.icon-note-paper-search:before { + content: "\e288"; +} +.icon-note-paper-sync:before { + content: "\e289"; +} +.icon-note-paper-upload:before { + content: "\e28a"; +} +.icon-print:before { + content: "\e28b"; +} +.icon-folder-1:before { + content: "\e28c"; +} +.icon-folder-2:before { + content: "\e28d"; +} +.icon-folder-3:before { + content: "\e28e"; +} +.icon-folder-4:before { + content: "\e28f"; +} +.icon-folder-add:before { + content: "\e290"; +} +.icon-folder-attention:before { + content: "\e291"; +} +.icon-folder-block:before { + content: "\e292"; +} +.icon-folder-bookmark:before { + content: "\e293"; +} +.icon-folder-checked:before { + content: "\e294"; +} +.icon-folder-code:before { + content: "\e295"; +} +.icon-folder-delete:before { + content: "\e296"; +} +.icon-folder-download:before { + content: "\e297"; +} +.icon-folder-edit:before { + content: "\e298"; +} +.icon-folder-favorite:before { + content: "\e299"; +} +.icon-folder-home:before { + content: "\e29a"; +} +.icon-folder-image:before { + content: "\e29b"; +} +.icon-folder-lock:before { + content: "\e29c"; +} +.icon-folder-media:before { + content: "\e29d"; +} +.icon-folder-minus:before { + content: "\e29e"; +} +.icon-folder-music:before { + content: "\e29f"; +} +.icon-folder-new:before { + content: "\e2a0"; +} +.icon-folder-search:before { + content: "\e2a1"; +} +.icon-folder-setting:before { + content: "\e2a2"; +} +.icon-folder-share-1:before { + content: "\e2a3"; +} +.icon-folder-share-2:before { + content: "\e2a4"; +} +.icon-folder-sync:before { + content: "\e2a5"; +} +.icon-folder-transfer:before { + content: "\e2a6"; +} +.icon-folder-upload:before { + content: "\e2a7"; +} +.icon-folder-zip:before { + content: "\e2a8"; +} +.icon-add-1:before { + content: "\e2a9"; +} +.icon-add-2:before { + content: "\e2aa"; +} +.icon-add-3:before { + content: "\e2ab"; +} +.icon-add-4:before { + content: "\e2ac"; +} +.icon-add-tag:before { + content: "\e2ad"; +} +.icon-arrow-1:before { + content: "\e2ae"; +} +.icon-arrow-2:before { + content: "\e2af"; +} +.icon-arrow-down-1:before { + content: "\e2b0"; +} +.icon-arrow-down-2:before { + content: "\e2b1"; +} +.icon-arrow-left-1:before { + content: "\e2b2"; +} +.icon-arrow-left-2:before { + content: "\e2b3"; +} +.icon-arrow-move-1:before { + content: "\e2b4"; +} +.icon-arrow-move-down:before { + content: "\e2b5"; +} +.icon-arrow-move-left:before { + content: "\e2b6"; +} +.icon-arrow-move-right:before { + content: "\e2b7"; +} +.icon-arrow-move-up:before { + content: "\e2b8"; +} +.icon-arrow-right-1:before { + content: "\e2b9"; +} +.icon-arrow-right-2:before { + content: "\e2ba"; +} +.icon-arrow-up-1:before { + content: "\e2bb"; +} +.icon-arrow-up-2:before { + content: "\e2bc"; +} +.icon-back:before { + content: "\e2bd"; +} +.icon-center-expand:before { + content: "\e2be"; +} +.icon-center-reduce:before { + content: "\e2bf"; +} +.icon-delete-1-1:before { + content: "\e2c0"; +} +.icon-delete-2-1:before { + content: "\e2c1"; +} +.icon-delete-3:before { + content: "\e2c2"; +} +.icon-delete-4:before { + content: "\e2c3"; +} +.icon-delete-tag:before { + content: "\e2c4"; +} +.icon-expand-horizontal:before { + content: "\e2c5"; +} +.icon-expand-vertical:before { + content: "\e2c6"; +} +.icon-forward-3:before { + content: "\e2c7"; +} +.icon-infinity:before { + content: "\e2c8"; +} +.icon-loading:before { + content: "\e2c9"; +} +.icon-log-out-1:before { + content: "\e2ca"; +} +.icon-log-out-2:before { + content: "\e2cb"; +} +.icon-loop-1:before { + content: "\e2cc"; +} +.icon-loop-2:before { + content: "\e2cd"; +} +.icon-loop-3:before { + content: "\e2ce"; +} +.icon-minus-1:before { + content: "\e2cf"; +} +.icon-minus-2:before { + content: "\e2d0"; +} +.icon-minus-3:before { + content: "\e2d1"; +} +.icon-minus-4:before { + content: "\e2d2"; +} +.icon-minus-tag:before { + content: "\e2d3"; +} +.icon-move-diagonal-1:before { + content: "\e2d4"; +} +.icon-move-diagonal-2:before { + content: "\e2d5"; +} +.icon-move-horizontal-1:before { + content: "\e2d6"; +} +.icon-move-horizontal-2:before { + content: "\e2d7"; +} +.icon-move-vertical-1:before { + content: "\e2d8"; +} +.icon-move-vertical-2:before { + content: "\e2d9"; +} +.icon-next-1-1:before { + content: "\e2da"; +} +.icon-next-2-1:before { + content: "\e2db"; +} +.icon-power-1-1:before { + content: "\e2dc"; +} +.icon-power-2-1:before { + content: "\e2dd"; +} +.icon-power-3:before { + content: "\e2de"; +} +.icon-power-4:before { + content: "\e2df"; +} +.icon-recycle:before { + content: "\e2e0"; +} +.icon-refresh:before { + content: "\e2e1"; +} +.icon-repeat:before { + content: "\e2e2"; +} +.icon-return:before { + content: "\e2e3"; +} +.icon-scale-all-1:before { + content: "\e2e4"; +} +.icon-scale-center:before { + content: "\e2e5"; +} +.icon-scale-horizontal-1:before { + content: "\e2e6"; +} +.icon-scale-horizontal-2:before { + content: "\e2e7"; +} +.icon-scale-reduce-1:before { + content: "\e2e8"; +} +.icon-scale-reduce-2:before { + content: "\e2e9"; +} +.icon-scale-reduce-3:before { + content: "\e2ea"; +} +.icon-scale-spread-1:before { + content: "\e2eb"; +} +.icon-scale-spread-2:before { + content: "\e2ec"; +} +.icon-scale-spread-3:before { + content: "\e2ed"; +} +.icon-scale-vertical-1:before { + content: "\e2ee"; +} +.icon-scale-vertical-2:before { + content: "\e2ef"; +} +.icon-scroll-horizontal-1:before { + content: "\e2f0"; +} +.icon-scroll-horizontal-2:before { + content: "\e2f1"; +} +.icon-scroll-omnidirectional-1:before { + content: "\e2f2"; +} +.icon-scroll-omnidirectional-2:before { + content: "\e2f3"; +} +.icon-scroll-vertical-1:before { + content: "\e2f4"; +} +.icon-scroll-vertical-2:before { + content: "\e2f5"; +} +.icon-shuffle:before { + content: "\e2f6"; +} +.icon-split:before { + content: "\e2f7"; +} +.icon-sync-1:before { + content: "\e2f8"; +} +.icon-sync-2:before { + content: "\e2f9"; +} +.icon-timer:before { + content: "\e2fa"; +} +.icon-transfer:before { + content: "\e2fb"; +} +.icon-transfer-1-1:before { + content: "\e2fc"; +} +.icon-check-1:before { + content: "\e2fd"; +} +.icon-check-2:before { + content: "\e2fe"; +} +.icon-check-3:before { + content: "\e2ff"; +} +.icon-check-box:before { + content: "\e300"; +} +.icon-check-bubble:before { + content: "\e301"; +} +.icon-check-circle-1:before { + content: "\e302"; +} +.icon-check-circle-2:before { + content: "\e303"; +} +.icon-check-list:before { + content: "\e304"; +} +.icon-check-shield:before { + content: "\e305"; +} +.icon-cross:before { + content: "\e306"; +} +.icon-cross-bubble:before { + content: "\e307"; +} +.icon-cross-shield:before { + content: "\e308"; +} +.icon-briefcase-1:before { + content: "\e309"; +} +.icon-brightness-high:before { + content: "\e30a"; +} +.icon-brightness-low:before { + content: "\e30b"; +} +.icon-hammer-1:before { + content: "\e30c"; +} +.icon-hammer-2:before { + content: "\e30d"; +} +.icon-pulse:before { + content: "\e30e"; +} +.icon-scale:before { + content: "\e30f"; +} +.icon-screw-driver:before { + content: "\e310"; +} +.icon-setting-adjustment:before { + content: "\e311"; +} +.icon-setting-gear:before { + content: "\e312"; +} +.icon-setting-gears-1:before { + content: "\e313"; +} +.icon-setting-gears-2:before { + content: "\e314"; +} +.icon-setting-wrenches:before { + content: "\e315"; +} +.icon-switch-1:before { + content: "\e316"; +} +.icon-switch-2:before { + content: "\e317"; +} +.icon-wrench:before { + content: "\e318"; +} +.icon-alarm-1:before { + content: "\e319"; +} +.icon-alarm-clock:before { + content: "\e31a"; +} +.icon-alarm-off:before { + content: "\e31b"; +} +.icon-alarm-snooze:before { + content: "\e31c"; +} +.icon-bell:before { + content: "\e31d"; +} +.icon-calendar-1:before { + content: "\e31e"; +} +.icon-calendar-2:before { + content: "\e31f"; +} +.icon-clock-1:before { + content: "\e320"; +} +.icon-clock-2:before { + content: "\e321"; +} +.icon-clock-3:before { + content: "\e322"; +} +.icon-hourglass-1:before { + content: "\e323"; +} +.icon-hourglass-2:before { + content: "\e324"; +} +.icon-timer-1:before { + content: "\e325"; +} +.icon-timer-3-quarter-1:before { + content: "\e326"; +} +.icon-timer-3-quarter-2:before { + content: "\e327"; +} +.icon-timer-full-1:before { + content: "\e328"; +} +.icon-timer-full-2:before { + content: "\e329"; +} +.icon-timer-half-1:before { + content: "\e32a"; +} +.icon-timer-half-2:before { + content: "\e32b"; +} +.icon-timer-half-3:before { + content: "\e32c"; +} +.icon-timer-half-4:before { + content: "\e32d"; +} +.icon-timer-quarter-1:before { + content: "\e32e"; +} +.icon-timer-quarter-2:before { + content: "\e32f"; +} +.icon-watch-1:before { + content: "\e330"; +} +.icon-watch-2:before { + content: "\e331"; +} +.icon-alert-1:before { + content: "\e332"; +} +.icon-alert-2:before { + content: "\e333"; +} +.icon-alert-3:before { + content: "\e334"; +} +.icon-information:before { + content: "\e335"; +} +.icon-nuclear-1:before { + content: "\e336"; +} +.icon-nuclear-2:before { + content: "\e337"; +} +.icon-question-mark:before { + content: "\e338"; +} +.icon-abacus:before { + content: "\e339"; +} +.icon-amex-card:before { + content: "\e33a"; +} +.icon-atm:before { + content: "\e33b"; +} +.icon-balance:before { + content: "\e33c"; +} +.icon-bank-1:before { + content: "\e33d"; +} +.icon-bank-2:before { + content: "\e33e"; +} +.icon-bank-note-1:before { + content: "\e33f"; +} +.icon-bank-note-2:before { + content: "\e340"; +} +.icon-bank-note-3:before { + content: "\e341"; +} +.icon-bitcoins:before { + content: "\e342"; +} +.icon-board:before { + content: "\e343"; +} +.icon-box-1:before { + content: "\e344"; +} +.icon-box-2:before { + content: "\e345"; +} +.icon-box-3:before { + content: "\e346"; +} +.icon-box-download:before { + content: "\e347"; +} +.icon-box-shipping:before { + content: "\e348"; +} +.icon-box-upload:before { + content: "\e349"; +} +.icon-business-chart-1:before { + content: "\e34a"; +} +.icon-business-chart-2:before { + content: "\e34b"; +} +.icon-calculator-1:before { + content: "\e34c"; +} +.icon-calculator-2:before { + content: "\e34d"; +} +.icon-calculator-3:before { + content: "\e34e"; +} +.icon-cash-register:before { + content: "\e34f"; +} +.icon-chart-board:before { + content: "\e350"; +} +.icon-chart-down:before { + content: "\e351"; +} +.icon-chart-up:before { + content: "\e352"; +} +.icon-check:before { + content: "\e353"; +} +.icon-coins-1:before { + content: "\e354"; +} +.icon-coins-2:before { + content: "\e355"; +} +.icon-court:before { + content: "\e356"; +} +.icon-credit-card:before { + content: "\e357"; +} +.icon-credit-card-lock:before { + content: "\e358"; +} +.icon-delivery:before { + content: "\e359"; +} +.icon-dollar-bag:before { + content: "\e35a"; +} +.icon-dollar-currency-1:before { + content: "\e35b"; +} +.icon-dollar-currency-2:before { + content: "\e35c"; +} +.icon-dollar-currency-3:before { + content: "\e35d"; +} +.icon-dollar-currency-4:before { + content: "\e35e"; +} +.icon-euro-bag:before { + content: "\e35f"; +} +.icon-euro-currency-1:before { + content: "\e360"; +} +.icon-euro-currency-2:before { + content: "\e361"; +} +.icon-euro-currency-3:before { + content: "\e362"; +} +.icon-euro-currency-4:before { + content: "\e363"; +} +.icon-forklift:before { + content: "\e364"; +} +.icon-hand-card:before { + content: "\e365"; +} +.icon-hand-coin:before { + content: "\e366"; +} +.icon-keynote:before { + content: "\e367"; +} +.icon-master-card:before { + content: "\e368"; +} +.icon-money:before { + content: "\e369"; +} +.icon-parking-meter:before { + content: "\e36a"; +} +.icon-percent-1:before { + content: "\e36b"; +} +.icon-percent-2:before { + content: "\e36c"; +} +.icon-percent-3:before { + content: "\e36d"; +} +.icon-percent-4:before { + content: "\e36e"; +} +.icon-percent-5:before { + content: "\e36f"; +} +.icon-percent-up:before { + content: "\e370"; +} +.icon-pie-chart-1:before { + content: "\e371"; +} +.icon-pie-chart-2:before { + content: "\e372"; +} +.icon-piggy-bank:before { + content: "\e373"; +} +.icon-pound-currency-1:before { + content: "\e374"; +} +.icon-pound-currency-2:before { + content: "\e375"; +} +.icon-pound-currency-3:before { + content: "\e376"; +} +.icon-pound-currency-4:before { + content: "\e377"; +} +.icon-safe-1:before { + content: "\e378"; +} +.icon-safe-2:before { + content: "\e379"; +} +.icon-shop:before { + content: "\e37a"; +} +.icon-sign:before { + content: "\e37b"; +} +.icon-trolley:before { + content: "\e37c"; +} +.icon-truck-1:before { + content: "\e37d"; +} +.icon-truck-2:before { + content: "\e37e"; +} +.icon-visa-card:before { + content: "\e37f"; +} +.icon-yen-currency-1:before { + content: "\e380"; +} +.icon-yen-currency-2:before { + content: "\e381"; +} +.icon-yen-currency-3:before { + content: "\e382"; +} +.icon-yen-currency-4:before { + content: "\e383"; +} +.icon-add-marker-1:before { + content: "\e384"; +} +.icon-add-marker-1-1:before { + content: "\e385"; +} +.icon-add-marker-2:before { + content: "\e386"; +} +.icon-add-marker-2-1:before { + content: "\e387"; +} +.icon-add-marker-3:before { + content: "\e388"; +} +.icon-compass-1:before { + content: "\e389"; +} +.icon-compass-2:before { + content: "\e38a"; +} +.icon-compass-3:before { + content: "\e38b"; +} +.icon-delete-marker-1:before { + content: "\e38c"; +} +.icon-delete-marker-1-1:before { + content: "\e38d"; +} +.icon-delete-marker-2:before { + content: "\e38e"; +} +.icon-delete-marker-2-1:before { + content: "\e38f"; +} +.icon-favorite-marker-1:before { + content: "\e390"; +} +.icon-favorite-marker-1-1:before { + content: "\e391"; +} +.icon-favorite-marker-2:before { + content: "\e392"; +} +.icon-favorite-marker-2-1:before { + content: "\e393"; +} +.icon-globe:before { + content: "\e394"; +} +.icon-location:before { + content: "\e395"; +} +.icon-map-1:before { + content: "\e396"; +} +.icon-map-location:before { + content: "\e397"; +} +.icon-map-marker-1:before { + content: "\e398"; +} +.icon-map-marker-1-1:before { + content: "\e399"; +} +.icon-map-marker-2:before { + content: "\e39a"; +} +.icon-map-marker-3:before { + content: "\e39b"; +} +.icon-map-marker-pin:before { + content: "\e39c"; +} +.icon-map-pin:before { + content: "\e39d"; +} +.icon-marker-1:before { + content: "\e39e"; +} +.icon-marker-1-1:before { + content: "\e39f"; +} +.icon-marker-2:before { + content: "\e3a0"; +} +.icon-marker-2-1:before { + content: "\e3a1"; +} +.icon-marker-pin-1:before { + content: "\e3a2"; +} +.icon-marker-pin-2:before { + content: "\e3a3"; +} +.icon-marker-pin-location:before { + content: "\e3a4"; +} +.icon-minus-marker-1:before { + content: "\e3a5"; +} +.icon-minus-marker-1-1:before { + content: "\e3a6"; +} +.icon-minus-marker-2:before { + content: "\e3a7"; +} +.icon-minus-marker-2-1:before { + content: "\e3a8"; +} +.icon-minus-marker-3:before { + content: "\e3a9"; +} +.icon-anchor:before { + content: "\e3aa"; +} +.icon-bank:before { + content: "\e3ab"; +} +.icon-beach:before { + content: "\e3ac"; +} +.icon-boat:before { + content: "\e3ad"; +} +.icon-building-1:before { + content: "\e3ae"; +} +.icon-building-2:before { + content: "\e3af"; +} +.icon-building-3:before { + content: "\e3b0"; +} +.icon-buildings-1:before { + content: "\e3b1"; +} +.icon-buildings-2:before { + content: "\e3b2"; +} +.icon-buildings-3:before { + content: "\e3b3"; +} +.icon-buildings-4:before { + content: "\e3b4"; +} +.icon-castle:before { + content: "\e3b5"; +} +.icon-column:before { + content: "\e3b6"; +} +.icon-direction-sign:before { + content: "\e3b7"; +} +.icon-factory:before { + content: "\e3b8"; +} +.icon-fence:before { + content: "\e3b9"; +} +.icon-garage:before { + content: "\e3ba"; +} +.icon-globe-1:before { + content: "\e3bb"; +} +.icon-globe-2:before { + content: "\e3bc"; +} +.icon-house-1:before { + content: "\e3bd"; +} +.icon-house-2:before { + content: "\e3be"; +} +.icon-house-3:before { + content: "\e3bf"; +} +.icon-house-4:before { + content: "\e3c0"; +} +.icon-library:before { + content: "\e3c1"; +} +.icon-light-house:before { + content: "\e3c2"; +} +.icon-pisa:before { + content: "\e3c3"; +} +.icon-skyscraper:before { + content: "\e3c4"; +} +.icon-temple:before { + content: "\e3c5"; +} +.icon-treasure-map:before { + content: "\e3c6"; +} +.icon-tree:before { + content: "\e3c7"; +} +.icon-tree-pine:before { + content: "\e3c8"; +} +.icon-attention:before { + content: "\e3c9"; +} +.icon-bug-1:before { + content: "\e3ca"; +} +.icon-bug-2:before { + content: "\e3cb"; +} +.icon-css3:before { + content: "\e3cc"; +} +.icon-firewall:before { + content: "\e3cd"; +} +.icon-html5:before { + content: "\e3ce"; +} +.icon-plugins-1:before { + content: "\e3cf"; +} +.icon-plugins-2:before { + content: "\e3d0"; +} +.icon-script:before { + content: "\e3d1"; +} +.icon-new-window:before { + content: "\e3d2"; +} +.icon-window-1:before { + content: "\e3d3"; +} +.icon-window-2:before { + content: "\e3d4"; +} +.icon-window-3:before { + content: "\e3d5"; +} +.icon-window-add:before { + content: "\e3d6"; +} +.icon-window-alert:before { + content: "\e3d7"; +} +.icon-window-check:before { + content: "\e3d8"; +} +.icon-window-code-1:before { + content: "\e3d9"; +} +.icon-window-code-2:before { + content: "\e3da"; +} +.icon-window-code-3:before { + content: "\e3db"; +} +.icon-window-column:before { + content: "\e3dc"; +} +.icon-window-delete:before { + content: "\e3dd"; +} +.icon-window-denied:before { + content: "\e3de"; +} +.icon-window-download-1:before { + content: "\e3df"; +} +.icon-window-download-2:before { + content: "\e3e0"; +} +.icon-window-edit:before { + content: "\e3e1"; +} +.icon-window-favorite:before { + content: "\e3e2"; +} +.icon-window-graph-1:before { + content: "\e3e3"; +} +.icon-window-graph-2:before { + content: "\e3e4"; +} +.icon-window-hand:before { + content: "\e3e5"; +} +.icon-window-home:before { + content: "\e3e6"; +} +.icon-window-like:before { + content: "\e3e7"; +} +.icon-window-list-1:before { + content: "\e3e8"; +} +.icon-window-list-2:before { + content: "\e3e9"; +} +.icon-window-lock:before { + content: "\e3ea"; +} +.icon-window-minimize:before { + content: "\e3eb"; +} +.icon-window-minus:before { + content: "\e3ec"; +} +.icon-window-refresh:before { + content: "\e3ed"; +} +.icon-window-register:before { + content: "\e3ee"; +} +.icon-window-search:before { + content: "\e3ef"; +} +.icon-window-selection:before { + content: "\e3f0"; +} +.icon-window-setting:before { + content: "\e3f1"; +} +.icon-window-sync:before { + content: "\e3f2"; +} +.icon-window-thumbnails-1:before { + content: "\e3f3"; +} +.icon-window-thumbnails-2:before { + content: "\e3f4"; +} +.icon-window-time:before { + content: "\e3f5"; +} +.icon-window-upload-1:before { + content: "\e3f6"; +} +.icon-window-upload-2:before { + content: "\e3f7"; +} +.icon-windows-selection:before { + content: "\e3f8"; +} +.icon-database:before { + content: "\e3f9"; +} +.icon-database-alert:before { + content: "\e3fa"; +} +.icon-database-block:before { + content: "\e3fb"; +} +.icon-database-check:before { + content: "\e3fc"; +} +.icon-database-delete:before { + content: "\e3fd"; +} +.icon-database-download:before { + content: "\e3fe"; +} +.icon-database-edit:before { + content: "\e3ff"; +} +.icon-database-lock:before { + content: "\e400"; +} +.icon-database-minus:before { + content: "\e401"; +} +.icon-database-network:before { + content: "\e402"; +} +.icon-database-plus:before { + content: "\e403"; +} +.icon-database-refresh:before { + content: "\e404"; +} +.icon-database-search:before { + content: "\e405"; +} +.icon-database-setting:before { + content: "\e406"; +} +.icon-database-sync:before { + content: "\e407"; +} +.icon-database-time:before { + content: "\e408"; +} +.icon-database-upload:before { + content: "\e409"; +} +.icon-battery-charging:before { + content: "\e40a"; +} +.icon-battery-full:before { + content: "\e40b"; +} +.icon-battery-high:before { + content: "\e40c"; +} +.icon-battery-low:before { + content: "\e40d"; +} +.icon-battery-medium:before { + content: "\e40e"; +} +.icon-cd-1:before { + content: "\e40f"; +} +.icon-cd-2:before { + content: "\e410"; +} +.icon-chip:before { + content: "\e411"; +} +.icon-computer:before { + content: "\e412"; +} +.icon-disc:before { + content: "\e413"; +} +.icon-filter:before { + content: "\e414"; +} +.icon-floppy-disk:before { + content: "\e415"; +} +.icon-gameboy:before { + content: "\e416"; +} +.icon-harddisk-1:before { + content: "\e417"; +} +.icon-harddisk-2:before { + content: "\e418"; +} +.icon-imac:before { + content: "\e419"; +} +.icon-ipad-1:before { + content: "\e41a"; +} +.icon-ipad-2:before { + content: "\e41b"; +} +.icon-ipod:before { + content: "\e41c"; +} +.icon-joystick-1:before { + content: "\e41d"; +} +.icon-joystick-2:before { + content: "\e41e"; +} +.icon-joystick-3:before { + content: "\e41f"; +} +.icon-keyboard-1:before { + content: "\e420"; +} +.icon-keyboard-2:before { + content: "\e421"; +} +.icon-kindle-1:before { + content: "\e422"; +} +.icon-kindle-2:before { + content: "\e423"; +} +.icon-laptop-1:before { + content: "\e424"; +} +.icon-laptop-2:before { + content: "\e425"; +} +.icon-memory-card:before { + content: "\e426"; +} +.icon-mobile-phone:before { + content: "\e427"; +} +.icon-mouse-1:before { + content: "\e428"; +} +.icon-mouse-2:before { + content: "\e429"; +} +.icon-mp3player:before { + content: "\e42a"; +} +.icon-plug-1:before { + content: "\e42b"; +} +.icon-plug-2:before { + content: "\e42c"; +} +.icon-plug-slot:before { + content: "\e42d"; +} +.icon-printer:before { + content: "\e42e"; +} +.icon-projector:before { + content: "\e42f"; +} +.icon-remote:before { + content: "\e430"; +} +.icon-router:before { + content: "\e431"; +} +.icon-screen-1:before { + content: "\e432"; +} +.icon-screen-2:before { + content: "\e433"; +} +.icon-screen-3:before { + content: "\e434"; +} +.icon-screen-4:before { + content: "\e435"; +} +.icon-smartphone-1:before { + content: "\e436"; +} +.icon-television-1:before { + content: "\e437"; +} +.icon-typewriter-1:before { + content: "\e438"; +} +.icon-typewriter-2:before { + content: "\e439"; +} +.icon-usb-1:before { + content: "\e43a"; +} +.icon-usb-2:before { + content: "\e43b"; +} +.icon-webcam:before { + content: "\e43c"; +} +.icon-wireless-router-1:before { + content: "\e43d"; +} +.icon-wireless-router-2:before { + content: "\e43e"; +} +.icon-bluetooth:before { + content: "\e43f"; +} +.icon-ethernet:before { + content: "\e440"; +} +.icon-ethernet-slot:before { + content: "\e441"; +} +.icon-firewire-1:before { + content: "\e442"; +} +.icon-firewire-2:before { + content: "\e443"; +} +.icon-network-1:before { + content: "\e444"; +} +.icon-network-2:before { + content: "\e445"; +} +.icon-server-1:before { + content: "\e446"; +} +.icon-server-2:before { + content: "\e447"; +} +.icon-server-3:before { + content: "\e448"; +} +.icon-usb:before { + content: "\e449"; +} +.icon-wireless-signal:before { + content: "\e44a"; +} +.icon-book-1:before { + content: "\e44b"; +} +.icon-book-2:before { + content: "\e44c"; +} +.icon-book-3:before { + content: "\e44d"; +} +.icon-book-4:before { + content: "\e44e"; +} +.icon-book-5:before { + content: "\e44f"; +} +.icon-book-6:before { + content: "\e450"; +} +.icon-book-7:before { + content: "\e451"; +} +.icon-book-8:before { + content: "\e452"; +} +.icon-book-download-1:before { + content: "\e453"; +} +.icon-book-download-2:before { + content: "\e454"; +} +.icon-book-favorite-1:before { + content: "\e455"; +} +.icon-book-favorite-2:before { + content: "\e456"; +} +.icon-bookmark-1-1:before { + content: "\e457"; +} +.icon-bookmark-2-1:before { + content: "\e458"; +} +.icon-bookmark-3-1:before { + content: "\e459"; +} +.icon-bookmark-4-1:before { + content: "\e45a"; +} +.icon-books-1:before { + content: "\e45b"; +} +.icon-books-2:before { + content: "\e45c"; +} +.icon-books-3:before { + content: "\e45d"; +} +.icon-briefcase-2:before { + content: "\e45e"; +} +.icon-contact-book-1:before { + content: "\e45f"; +} +.icon-contact-book-2:before { + content: "\e460"; +} +.icon-contact-book-3:before { + content: "\e461"; +} +.icon-contact-book-4:before { + content: "\e462"; +} +.icon-copyright:before { + content: "\e463"; +} +.icon-creative-commons:before { + content: "\e464"; +} +.icon-cube:before { + content: "\e465"; +} +.icon-data-filter:before { + content: "\e466"; +} +.icon-document-box-1:before { + content: "\e467"; +} +.icon-document-box-2:before { + content: "\e468"; +} +.icon-document-box-3:before { + content: "\e469"; +} +.icon-drawer-1:before { + content: "\e46a"; +} +.icon-drawer-2:before { + content: "\e46b"; +} +.icon-drawer-3:before { + content: "\e46c"; +} +.icon-envelope:before { + content: "\e46d"; +} +.icon-file:before { + content: "\e46e"; +} +.icon-files:before { + content: "\e46f"; +} +.icon-filter-1:before { + content: "\e470"; +} +.icon-filter-2:before { + content: "\e471"; +} +.icon-layers-1:before { + content: "\e472"; +} +.icon-list-1:before { + content: "\e473"; +} +.icon-list-2:before { + content: "\e474"; +} +.icon-newspaper-1:before { + content: "\e475"; +} +.icon-newspaper-2:before { + content: "\e476"; +} +.icon-registry-1:before { + content: "\e477"; +} +.icon-registry-2:before { + content: "\e478"; +} +.icon-shield-1:before { + content: "\e479"; +} +.icon-shield-2:before { + content: "\e47a"; +} +.icon-shield-3:before { + content: "\e47b"; +} +.icon-sketchbook:before { + content: "\e47c"; +} +.icon-sound-book:before { + content: "\e47d"; +} +.icon-thumbnails-1:before { + content: "\e47e"; +} +.icon-thumbnails-2:before { + content: "\e47f"; +} +.icon-graph:before { + content: "\e480"; +} +.icon-hierarchy-1:before { + content: "\e481"; +} +.icon-hierarchy-2:before { + content: "\e482"; +} +.icon-hierarchy-3:before { + content: "\e483"; +} +.icon-hierarchy-4:before { + content: "\e484"; +} +.icon-hierarchy-5:before { + content: "\e485"; +} +.icon-hierarchy-6:before { + content: "\e486"; +} +.icon-hierarchy-7:before { + content: "\e487"; +} +.icon-network-1-1:before { + content: "\e488"; +} +.icon-network-2-1:before { + content: "\e489"; +} +.icon-backpack:before { + content: "\e48a"; +} +.icon-balance-1:before { + content: "\e48b"; +} +.icon-bed:before { + content: "\e48c"; +} +.icon-bench:before { + content: "\e48d"; +} +.icon-bomb-1:before { + content: "\e48e"; +} +.icon-bricks:before { + content: "\e48f"; +} +.icon-bullets:before { + content: "\e490"; +} +.icon-buoy:before { + content: "\e491"; +} +.icon-campfire:before { + content: "\e492"; +} +.icon-can:before { + content: "\e493"; +} +.icon-candle:before { + content: "\e494"; +} +.icon-canon:before { + content: "\e495"; +} +.icon-cctv-1:before { + content: "\e496"; +} +.icon-cctv-2:before { + content: "\e497"; +} +.icon-chair:before { + content: "\e498"; +} +.icon-chair-director:before { + content: "\e499"; +} +.icon-cigarette:before { + content: "\e49a"; +} +.icon-construction-sign:before { + content: "\e49b"; +} +.icon-diamond:before { + content: "\e49c"; +} +.icon-disabled:before { + content: "\e49d"; +} +.icon-door:before { + content: "\e49e"; +} +.icon-drawer:before { + content: "\e49f"; +} +.icon-driller:before { + content: "\e4a0"; +} +.icon-dumbbells:before { + content: "\e4a1"; +} +.icon-fire-extinguisher:before { + content: "\e4a2"; +} +.icon-flashlight:before { + content: "\e4a3"; +} +.icon-gas-station:before { + content: "\e4a4"; +} +.icon-gun:before { + content: "\e4a5"; +} +.icon-lamp-1:before { + content: "\e4a6"; +} +.icon-lamp-2:before { + content: "\e4a7"; +} +.icon-lamp-3:before { + content: "\e4a8"; +} +.icon-lamp-4:before { + content: "\e4a9"; +} +.icon-lightbulb-1:before { + content: "\e4aa"; +} +.icon-lightbulb-2:before { + content: "\e4ab"; +} +.icon-measuring-tape:before { + content: "\e4ac"; +} +.icon-mine-cart:before { + content: "\e4ad"; +} +.icon-missile:before { + content: "\e4ae"; +} +.icon-ring:before { + content: "\e4af"; +} +.icon-scale-1:before { + content: "\e4b0"; +} +.icon-shovel:before { + content: "\e4b1"; +} +.icon-smoke-no:before { + content: "\e4b2"; +} +.icon-sofa-1:before { + content: "\e4b3"; +} +.icon-sofa-2:before { + content: "\e4b4"; +} +.icon-sofa-3:before { + content: "\e4b5"; +} +.icon-target:before { + content: "\e4b6"; +} +.icon-torch:before { + content: "\e4b7"; +} +.icon-traffic-cone:before { + content: "\e4b8"; +} +.icon-traffic-light-1:before { + content: "\e4b9"; +} +.icon-traffic-light-2:before { + content: "\e4ba"; +} +.icon-treasure-chest-1:before { + content: "\e4bb"; +} +.icon-treasure-chest-2:before { + content: "\e4bc"; +} +.icon-trowel:before { + content: "\e4bd"; +} +.icon-watering-can:before { + content: "\e4be"; +} +.icon-weigh:before { + content: "\e4bf"; +} +.icon-36-text-arrow-redo:before { + content: "\e4c0"; +} +.icon-academic-cap:before { + content: "\e4c1"; +} +.icon-baseball-helmet:before { + content: "\e4c2"; +} +.icon-beanie:before { + content: "\e4c3"; +} +.icon-bike-helmet:before { + content: "\e4c4"; +} +.icon-bow:before { + content: "\e4c5"; +} +.icon-cap:before { + content: "\e4c6"; +} +.icon-chaplin:before { + content: "\e4c7"; +} +.icon-chef-hat:before { + content: "\e4c8"; +} +.icon-cloth-hanger:before { + content: "\e4c9"; +} +.icon-fins:before { + content: "\e4ca"; +} +.icon-football-helmet:before { + content: "\e4cb"; +} +.icon-glasses:before { + content: "\e4cc"; +} +.icon-glasses-1:before { + content: "\e4cd"; +} +.icon-glasses-2:before { + content: "\e4ce"; +} +.icon-magician-hat:before { + content: "\e4cf"; +} +.icon-monocle-1:before { + content: "\e4d0"; +} +.icon-monocle-2:before { + content: "\e4d1"; +} +.icon-necktie:before { + content: "\e4d2"; +} +.icon-safety-helmet:before { + content: "\e4d3"; +} +.icon-scuba-tank:before { + content: "\e4d4"; +} +.icon-shirt-1:before { + content: "\e4d5"; +} +.icon-shirt-2:before { + content: "\e4d6"; +} +.icon-shirt-3:before { + content: "\e4d7"; +} +.icon-sneakers:before { + content: "\e4d8"; +} +.icon-snorkel:before { + content: "\e4d9"; +} +.icon-sombrero:before { + content: "\e4da"; +} +.icon-sunglasses:before { + content: "\e4db"; +} +.icon-tall-hat:before { + content: "\e4dc"; +} +.icon-trousers:before { + content: "\e4dd"; +} +.icon-walking-stick:before { + content: "\e4de"; +} +.icon-arrow-undo:before { + content: "\e4df"; +} +.icon-bold:before { + content: "\e4e0"; +} +.icon-columns:before { + content: "\e4e1"; +} +.icon-eraser:before { + content: "\e4e2"; +} +.icon-font-color:before { + content: "\e4e3"; +} +.icon-html:before { + content: "\e4e4"; +} +.icon-italic:before { + content: "\e4e5"; +} +.icon-list-1-1:before { + content: "\e4e6"; +} +.icon-list-2-1:before { + content: "\e4e7"; +} +.icon-list-3:before { + content: "\e4e8"; +} +.icon-list-4:before { + content: "\e4e9"; +} +.icon-paragraph:before { + content: "\e4ea"; +} +.icon-paste:before { + content: "\e4eb"; +} +.icon-print-preview:before { + content: "\e4ec"; +} +.icon-quote:before { + content: "\e4ed"; +} +.icon-strikethrough:before { + content: "\e4ee"; +} +.icon-text:before { + content: "\e4ef"; +} +.icon-text-wrapping-1:before { + content: "\e4f0"; +} +.icon-text-wrapping-2:before { + content: "\e4f1"; +} +.icon-text-wrapping-3:before { + content: "\e4f2"; +} +.icon-underline:before { + content: "\e4f3"; +} +.icon-align-center:before { + content: "\e4f4"; +} +.icon-align-left:before { + content: "\e4f5"; +} +.icon-align-right:before { + content: "\e4f6"; +} +.icon-all-caps:before { + content: "\e4f7"; +} +.icon-arrange-2-1:before { + content: "\e4f8"; +} +.icon-arrange-2-2:before { + content: "\e4f9"; +} +.icon-arrange-2-3:before { + content: "\e4fa"; +} +.icon-arrange-2-4:before { + content: "\e4fb"; +} +.icon-arrange-3-1:before { + content: "\e4fc"; +} +.icon-arrange-3-2:before { + content: "\e4fd"; +} +.icon-arrange-3-3:before { + content: "\e4fe"; +} +.icon-arrange-3-4:before { + content: "\e4ff"; +} +.icon-arrange-3-5:before { + content: "\e500"; +} +.icon-arrange-4-1:before { + content: "\e501"; +} +.icon-arrange-4-2:before { + content: "\e502"; +} +.icon-arrange-4-3:before { + content: "\e503"; +} +.icon-arrange-5:before { + content: "\e504"; +} +.icon-consolidate-all:before { + content: "\e505"; +} +.icon-decrease-indent-1:before { + content: "\e506"; +} +.icon-decrease-indent-2:before { + content: "\e507"; +} +.icon-horizontal-page:before { + content: "\e508"; +} +.icon-increase-indent-1:before { + content: "\e509"; +} +.icon-increase-indent-2:before { + content: "\e50a"; +} +.icon-justify:before { + content: "\e50b"; +} +.icon-leading-1:before { + content: "\e50c"; +} +.icon-leading-2:before { + content: "\e50d"; +} +.icon-left-indent:before { + content: "\e50e"; +} +.icon-right-indent:before { + content: "\e50f"; +} +.icon-small-caps:before { + content: "\e510"; +} +.icon-vertical-page:before { + content: "\e511"; +} +.icon-alt-mac:before { + content: "\e512"; +} +.icon-alt-windows:before { + content: "\e513"; +} +.icon-arrow-down:before { + content: "\e514"; +} +.icon-arrow-down-left:before { + content: "\e515"; +} +.icon-arrow-down-right:before { + content: "\e516"; +} +.icon-arrow-left:before { + content: "\e517"; +} +.icon-arrow-right:before { + content: "\e518"; +} +.icon-arrow-up:before { + content: "\e519"; +} +.icon-arrow-up-left:before { + content: "\e51a"; +} +.icon-arrow-up-right:before { + content: "\e51b"; +} +.icon-asterisk-1:before { + content: "\e51c"; +} +.icon-asterisk-2:before { + content: "\e51d"; +} +.icon-back-tab-1:before { + content: "\e51e"; +} +.icon-back-tab-2:before { + content: "\e51f"; +} +.icon-backward-delete:before { + content: "\e520"; +} +.icon-blank:before { + content: "\e521"; +} +.icon-eject:before { + content: "\e522"; +} +.icon-enter-1:before { + content: "\e523"; +} +.icon-enter-2:before { + content: "\e524"; +} +.icon-escape:before { + content: "\e525"; +} +.icon-page-down:before { + content: "\e526"; +} +.icon-page-up:before { + content: "\e527"; +} +.icon-return-1:before { + content: "\e528"; +} +.icon-shift-1:before { + content: "\e529"; +} +.icon-shift-2:before { + content: "\e52a"; +} +.icon-tab:before { + content: "\e52b"; +} +.icon-apple:before { + content: "\e52c"; +} +.icon-beer:before { + content: "\e52d"; +} +.icon-boil:before { + content: "\e52e"; +} +.icon-bottle-1:before { + content: "\e52f"; +} +.icon-bottle-2:before { + content: "\e530"; +} +.icon-bottle-3:before { + content: "\e531"; +} +.icon-bottle-4:before { + content: "\e532"; +} +.icon-bread:before { + content: "\e533"; +} +.icon-burger-1:before { + content: "\e534"; +} +.icon-burger-2:before { + content: "\e535"; +} +.icon-cake-1:before { + content: "\e536"; +} +.icon-cake-2:before { + content: "\e537"; +} +.icon-champagne:before { + content: "\e538"; +} +.icon-cheese:before { + content: "\e539"; +} +.icon-cocktail:before { + content: "\e53a"; +} +.icon-cocktail-1:before { + content: "\e53b"; +} +.icon-cocktail-2:before { + content: "\e53c"; +} +.icon-coffee-pot:before { + content: "\e53d"; +} +.icon-cup1:before { + content: "\e53e"; +} +.icon-cup-2:before { + content: "\e53f"; +} +.icon-deep-fry:before { + content: "\e540"; +} +.icon-energy-drink:before { + content: "\e541"; +} +.icon-espresso-machine:before { + content: "\e542"; +} +.icon-food-dome:before { + content: "\e543"; +} +.icon-fork-and-knife:before { + content: "\e544"; +} +.icon-fork-and-spoon:before { + content: "\e545"; +} +.icon-grape:before { + content: "\e546"; +} +.icon-grater:before { + content: "\e547"; +} +.icon-grill:before { + content: "\e548"; +} +.icon-hot-drinks-glass:before { + content: "\e549"; +} +.icon-hotdog:before { + content: "\e54a"; +} +.icon-ice-cream-1:before { + content: "\e54b"; +} +.icon-ice-cream-2:before { + content: "\e54c"; +} +.icon-ice-cream-3:before { + content: "\e54d"; +} +.icon-ice-drinks-galss:before { + content: "\e54e"; +} +.icon-juicer:before { + content: "\e54f"; +} +.icon-kitchen-timer:before { + content: "\e550"; +} +.icon-milk:before { + content: "\e551"; +} +.icon-orange:before { + content: "\e552"; +} +.icon-oven:before { + content: "\e553"; +} +.icon-pan-fry:before { + content: "\e554"; +} +.icon-pepper-salt:before { + content: "\e555"; +} +.icon-pizza:before { + content: "\e556"; +} +.icon-popcorn:before { + content: "\e557"; +} +.icon-serving:before { + content: "\e558"; +} +.icon-soda:before { + content: "\e559"; +} +.icon-soda-can-1:before { + content: "\e55a"; +} +.icon-soda-can-2:before { + content: "\e55b"; +} +.icon-steam:before { + content: "\e55c"; +} +.icon-tea-pot:before { + content: "\e55d"; +} +.icon-thermometer-high:before { + content: "\e55e"; +} +.icon-thermometer-low:before { + content: "\e55f"; +} +.icon-thermometer-medium:before { + content: "\e560"; +} +.icon-water:before { + content: "\e561"; +} +.icon-wine:before { + content: "\e562"; +} +.icon-ambulance:before { + content: "\e563"; +} +.icon-beaker-1:before { + content: "\e564"; +} +.icon-beaker-2:before { + content: "\e565"; +} +.icon-blood:before { + content: "\e566"; +} +.icon-drug:before { + content: "\e567"; +} +.icon-first-aid:before { + content: "\e568"; +} +.icon-hashish:before { + content: "\e569"; +} +.icon-heartpulse:before { + content: "\e56a"; +} +.icon-hospital-1:before { + content: "\e56b"; +} +.icon-hospital-2:before { + content: "\e56c"; +} +.icon-hospital-sign-1:before { + content: "\e56d"; +} +.icon-hospital-sign-2:before { + content: "\e56e"; +} +.icon-hospital-sign-3:before { + content: "\e56f"; +} +.icon-medicine:before { + content: "\e570"; +} +.icon-microscope:before { + content: "\e571"; +} +.icon-mortar-and-pestle:before { + content: "\e572"; +} +.icon-plaster:before { + content: "\e573"; +} +.icon-pulse-graph-1:before { + content: "\e574"; +} +.icon-pulse-graph-2:before { + content: "\e575"; +} +.icon-pulse-graph-3:before { + content: "\e576"; +} +.icon-red-cross:before { + content: "\e577"; +} +.icon-stethoscope:before { + content: "\e578"; +} +.icon-syringe:before { + content: "\e579"; +} +.icon-yin-yang:before { + content: "\e57a"; +} +.icon-balloon:before { + content: "\e57b"; +} +.icon-briefcase-lock:before { + content: "\e57c"; +} +.icon-card:before { + content: "\e57d"; +} +.icon-cards:before { + content: "\e57e"; +} +.icon-cards-2:before { + content: "\e57f"; +} +.icon-curtain:before { + content: "\e580"; +} +.icon-dice-1:before { + content: "\e581"; +} +.icon-dice-2:before { + content: "\e582"; +} +.icon-happy-smiley:before { + content: "\e583"; +} +.icon-pacman:before { + content: "\e584"; +} +.icon-pacman-ghost:before { + content: "\e585"; +} +.icon-sad-smiley:before { + content: "\e586"; +} +.icon-sign-1:before { + content: "\e587"; +} +.icon-smileys:before { + content: "\e588"; +} +.icon-suitcase-1:before { + content: "\e589"; +} +.icon-suitcase-2:before { + content: "\e58a"; +} +.icon-tetris:before { + content: "\e58b"; +} +.icon-ticket-1:before { + content: "\e58c"; +} +.icon-ticket-2:before { + content: "\e58d"; +} +.icon-ticket-3:before { + content: "\e58e"; +} +.icon-virus:before { + content: "\e58f"; +} +.icon-cloud-1:before { + content: "\e590"; +} +.icon-cloud-lightning:before { + content: "\e591"; +} +.icon-clouds:before { + content: "\e592"; +} +.icon-first-quarter-moon:before { + content: "\e593"; +} +.icon-full-moon:before { + content: "\e594"; +} +.icon-hail:before { + content: "\e595"; +} +.icon-heavy-rain:before { + content: "\e596"; +} +.icon-moon-cloud:before { + content: "\e597"; +} +.icon-rain:before { + content: "\e598"; +} +.icon-rain-lightning:before { + content: "\e599"; +} +.icon-snow:before { + content: "\e59a"; +} +.icon-sun:before { + content: "\e59b"; +} +.icon-sun-cloud:before { + content: "\e59c"; +} +.icon-thermometer:before { + content: "\e59d"; +} +.icon-third-quarter-moon:before { + content: "\e59e"; +} +.icon-umbrella:before { + content: "\e59f"; +} +.icon-waning-crescent-moon:before { + content: "\e5a0"; +} +.icon-waning-gibbous-moon:before { + content: "\e5a1"; +} +.icon-waxing-crescent-moon:before { + content: "\e5a2"; +} +.icon-waxing-gibbous-moon:before { + content: "\e5a3"; +} +.icon-bicycle:before { + content: "\e5a4"; +} +.icon-bus-1:before { + content: "\e5a5"; +} +.icon-bus-2:before { + content: "\e5a6"; +} +.icon-car-1:before { + content: "\e5a7"; +} +.icon-car-2:before { + content: "\e5a8"; +} +.icon-car-3:before { + content: "\e5a9"; +} +.icon-car-4:before { + content: "\e5aa"; +} +.icon-helicopter:before { + content: "\e5ab"; +} +.icon-mountain-bike:before { + content: "\e5ac"; +} +.icon-pickup:before { + content: "\e5ad"; +} +.icon-plane-1:before { + content: "\e5ae"; +} +.icon-plane-2:before { + content: "\e5af"; +} +.icon-plane-landing:before { + content: "\e5b0"; +} +.icon-plane-takeoff:before { + content: "\e5b1"; +} +.icon-road:before { + content: "\e5b2"; +} +.icon-road-bike:before { + content: "\e5b3"; +} +.icon-rocket:before { + content: "\e5b4"; +} +.icon-scooter:before { + content: "\e5b5"; +} +.icon-ship:before { + content: "\e5b6"; +} +.icon-train:before { + content: "\e5b7"; +} +.icon-tram:before { + content: "\e5b8"; +} +.icon-cactus:before { + content: "\e5b9"; +} +.icon-clover:before { + content: "\e5ba"; +} +.icon-flower:before { + content: "\e5bb"; +} +.icon-hand-eco:before { + content: "\e5bc"; +} +.icon-hand-globe:before { + content: "\e5bd"; +} +.icon-leaf:before { + content: "\e5be"; +} +.icon-light-eco:before { + content: "\e5bf"; +} +.icon-potted-plant-1:before { + content: "\e5c0"; +} +.icon-potted-plant-2:before { + content: "\e5c1"; +} +.icon-2-fingers-double-tap:before { + content: "\e5c2"; +} +.icon-2-fingers-down-swipe:before { + content: "\e5c3"; +} +.icon-2-fingers-horizontal-swipe:before { + content: "\e5c4"; +} +.icon-2-fingers-left-swipe:before { + content: "\e5c5"; +} +.icon-2-fingers-omnidirectional-swipe:before { + content: "\e5c6"; +} +.icon-2-fingers-right-swipe:before { + content: "\e5c7"; +} +.icon-2-fingers-tab-hold:before { + content: "\e5c8"; +} +.icon-2-fingers-tap:before { + content: "\e5c9"; +} +.icon-2-fingers-up-swipe:before { + content: "\e5ca"; +} +.icon-2-fingers-vertical-swipe:before { + content: "\e5cb"; +} +.icon-double-tap:before { + content: "\e5cc"; +} +.icon-drag-down:before { + content: "\e5cd"; +} +.icon-drag-horizontal:before { + content: "\e5ce"; +} +.icon-drag-left:before { + content: "\e5cf"; +} +.icon-drag-right:before { + content: "\e5d0"; +} +.icon-drag-up:before { + content: "\e5d1"; +} +.icon-drag-vertical:before { + content: "\e5d2"; +} +.icon-filck-down:before { + content: "\e5d3"; +} +.icon-flick-up:before { + content: "\e5d4"; +} +.icon-horizontal-flick:before { + content: "\e5d5"; +} +.icon-left-flick:before { + content: "\e5d6"; +} +.icon-omnidirectional-drag:before { + content: "\e5d7"; +} +.icon-omnidirectional-flick:before { + content: "\e5d8"; +} +.icon-omnidirectional-swipe:before { + content: "\e5d9"; +} +.icon-pinch:before { + content: "\e5da"; +} +.icon-right-flick:before { + content: "\e5db"; +} +.icon-rotate-clockwise:before { + content: "\e5dc"; +} +.icon-rotate-counterclockwise:before { + content: "\e5dd"; +} +.icon-spread:before { + content: "\e5de"; +} +.icon-swipe-down:before { + content: "\e5df"; +} +.icon-swipe-horizontal:before { + content: "\e5e0"; +} +.icon-swipe-left:before { + content: "\e5e1"; +} +.icon-swipe-right:before { + content: "\e5e2"; +} +.icon-swipe-up:before { + content: "\e5e3"; +} +.icon-swipe-vertical:before { + content: "\e5e4"; +} +.icon-tap:before { + content: "\e5e5"; +} +.icon-tap-hold:before { + content: "\e5e6"; +} +.icon-vertical-flick:before { + content: "\e5e7"; +} +.icon-arrow-1-1:before { + content: "\e5e8"; +} +.icon-arrow-2-1:before { + content: "\e5e9"; +} +.icon-arrow-3:before { + content: "\e5ea"; +} +.icon-arrow-4:before { + content: "\e5eb"; +} +.icon-arrow-5:before { + content: "\e5ec"; +} +.icon-arrow-6:before { + content: "\e5ed"; +} +.icon-arrow-7:before { + content: "\e5ee"; +} +.icon-arrow-8:before { + content: "\e5ef"; +} +.icon-arrow-9:before { + content: "\e5f0"; +} +.icon-arrow-10:before { + content: "\e5f1"; +} +.icon-arrow-11:before { + content: "\e5f2"; +} +.icon-arrow-12:before { + content: "\e5f3"; +} +.icon-arrow-13:before { + content: "\e5f4"; +} +.icon-arrow-14:before { + content: "\e5f5"; +} +.icon-arrow-15:before { + content: "\e5f6"; +} +.icon-arrow-16:before { + content: "\e5f7"; +} +.icon-arrow-17:before { + content: "\e5f8"; +} +.icon-arrow-18:before { + content: "\e5f9"; +} +.icon-arrow-19:before { + content: "\e5fa"; +} +.icon-arrow-20:before { + content: "\e5fb"; +} +.icon-arrow-21:before { + content: "\e5fc"; +} +.icon-arrow-22:before { + content: "\e5fd"; +} +.icon-arrow-23:before { + content: "\e5fe"; +} +.icon-arrow-24:before { + content: "\e5ff"; +} +.icon-arrow-25:before { + content: "\e600"; +} +.icon-arrow-26:before { + content: "\e601"; +} +.icon-arrow-27:before { + content: "\e602"; +} +.icon-arrow-28:before { + content: "\e603"; +} +.icon-arrow-29:before { + content: "\e604"; +} +.icon-arrow-30:before { + content: "\e605"; +} +.icon-arrow-31:before { + content: "\e606"; +} +.icon-arrow-32:before { + content: "\e607"; +} +.icon-arrow-33:before { + content: "\e608"; +} +.icon-arrow-34:before { + content: "\e609"; +} +.icon-arrow-35:before { + content: "\e60a"; +} +.icon-arrow-36:before { + content: "\e60b"; +} +.icon-arrow-37:before { + content: "\e60c"; +} +.icon-arrow-38:before { + content: "\e60d"; +} +.icon-arrow-39:before { + content: "\e60e"; +} +.icon-arrow-40:before { + content: "\e60f"; +} +.icon-arrow-41:before { + content: "\e610"; +} +.icon-arrow-42:before { + content: "\e611"; +} +.icon-arrow-43:before { + content: "\e612"; +} +.icon-arrow-44:before { + content: "\e613"; +} +.icon-arrow-45:before { + content: "\e614"; +} +.icon-arrow-46:before { + content: "\e615"; +} +.icon-arrow-47:before { + content: "\e616"; +} +.icon-arrow-48:before { + content: "\e617"; +} +.icon-arrow-49:before { + content: "\e618"; +} +.icon-arrow-50:before { + content: "\e619"; +} +.icon-arrow-51:before { + content: "\e61a"; +} +.icon-arrow-52:before { + content: "\e61b"; +} +.icon-arrow-53:before { + content: "\e61c"; +} +.icon-arrow-54:before { + content: "\e61d"; +} +.icon-arrow-55:before { + content: "\e61e"; +} +.icon-arrow-56:before { + content: "\e61f"; +} +.icon-arrow-57:before { + content: "\e620"; +} +.icon-arrow-58:before { + content: "\e621"; +} +.icon-arrow-59:before { + content: "\e622"; +} +.icon-arrow-60:before { + content: "\e623"; +} +.icon-arrow-61:before { + content: "\e624"; +} +.icon-arrow-62:before { + content: "\e625"; +} +.icon-arrow-63:before { + content: "\e626"; +} +.icon-arrow-64:before { + content: "\e627"; +} +.icon-arrow-65:before { + content: "\e628"; +} +.icon-arrow-66:before { + content: "\e629"; +} +.icon-arrow-67:before { + content: "\e62a"; +} +.icon-arrow-68:before { + content: "\e62b"; +} +.icon-arrow-69:before { + content: "\e62c"; +} +.icon-arrow-70:before { + content: "\e62d"; +} +.icon-arrow-71:before { + content: "\e62e"; +} +.icon-arrow-72:before { + content: "\e62f"; +} +.icon-arrow-circle-1:before { + content: "\e630"; +} +.icon-arrow-circle-2:before { + content: "\e631"; +} +.icon-arrow-circle-3:before { + content: "\e632"; +} +.icon-arrow-circle-4:before { + content: "\e633"; +} +.icon-arrow-circle-5:before { + content: "\e634"; +} +.icon-arrow-circle-6:before { + content: "\e635"; +} +.icon-arrow-circle-7:before { + content: "\e636"; +} +.icon-arrow-circle-8:before { + content: "\e637"; +} +.icon-arrow-circle-9:before { + content: "\e638"; +} +.icon-arrow-circle-10:before { + content: "\e639"; +} +.icon-arrow-circle-11:before { + content: "\e63a"; +} +.icon-arrow-circle-12:before { + content: "\e63b"; +} +.icon-arrow-circle-13:before { + content: "\e63c"; +} +.icon-arrow-circle-14:before { + content: "\e63d"; +} +.icon-arrow-circle-15:before { + content: "\e63e"; +} +.icon-arrow-circle-16:before { + content: "\e63f"; +} +.icon-arrow-circle-17:before { + content: "\e640"; +} +.icon-arrow-circle-18:before { + content: "\e641"; +} +.icon-arrow-circle-19:before { + content: "\e642"; +} +.icon-arrow-circle-20:before { + content: "\e643"; +} +.icon-arrow-circle-21:before { + content: "\e644"; +} +.icon-arrow-circle-22:before { + content: "\e645"; +} +.icon-arrow-circle-23:before { + content: "\e646"; +} +.icon-arrow-circle-24:before { + content: "\e647"; +} +.icon-arrow-circle-25:before { + content: "\e648"; +} +.icon-arrow-circle-26:before { + content: "\e649"; +} +.icon-arrow-circle-27:before { + content: "\e64a"; +} +.icon-arrow-circle-28:before { + content: "\e64b"; +} +.icon-arrow-circle-29:before { + content: "\e64c"; +} +.icon-arrow-circle-30:before { + content: "\e64d"; +} +.icon-arrow-delete-1:before { + content: "\e64e"; +} +.icon-arrow-delete-2:before { + content: "\e64f"; +} +.icon-arrow-dot-1:before { + content: "\e650"; +} +.icon-arrow-dot-2:before { + content: "\e651"; +} +.icon-arrow-dot-3:before { + content: "\e652"; +} +.icon-arrow-dot-4:before { + content: "\e653"; +} +.icon-arrow-dot-5:before { + content: "\e654"; +} +.icon-arrow-dot-6:before { + content: "\e655"; +} +.icon-arrow-rectangle-1:before { + content: "\e656"; +} +.icon-arrow-rectangle-2:before { + content: "\e657"; +} +.icon-arrow-rectangle-3:before { + content: "\e658"; +} +.icon-arrow-rectangle-4:before { + content: "\e659"; +} +.icon-arrow-rectangle-5:before { + content: "\e65a"; +} +.icon-arrow-rectangle-6:before { + content: "\e65b"; +} +.icon-arrow-rectangle-7:before { + content: "\e65c"; +} +.icon-arrow-rectangle-8:before { + content: "\e65d"; +} +.icon-arrow-rectangle-9:before { + content: "\e65e"; +} +.icon-arrow-rectangle-10:before { + content: "\e65f"; +} +.icon-arrow-rectangle-11:before { + content: "\e660"; +} +.icon-arrow-rectangle-12:before { + content: "\e661"; +} +.icon-arrow-rectangle-13:before { + content: "\e662"; +} +.icon-arrow-rectangle-14:before { + content: "\e663"; +} +.icon-arrow-rectangle-15:before { + content: "\e664"; +} +.icon-arrow-rectangle-16:before { + content: "\e665"; +} +.icon-arrow-rectangle-17:before { + content: "\e666"; +} +.icon-arrow-rectangle-18:before { + content: "\e667"; +} +.icon-arrow-rectangle-19:before { + content: "\e668"; +} +.icon-arrow-rectangle-20:before { + content: "\e669"; +} +/* +The MIT License (MIT) + +Copyright (c) 2013 Imulus, LLC, Ben Atkin, and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +.setup { + margin-top: 25%; + text-align: center; +} +.setup p { + margin-top: 20px; +} +.setup p.error { + color: #d9534f; +} +@-webkit-keyframes rotating { + from { + -webkit-transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + } +} +.radial-progress { + margin: 0 auto; + width: 96px; + height: 96px; + background-color: transparent; + border-radius: 100%; +} +.radial-progress.radial-spinner { + -webkit-animation: rotating 1.2s linear infinite; +} +.radial-progress .circle .mask, +.radial-progress .circle .fill, +.radial-progress .circle .shadow { + width: 96px; + height: 96px; + position: absolute; + border-radius: 100%; +} +.radial-progress .circle .mask, +.radial-progress .circle .fill { + -webkit-backface-visibility: hidden; + transition: -webkit-transform 1s; + transition: -ms-transform 1s; + transition: transform 1s; + border-radius: 100%; +} +.radial-progress .circle .mask { + clip: rect(0px, 96px, 96px, 48px); +} +.radial-progress .circle .mask .fill { + clip: rect(0px, 48px, 96px, 0px); + background-color: #24b8eb; +} +.radial-progress .inset { + width: 92px; + height: 92px; + position: absolute; + margin-left: 2px; + margin-top: 2px; + background-color: white; + border-radius: 100%; +} +.radial-progress .inset .percentage { + width: 57px; + position: absolute; + top: 39px; + left: 17.5px; + line-height: 1; + text-align: center; + font-weight: 500; + font-size: 14px; +} +.radial-progress.radial-negative .circle .mask .fill { + background-color: #f47a45; +} +.radial-progress.radial-positive .circle .mask .fill { + background-color: #65e100; +} +.radial-progress[data-progress="0"] .circle .mask.full, +.radial-progress[data-progress="0"] .circle .fill { + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); +} +.radial-progress[data-progress="0"] .circle .fill.fix { + -webkit-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); +} +.radial-progress[data-progress="0"] .inset .percentage:before { + content: "0%"; +} +.radial-progress[data-progress="1"] .circle .mask.full, +.radial-progress[data-progress="1"] .circle .fill { + -webkit-transform: rotate(1.8deg); + -ms-transform: rotate(1.8deg); + transform: rotate(1.8deg); +} +.radial-progress[data-progress="1"] .circle .fill.fix { + -webkit-transform: rotate(3.6deg); + -ms-transform: rotate(3.6deg); + transform: rotate(3.6deg); +} +.radial-progress[data-progress="1"] .inset .percentage:before { + content: "1%"; +} +.radial-progress[data-progress="2"] .circle .mask.full, +.radial-progress[data-progress="2"] .circle .fill { + -webkit-transform: rotate(3.6deg); + -ms-transform: rotate(3.6deg); + transform: rotate(3.6deg); +} +.radial-progress[data-progress="2"] .circle .fill.fix { + -webkit-transform: rotate(7.2deg); + -ms-transform: rotate(7.2deg); + transform: rotate(7.2deg); +} +.radial-progress[data-progress="2"] .inset .percentage:before { + content: "2%"; +} +.radial-progress[data-progress="3"] .circle .mask.full, +.radial-progress[data-progress="3"] .circle .fill { + -webkit-transform: rotate(5.4deg); + -ms-transform: rotate(5.4deg); + transform: rotate(5.4deg); +} +.radial-progress[data-progress="3"] .circle .fill.fix { + -webkit-transform: rotate(10.8deg); + -ms-transform: rotate(10.8deg); + transform: rotate(10.8deg); +} +.radial-progress[data-progress="3"] .inset .percentage:before { + content: "3%"; +} +.radial-progress[data-progress="4"] .circle .mask.full, +.radial-progress[data-progress="4"] .circle .fill { + -webkit-transform: rotate(7.2deg); + -ms-transform: rotate(7.2deg); + transform: rotate(7.2deg); +} +.radial-progress[data-progress="4"] .circle .fill.fix { + -webkit-transform: rotate(14.4deg); + -ms-transform: rotate(14.4deg); + transform: rotate(14.4deg); +} +.radial-progress[data-progress="4"] .inset .percentage:before { + content: "4%"; +} +.radial-progress[data-progress="5"] .circle .mask.full, +.radial-progress[data-progress="5"] .circle .fill { + -webkit-transform: rotate(9deg); + -ms-transform: rotate(9deg); + transform: rotate(9deg); +} +.radial-progress[data-progress="5"] .circle .fill.fix { + -webkit-transform: rotate(18deg); + -ms-transform: rotate(18deg); + transform: rotate(18deg); +} +.radial-progress[data-progress="5"] .inset .percentage:before { + content: "5%"; +} +.radial-progress[data-progress="6"] .circle .mask.full, +.radial-progress[data-progress="6"] .circle .fill { + -webkit-transform: rotate(10.8deg); + -ms-transform: rotate(10.8deg); + transform: rotate(10.8deg); +} +.radial-progress[data-progress="6"] .circle .fill.fix { + -webkit-transform: rotate(21.6deg); + -ms-transform: rotate(21.6deg); + transform: rotate(21.6deg); +} +.radial-progress[data-progress="6"] .inset .percentage:before { + content: "6%"; +} +.radial-progress[data-progress="7"] .circle .mask.full, +.radial-progress[data-progress="7"] .circle .fill { + -webkit-transform: rotate(12.6deg); + -ms-transform: rotate(12.6deg); + transform: rotate(12.6deg); +} +.radial-progress[data-progress="7"] .circle .fill.fix { + -webkit-transform: rotate(25.2deg); + -ms-transform: rotate(25.2deg); + transform: rotate(25.2deg); +} +.radial-progress[data-progress="7"] .inset .percentage:before { + content: "7%"; +} +.radial-progress[data-progress="8"] .circle .mask.full, +.radial-progress[data-progress="8"] .circle .fill { + -webkit-transform: rotate(14.4deg); + -ms-transform: rotate(14.4deg); + transform: rotate(14.4deg); +} +.radial-progress[data-progress="8"] .circle .fill.fix { + -webkit-transform: rotate(28.8deg); + -ms-transform: rotate(28.8deg); + transform: rotate(28.8deg); +} +.radial-progress[data-progress="8"] .inset .percentage:before { + content: "8%"; +} +.radial-progress[data-progress="9"] .circle .mask.full, +.radial-progress[data-progress="9"] .circle .fill { + -webkit-transform: rotate(16.2deg); + -ms-transform: rotate(16.2deg); + transform: rotate(16.2deg); +} +.radial-progress[data-progress="9"] .circle .fill.fix { + -webkit-transform: rotate(32.4deg); + -ms-transform: rotate(32.4deg); + transform: rotate(32.4deg); +} +.radial-progress[data-progress="9"] .inset .percentage:before { + content: "9%"; +} +.radial-progress[data-progress="10"] .circle .mask.full, +.radial-progress[data-progress="10"] .circle .fill { + -webkit-transform: rotate(18deg); + -ms-transform: rotate(18deg); + transform: rotate(18deg); +} +.radial-progress[data-progress="10"] .circle .fill.fix { + -webkit-transform: rotate(36deg); + -ms-transform: rotate(36deg); + transform: rotate(36deg); +} +.radial-progress[data-progress="10"] .inset .percentage:before { + content: "10%"; +} +.radial-progress[data-progress="11"] .circle .mask.full, +.radial-progress[data-progress="11"] .circle .fill { + -webkit-transform: rotate(19.8deg); + -ms-transform: rotate(19.8deg); + transform: rotate(19.8deg); +} +.radial-progress[data-progress="11"] .circle .fill.fix { + -webkit-transform: rotate(39.6deg); + -ms-transform: rotate(39.6deg); + transform: rotate(39.6deg); +} +.radial-progress[data-progress="11"] .inset .percentage:before { + content: "11%"; +} +.radial-progress[data-progress="12"] .circle .mask.full, +.radial-progress[data-progress="12"] .circle .fill { + -webkit-transform: rotate(21.6deg); + -ms-transform: rotate(21.6deg); + transform: rotate(21.6deg); +} +.radial-progress[data-progress="12"] .circle .fill.fix { + -webkit-transform: rotate(43.2deg); + -ms-transform: rotate(43.2deg); + transform: rotate(43.2deg); +} +.radial-progress[data-progress="12"] .inset .percentage:before { + content: "12%"; +} +.radial-progress[data-progress="13"] .circle .mask.full, +.radial-progress[data-progress="13"] .circle .fill { + -webkit-transform: rotate(23.4deg); + -ms-transform: rotate(23.4deg); + transform: rotate(23.4deg); +} +.radial-progress[data-progress="13"] .circle .fill.fix { + -webkit-transform: rotate(46.8deg); + -ms-transform: rotate(46.8deg); + transform: rotate(46.8deg); +} +.radial-progress[data-progress="13"] .inset .percentage:before { + content: "13%"; +} +.radial-progress[data-progress="14"] .circle .mask.full, +.radial-progress[data-progress="14"] .circle .fill { + -webkit-transform: rotate(25.2deg); + -ms-transform: rotate(25.2deg); + transform: rotate(25.2deg); +} +.radial-progress[data-progress="14"] .circle .fill.fix { + -webkit-transform: rotate(50.4deg); + -ms-transform: rotate(50.4deg); + transform: rotate(50.4deg); +} +.radial-progress[data-progress="14"] .inset .percentage:before { + content: "14%"; +} +.radial-progress[data-progress="15"] .circle .mask.full, +.radial-progress[data-progress="15"] .circle .fill { + -webkit-transform: rotate(27deg); + -ms-transform: rotate(27deg); + transform: rotate(27deg); +} +.radial-progress[data-progress="15"] .circle .fill.fix { + -webkit-transform: rotate(54deg); + -ms-transform: rotate(54deg); + transform: rotate(54deg); +} +.radial-progress[data-progress="15"] .inset .percentage:before { + content: "15%"; +} +.radial-progress[data-progress="16"] .circle .mask.full, +.radial-progress[data-progress="16"] .circle .fill { + -webkit-transform: rotate(28.8deg); + -ms-transform: rotate(28.8deg); + transform: rotate(28.8deg); +} +.radial-progress[data-progress="16"] .circle .fill.fix { + -webkit-transform: rotate(57.6deg); + -ms-transform: rotate(57.6deg); + transform: rotate(57.6deg); +} +.radial-progress[data-progress="16"] .inset .percentage:before { + content: "16%"; +} +.radial-progress[data-progress="17"] .circle .mask.full, +.radial-progress[data-progress="17"] .circle .fill { + -webkit-transform: rotate(30.6deg); + -ms-transform: rotate(30.6deg); + transform: rotate(30.6deg); +} +.radial-progress[data-progress="17"] .circle .fill.fix { + -webkit-transform: rotate(61.2deg); + -ms-transform: rotate(61.2deg); + transform: rotate(61.2deg); +} +.radial-progress[data-progress="17"] .inset .percentage:before { + content: "17%"; +} +.radial-progress[data-progress="18"] .circle .mask.full, +.radial-progress[data-progress="18"] .circle .fill { + -webkit-transform: rotate(32.4deg); + -ms-transform: rotate(32.4deg); + transform: rotate(32.4deg); +} +.radial-progress[data-progress="18"] .circle .fill.fix { + -webkit-transform: rotate(64.8deg); + -ms-transform: rotate(64.8deg); + transform: rotate(64.8deg); +} +.radial-progress[data-progress="18"] .inset .percentage:before { + content: "18%"; +} +.radial-progress[data-progress="19"] .circle .mask.full, +.radial-progress[data-progress="19"] .circle .fill { + -webkit-transform: rotate(34.2deg); + -ms-transform: rotate(34.2deg); + transform: rotate(34.2deg); +} +.radial-progress[data-progress="19"] .circle .fill.fix { + -webkit-transform: rotate(68.4deg); + -ms-transform: rotate(68.4deg); + transform: rotate(68.4deg); +} +.radial-progress[data-progress="19"] .inset .percentage:before { + content: "19%"; +} +.radial-progress[data-progress="20"] .circle .mask.full, +.radial-progress[data-progress="20"] .circle .fill { + -webkit-transform: rotate(36deg); + -ms-transform: rotate(36deg); + transform: rotate(36deg); +} +.radial-progress[data-progress="20"] .circle .fill.fix { + -webkit-transform: rotate(72deg); + -ms-transform: rotate(72deg); + transform: rotate(72deg); +} +.radial-progress[data-progress="20"] .inset .percentage:before { + content: "20%"; +} +.radial-progress[data-progress="21"] .circle .mask.full, +.radial-progress[data-progress="21"] .circle .fill { + -webkit-transform: rotate(37.8deg); + -ms-transform: rotate(37.8deg); + transform: rotate(37.8deg); +} +.radial-progress[data-progress="21"] .circle .fill.fix { + -webkit-transform: rotate(75.6deg); + -ms-transform: rotate(75.6deg); + transform: rotate(75.6deg); +} +.radial-progress[data-progress="21"] .inset .percentage:before { + content: "21%"; +} +.radial-progress[data-progress="22"] .circle .mask.full, +.radial-progress[data-progress="22"] .circle .fill { + -webkit-transform: rotate(39.6deg); + -ms-transform: rotate(39.6deg); + transform: rotate(39.6deg); +} +.radial-progress[data-progress="22"] .circle .fill.fix { + -webkit-transform: rotate(79.2deg); + -ms-transform: rotate(79.2deg); + transform: rotate(79.2deg); +} +.radial-progress[data-progress="22"] .inset .percentage:before { + content: "22%"; +} +.radial-progress[data-progress="23"] .circle .mask.full, +.radial-progress[data-progress="23"] .circle .fill { + -webkit-transform: rotate(41.4deg); + -ms-transform: rotate(41.4deg); + transform: rotate(41.4deg); +} +.radial-progress[data-progress="23"] .circle .fill.fix { + -webkit-transform: rotate(82.8deg); + -ms-transform: rotate(82.8deg); + transform: rotate(82.8deg); +} +.radial-progress[data-progress="23"] .inset .percentage:before { + content: "23%"; +} +.radial-progress[data-progress="24"] .circle .mask.full, +.radial-progress[data-progress="24"] .circle .fill { + -webkit-transform: rotate(43.2deg); + -ms-transform: rotate(43.2deg); + transform: rotate(43.2deg); +} +.radial-progress[data-progress="24"] .circle .fill.fix { + -webkit-transform: rotate(86.4deg); + -ms-transform: rotate(86.4deg); + transform: rotate(86.4deg); +} +.radial-progress[data-progress="24"] .inset .percentage:before { + content: "24%"; +} +.radial-progress[data-progress="25"] .circle .mask.full, +.radial-progress[data-progress="25"] .circle .fill { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} +.radial-progress[data-progress="25"] .circle .fill.fix { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.radial-progress[data-progress="25"] .inset .percentage:before { + content: "25%"; +} +.radial-progress[data-progress="26"] .circle .mask.full, +.radial-progress[data-progress="26"] .circle .fill { + -webkit-transform: rotate(46.8deg); + -ms-transform: rotate(46.8deg); + transform: rotate(46.8deg); +} +.radial-progress[data-progress="26"] .circle .fill.fix { + -webkit-transform: rotate(93.6deg); + -ms-transform: rotate(93.6deg); + transform: rotate(93.6deg); +} +.radial-progress[data-progress="26"] .inset .percentage:before { + content: "26%"; +} +.radial-progress[data-progress="27"] .circle .mask.full, +.radial-progress[data-progress="27"] .circle .fill { + -webkit-transform: rotate(48.6deg); + -ms-transform: rotate(48.6deg); + transform: rotate(48.6deg); +} +.radial-progress[data-progress="27"] .circle .fill.fix { + -webkit-transform: rotate(97.2deg); + -ms-transform: rotate(97.2deg); + transform: rotate(97.2deg); +} +.radial-progress[data-progress="27"] .inset .percentage:before { + content: "27%"; +} +.radial-progress[data-progress="28"] .circle .mask.full, +.radial-progress[data-progress="28"] .circle .fill { + -webkit-transform: rotate(50.4deg); + -ms-transform: rotate(50.4deg); + transform: rotate(50.4deg); +} +.radial-progress[data-progress="28"] .circle .fill.fix { + -webkit-transform: rotate(100.8deg); + -ms-transform: rotate(100.8deg); + transform: rotate(100.8deg); +} +.radial-progress[data-progress="28"] .inset .percentage:before { + content: "28%"; +} +.radial-progress[data-progress="29"] .circle .mask.full, +.radial-progress[data-progress="29"] .circle .fill { + -webkit-transform: rotate(52.2deg); + -ms-transform: rotate(52.2deg); + transform: rotate(52.2deg); +} +.radial-progress[data-progress="29"] .circle .fill.fix { + -webkit-transform: rotate(104.4deg); + -ms-transform: rotate(104.4deg); + transform: rotate(104.4deg); +} +.radial-progress[data-progress="29"] .inset .percentage:before { + content: "29%"; +} +.radial-progress[data-progress="30"] .circle .mask.full, +.radial-progress[data-progress="30"] .circle .fill { + -webkit-transform: rotate(54deg); + -ms-transform: rotate(54deg); + transform: rotate(54deg); +} +.radial-progress[data-progress="30"] .circle .fill.fix { + -webkit-transform: rotate(108deg); + -ms-transform: rotate(108deg); + transform: rotate(108deg); +} +.radial-progress[data-progress="30"] .inset .percentage:before { + content: "30%"; +} +.radial-progress[data-progress="31"] .circle .mask.full, +.radial-progress[data-progress="31"] .circle .fill { + -webkit-transform: rotate(55.8deg); + -ms-transform: rotate(55.8deg); + transform: rotate(55.8deg); +} +.radial-progress[data-progress="31"] .circle .fill.fix { + -webkit-transform: rotate(111.6deg); + -ms-transform: rotate(111.6deg); + transform: rotate(111.6deg); +} +.radial-progress[data-progress="31"] .inset .percentage:before { + content: "31%"; +} +.radial-progress[data-progress="32"] .circle .mask.full, +.radial-progress[data-progress="32"] .circle .fill { + -webkit-transform: rotate(57.6deg); + -ms-transform: rotate(57.6deg); + transform: rotate(57.6deg); +} +.radial-progress[data-progress="32"] .circle .fill.fix { + -webkit-transform: rotate(115.2deg); + -ms-transform: rotate(115.2deg); + transform: rotate(115.2deg); +} +.radial-progress[data-progress="32"] .inset .percentage:before { + content: "32%"; +} +.radial-progress[data-progress="33"] .circle .mask.full, +.radial-progress[data-progress="33"] .circle .fill { + -webkit-transform: rotate(59.4deg); + -ms-transform: rotate(59.4deg); + transform: rotate(59.4deg); +} +.radial-progress[data-progress="33"] .circle .fill.fix { + -webkit-transform: rotate(118.8deg); + -ms-transform: rotate(118.8deg); + transform: rotate(118.8deg); +} +.radial-progress[data-progress="33"] .inset .percentage:before { + content: "33%"; +} +.radial-progress[data-progress="34"] .circle .mask.full, +.radial-progress[data-progress="34"] .circle .fill { + -webkit-transform: rotate(61.2deg); + -ms-transform: rotate(61.2deg); + transform: rotate(61.2deg); +} +.radial-progress[data-progress="34"] .circle .fill.fix { + -webkit-transform: rotate(122.4deg); + -ms-transform: rotate(122.4deg); + transform: rotate(122.4deg); +} +.radial-progress[data-progress="34"] .inset .percentage:before { + content: "34%"; +} +.radial-progress[data-progress="35"] .circle .mask.full, +.radial-progress[data-progress="35"] .circle .fill { + -webkit-transform: rotate(63deg); + -ms-transform: rotate(63deg); + transform: rotate(63deg); +} +.radial-progress[data-progress="35"] .circle .fill.fix { + -webkit-transform: rotate(126deg); + -ms-transform: rotate(126deg); + transform: rotate(126deg); +} +.radial-progress[data-progress="35"] .inset .percentage:before { + content: "35%"; +} +.radial-progress[data-progress="36"] .circle .mask.full, +.radial-progress[data-progress="36"] .circle .fill { + -webkit-transform: rotate(64.8deg); + -ms-transform: rotate(64.8deg); + transform: rotate(64.8deg); +} +.radial-progress[data-progress="36"] .circle .fill.fix { + -webkit-transform: rotate(129.6deg); + -ms-transform: rotate(129.6deg); + transform: rotate(129.6deg); +} +.radial-progress[data-progress="36"] .inset .percentage:before { + content: "36%"; +} +.radial-progress[data-progress="37"] .circle .mask.full, +.radial-progress[data-progress="37"] .circle .fill { + -webkit-transform: rotate(66.6deg); + -ms-transform: rotate(66.6deg); + transform: rotate(66.6deg); +} +.radial-progress[data-progress="37"] .circle .fill.fix { + -webkit-transform: rotate(133.2deg); + -ms-transform: rotate(133.2deg); + transform: rotate(133.2deg); +} +.radial-progress[data-progress="37"] .inset .percentage:before { + content: "37%"; +} +.radial-progress[data-progress="38"] .circle .mask.full, +.radial-progress[data-progress="38"] .circle .fill { + -webkit-transform: rotate(68.4deg); + -ms-transform: rotate(68.4deg); + transform: rotate(68.4deg); +} +.radial-progress[data-progress="38"] .circle .fill.fix { + -webkit-transform: rotate(136.8deg); + -ms-transform: rotate(136.8deg); + transform: rotate(136.8deg); +} +.radial-progress[data-progress="38"] .inset .percentage:before { + content: "38%"; +} +.radial-progress[data-progress="39"] .circle .mask.full, +.radial-progress[data-progress="39"] .circle .fill { + -webkit-transform: rotate(70.2deg); + -ms-transform: rotate(70.2deg); + transform: rotate(70.2deg); +} +.radial-progress[data-progress="39"] .circle .fill.fix { + -webkit-transform: rotate(140.4deg); + -ms-transform: rotate(140.4deg); + transform: rotate(140.4deg); +} +.radial-progress[data-progress="39"] .inset .percentage:before { + content: "39%"; +} +.radial-progress[data-progress="40"] .circle .mask.full, +.radial-progress[data-progress="40"] .circle .fill { + -webkit-transform: rotate(72deg); + -ms-transform: rotate(72deg); + transform: rotate(72deg); +} +.radial-progress[data-progress="40"] .circle .fill.fix { + -webkit-transform: rotate(144deg); + -ms-transform: rotate(144deg); + transform: rotate(144deg); +} +.radial-progress[data-progress="40"] .inset .percentage:before { + content: "40%"; +} +.radial-progress[data-progress="41"] .circle .mask.full, +.radial-progress[data-progress="41"] .circle .fill { + -webkit-transform: rotate(73.8deg); + -ms-transform: rotate(73.8deg); + transform: rotate(73.8deg); +} +.radial-progress[data-progress="41"] .circle .fill.fix { + -webkit-transform: rotate(147.6deg); + -ms-transform: rotate(147.6deg); + transform: rotate(147.6deg); +} +.radial-progress[data-progress="41"] .inset .percentage:before { + content: "41%"; +} +.radial-progress[data-progress="42"] .circle .mask.full, +.radial-progress[data-progress="42"] .circle .fill { + -webkit-transform: rotate(75.6deg); + -ms-transform: rotate(75.6deg); + transform: rotate(75.6deg); +} +.radial-progress[data-progress="42"] .circle .fill.fix { + -webkit-transform: rotate(151.2deg); + -ms-transform: rotate(151.2deg); + transform: rotate(151.2deg); +} +.radial-progress[data-progress="42"] .inset .percentage:before { + content: "42%"; +} +.radial-progress[data-progress="43"] .circle .mask.full, +.radial-progress[data-progress="43"] .circle .fill { + -webkit-transform: rotate(77.4deg); + -ms-transform: rotate(77.4deg); + transform: rotate(77.4deg); +} +.radial-progress[data-progress="43"] .circle .fill.fix { + -webkit-transform: rotate(154.8deg); + -ms-transform: rotate(154.8deg); + transform: rotate(154.8deg); +} +.radial-progress[data-progress="43"] .inset .percentage:before { + content: "43%"; +} +.radial-progress[data-progress="44"] .circle .mask.full, +.radial-progress[data-progress="44"] .circle .fill { + -webkit-transform: rotate(79.2deg); + -ms-transform: rotate(79.2deg); + transform: rotate(79.2deg); +} +.radial-progress[data-progress="44"] .circle .fill.fix { + -webkit-transform: rotate(158.4deg); + -ms-transform: rotate(158.4deg); + transform: rotate(158.4deg); +} +.radial-progress[data-progress="44"] .inset .percentage:before { + content: "44%"; +} +.radial-progress[data-progress="45"] .circle .mask.full, +.radial-progress[data-progress="45"] .circle .fill { + -webkit-transform: rotate(81deg); + -ms-transform: rotate(81deg); + transform: rotate(81deg); +} +.radial-progress[data-progress="45"] .circle .fill.fix { + -webkit-transform: rotate(162deg); + -ms-transform: rotate(162deg); + transform: rotate(162deg); +} +.radial-progress[data-progress="45"] .inset .percentage:before { + content: "45%"; +} +.radial-progress[data-progress="46"] .circle .mask.full, +.radial-progress[data-progress="46"] .circle .fill { + -webkit-transform: rotate(82.8deg); + -ms-transform: rotate(82.8deg); + transform: rotate(82.8deg); +} +.radial-progress[data-progress="46"] .circle .fill.fix { + -webkit-transform: rotate(165.6deg); + -ms-transform: rotate(165.6deg); + transform: rotate(165.6deg); +} +.radial-progress[data-progress="46"] .inset .percentage:before { + content: "46%"; +} +.radial-progress[data-progress="47"] .circle .mask.full, +.radial-progress[data-progress="47"] .circle .fill { + -webkit-transform: rotate(84.6deg); + -ms-transform: rotate(84.6deg); + transform: rotate(84.6deg); +} +.radial-progress[data-progress="47"] .circle .fill.fix { + -webkit-transform: rotate(169.2deg); + -ms-transform: rotate(169.2deg); + transform: rotate(169.2deg); +} +.radial-progress[data-progress="47"] .inset .percentage:before { + content: "47%"; +} +.radial-progress[data-progress="48"] .circle .mask.full, +.radial-progress[data-progress="48"] .circle .fill { + -webkit-transform: rotate(86.4deg); + -ms-transform: rotate(86.4deg); + transform: rotate(86.4deg); +} +.radial-progress[data-progress="48"] .circle .fill.fix { + -webkit-transform: rotate(172.8deg); + -ms-transform: rotate(172.8deg); + transform: rotate(172.8deg); +} +.radial-progress[data-progress="48"] .inset .percentage:before { + content: "48%"; +} +.radial-progress[data-progress="49"] .circle .mask.full, +.radial-progress[data-progress="49"] .circle .fill { + -webkit-transform: rotate(88.2deg); + -ms-transform: rotate(88.2deg); + transform: rotate(88.2deg); +} +.radial-progress[data-progress="49"] .circle .fill.fix { + -webkit-transform: rotate(176.4deg); + -ms-transform: rotate(176.4deg); + transform: rotate(176.4deg); +} +.radial-progress[data-progress="49"] .inset .percentage:before { + content: "49%"; +} +.radial-progress[data-progress="50"] .circle .mask.full, +.radial-progress[data-progress="50"] .circle .fill { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.radial-progress[data-progress="50"] .circle .fill.fix { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.radial-progress[data-progress="50"] .inset .percentage:before { + content: "50%"; +} +.radial-progress[data-progress="51"] .circle .mask.full, +.radial-progress[data-progress="51"] .circle .fill { + -webkit-transform: rotate(91.8deg); + -ms-transform: rotate(91.8deg); + transform: rotate(91.8deg); +} +.radial-progress[data-progress="51"] .circle .fill.fix { + -webkit-transform: rotate(183.6deg); + -ms-transform: rotate(183.6deg); + transform: rotate(183.6deg); +} +.radial-progress[data-progress="51"] .inset .percentage:before { + content: "51%"; +} +.radial-progress[data-progress="52"] .circle .mask.full, +.radial-progress[data-progress="52"] .circle .fill { + -webkit-transform: rotate(93.6deg); + -ms-transform: rotate(93.6deg); + transform: rotate(93.6deg); +} +.radial-progress[data-progress="52"] .circle .fill.fix { + -webkit-transform: rotate(187.2deg); + -ms-transform: rotate(187.2deg); + transform: rotate(187.2deg); +} +.radial-progress[data-progress="52"] .inset .percentage:before { + content: "52%"; +} +.radial-progress[data-progress="53"] .circle .mask.full, +.radial-progress[data-progress="53"] .circle .fill { + -webkit-transform: rotate(95.4deg); + -ms-transform: rotate(95.4deg); + transform: rotate(95.4deg); +} +.radial-progress[data-progress="53"] .circle .fill.fix { + -webkit-transform: rotate(190.8deg); + -ms-transform: rotate(190.8deg); + transform: rotate(190.8deg); +} +.radial-progress[data-progress="53"] .inset .percentage:before { + content: "53%"; +} +.radial-progress[data-progress="54"] .circle .mask.full, +.radial-progress[data-progress="54"] .circle .fill { + -webkit-transform: rotate(97.2deg); + -ms-transform: rotate(97.2deg); + transform: rotate(97.2deg); +} +.radial-progress[data-progress="54"] .circle .fill.fix { + -webkit-transform: rotate(194.4deg); + -ms-transform: rotate(194.4deg); + transform: rotate(194.4deg); +} +.radial-progress[data-progress="54"] .inset .percentage:before { + content: "54%"; +} +.radial-progress[data-progress="55"] .circle .mask.full, +.radial-progress[data-progress="55"] .circle .fill { + -webkit-transform: rotate(99deg); + -ms-transform: rotate(99deg); + transform: rotate(99deg); +} +.radial-progress[data-progress="55"] .circle .fill.fix { + -webkit-transform: rotate(198deg); + -ms-transform: rotate(198deg); + transform: rotate(198deg); +} +.radial-progress[data-progress="55"] .inset .percentage:before { + content: "55%"; +} +.radial-progress[data-progress="56"] .circle .mask.full, +.radial-progress[data-progress="56"] .circle .fill { + -webkit-transform: rotate(100.8deg); + -ms-transform: rotate(100.8deg); + transform: rotate(100.8deg); +} +.radial-progress[data-progress="56"] .circle .fill.fix { + -webkit-transform: rotate(201.6deg); + -ms-transform: rotate(201.6deg); + transform: rotate(201.6deg); +} +.radial-progress[data-progress="56"] .inset .percentage:before { + content: "56%"; +} +.radial-progress[data-progress="57"] .circle .mask.full, +.radial-progress[data-progress="57"] .circle .fill { + -webkit-transform: rotate(102.6deg); + -ms-transform: rotate(102.6deg); + transform: rotate(102.6deg); +} +.radial-progress[data-progress="57"] .circle .fill.fix { + -webkit-transform: rotate(205.2deg); + -ms-transform: rotate(205.2deg); + transform: rotate(205.2deg); +} +.radial-progress[data-progress="57"] .inset .percentage:before { + content: "57%"; +} +.radial-progress[data-progress="58"] .circle .mask.full, +.radial-progress[data-progress="58"] .circle .fill { + -webkit-transform: rotate(104.4deg); + -ms-transform: rotate(104.4deg); + transform: rotate(104.4deg); +} +.radial-progress[data-progress="58"] .circle .fill.fix { + -webkit-transform: rotate(208.8deg); + -ms-transform: rotate(208.8deg); + transform: rotate(208.8deg); +} +.radial-progress[data-progress="58"] .inset .percentage:before { + content: "58%"; +} +.radial-progress[data-progress="59"] .circle .mask.full, +.radial-progress[data-progress="59"] .circle .fill { + -webkit-transform: rotate(106.2deg); + -ms-transform: rotate(106.2deg); + transform: rotate(106.2deg); +} +.radial-progress[data-progress="59"] .circle .fill.fix { + -webkit-transform: rotate(212.4deg); + -ms-transform: rotate(212.4deg); + transform: rotate(212.4deg); +} +.radial-progress[data-progress="59"] .inset .percentage:before { + content: "59%"; +} +.radial-progress[data-progress="60"] .circle .mask.full, +.radial-progress[data-progress="60"] .circle .fill { + -webkit-transform: rotate(108deg); + -ms-transform: rotate(108deg); + transform: rotate(108deg); +} +.radial-progress[data-progress="60"] .circle .fill.fix { + -webkit-transform: rotate(216deg); + -ms-transform: rotate(216deg); + transform: rotate(216deg); +} +.radial-progress[data-progress="60"] .inset .percentage:before { + content: "60%"; +} +.radial-progress[data-progress="61"] .circle .mask.full, +.radial-progress[data-progress="61"] .circle .fill { + -webkit-transform: rotate(109.8deg); + -ms-transform: rotate(109.8deg); + transform: rotate(109.8deg); +} +.radial-progress[data-progress="61"] .circle .fill.fix { + -webkit-transform: rotate(219.6deg); + -ms-transform: rotate(219.6deg); + transform: rotate(219.6deg); +} +.radial-progress[data-progress="61"] .inset .percentage:before { + content: "61%"; +} +.radial-progress[data-progress="62"] .circle .mask.full, +.radial-progress[data-progress="62"] .circle .fill { + -webkit-transform: rotate(111.6deg); + -ms-transform: rotate(111.6deg); + transform: rotate(111.6deg); +} +.radial-progress[data-progress="62"] .circle .fill.fix { + -webkit-transform: rotate(223.2deg); + -ms-transform: rotate(223.2deg); + transform: rotate(223.2deg); +} +.radial-progress[data-progress="62"] .inset .percentage:before { + content: "62%"; +} +.radial-progress[data-progress="63"] .circle .mask.full, +.radial-progress[data-progress="63"] .circle .fill { + -webkit-transform: rotate(113.4deg); + -ms-transform: rotate(113.4deg); + transform: rotate(113.4deg); +} +.radial-progress[data-progress="63"] .circle .fill.fix { + -webkit-transform: rotate(226.8deg); + -ms-transform: rotate(226.8deg); + transform: rotate(226.8deg); +} +.radial-progress[data-progress="63"] .inset .percentage:before { + content: "63%"; +} +.radial-progress[data-progress="64"] .circle .mask.full, +.radial-progress[data-progress="64"] .circle .fill { + -webkit-transform: rotate(115.2deg); + -ms-transform: rotate(115.2deg); + transform: rotate(115.2deg); +} +.radial-progress[data-progress="64"] .circle .fill.fix { + -webkit-transform: rotate(230.4deg); + -ms-transform: rotate(230.4deg); + transform: rotate(230.4deg); +} +.radial-progress[data-progress="64"] .inset .percentage:before { + content: "64%"; +} +.radial-progress[data-progress="65"] .circle .mask.full, +.radial-progress[data-progress="65"] .circle .fill { + -webkit-transform: rotate(117deg); + -ms-transform: rotate(117deg); + transform: rotate(117deg); +} +.radial-progress[data-progress="65"] .circle .fill.fix { + -webkit-transform: rotate(234deg); + -ms-transform: rotate(234deg); + transform: rotate(234deg); +} +.radial-progress[data-progress="65"] .inset .percentage:before { + content: "65%"; +} +.radial-progress[data-progress="66"] .circle .mask.full, +.radial-progress[data-progress="66"] .circle .fill { + -webkit-transform: rotate(118.8deg); + -ms-transform: rotate(118.8deg); + transform: rotate(118.8deg); +} +.radial-progress[data-progress="66"] .circle .fill.fix { + -webkit-transform: rotate(237.6deg); + -ms-transform: rotate(237.6deg); + transform: rotate(237.6deg); +} +.radial-progress[data-progress="66"] .inset .percentage:before { + content: "66%"; +} +.radial-progress[data-progress="67"] .circle .mask.full, +.radial-progress[data-progress="67"] .circle .fill { + -webkit-transform: rotate(120.6deg); + -ms-transform: rotate(120.6deg); + transform: rotate(120.6deg); +} +.radial-progress[data-progress="67"] .circle .fill.fix { + -webkit-transform: rotate(241.2deg); + -ms-transform: rotate(241.2deg); + transform: rotate(241.2deg); +} +.radial-progress[data-progress="67"] .inset .percentage:before { + content: "67%"; +} +.radial-progress[data-progress="68"] .circle .mask.full, +.radial-progress[data-progress="68"] .circle .fill { + -webkit-transform: rotate(122.4deg); + -ms-transform: rotate(122.4deg); + transform: rotate(122.4deg); +} +.radial-progress[data-progress="68"] .circle .fill.fix { + -webkit-transform: rotate(244.8deg); + -ms-transform: rotate(244.8deg); + transform: rotate(244.8deg); +} +.radial-progress[data-progress="68"] .inset .percentage:before { + content: "68%"; +} +.radial-progress[data-progress="69"] .circle .mask.full, +.radial-progress[data-progress="69"] .circle .fill { + -webkit-transform: rotate(124.2deg); + -ms-transform: rotate(124.2deg); + transform: rotate(124.2deg); +} +.radial-progress[data-progress="69"] .circle .fill.fix { + -webkit-transform: rotate(248.4deg); + -ms-transform: rotate(248.4deg); + transform: rotate(248.4deg); +} +.radial-progress[data-progress="69"] .inset .percentage:before { + content: "69%"; +} +.radial-progress[data-progress="70"] .circle .mask.full, +.radial-progress[data-progress="70"] .circle .fill { + -webkit-transform: rotate(126deg); + -ms-transform: rotate(126deg); + transform: rotate(126deg); +} +.radial-progress[data-progress="70"] .circle .fill.fix { + -webkit-transform: rotate(252deg); + -ms-transform: rotate(252deg); + transform: rotate(252deg); +} +.radial-progress[data-progress="70"] .inset .percentage:before { + content: "70%"; +} +.radial-progress[data-progress="71"] .circle .mask.full, +.radial-progress[data-progress="71"] .circle .fill { + -webkit-transform: rotate(127.8deg); + -ms-transform: rotate(127.8deg); + transform: rotate(127.8deg); +} +.radial-progress[data-progress="71"] .circle .fill.fix { + -webkit-transform: rotate(255.6deg); + -ms-transform: rotate(255.6deg); + transform: rotate(255.6deg); +} +.radial-progress[data-progress="71"] .inset .percentage:before { + content: "71%"; +} +.radial-progress[data-progress="72"] .circle .mask.full, +.radial-progress[data-progress="72"] .circle .fill { + -webkit-transform: rotate(129.6deg); + -ms-transform: rotate(129.6deg); + transform: rotate(129.6deg); +} +.radial-progress[data-progress="72"] .circle .fill.fix { + -webkit-transform: rotate(259.2deg); + -ms-transform: rotate(259.2deg); + transform: rotate(259.2deg); +} +.radial-progress[data-progress="72"] .inset .percentage:before { + content: "72%"; +} +.radial-progress[data-progress="73"] .circle .mask.full, +.radial-progress[data-progress="73"] .circle .fill { + -webkit-transform: rotate(131.4deg); + -ms-transform: rotate(131.4deg); + transform: rotate(131.4deg); +} +.radial-progress[data-progress="73"] .circle .fill.fix { + -webkit-transform: rotate(262.8deg); + -ms-transform: rotate(262.8deg); + transform: rotate(262.8deg); +} +.radial-progress[data-progress="73"] .inset .percentage:before { + content: "73%"; +} +.radial-progress[data-progress="74"] .circle .mask.full, +.radial-progress[data-progress="74"] .circle .fill { + -webkit-transform: rotate(133.2deg); + -ms-transform: rotate(133.2deg); + transform: rotate(133.2deg); +} +.radial-progress[data-progress="74"] .circle .fill.fix { + -webkit-transform: rotate(266.4deg); + -ms-transform: rotate(266.4deg); + transform: rotate(266.4deg); +} +.radial-progress[data-progress="74"] .inset .percentage:before { + content: "74%"; +} +.radial-progress[data-progress="75"] .circle .mask.full, +.radial-progress[data-progress="75"] .circle .fill { + -webkit-transform: rotate(135deg); + -ms-transform: rotate(135deg); + transform: rotate(135deg); +} +.radial-progress[data-progress="75"] .circle .fill.fix { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.radial-progress[data-progress="75"] .inset .percentage:before { + content: "75%"; +} +.radial-progress[data-progress="76"] .circle .mask.full, +.radial-progress[data-progress="76"] .circle .fill { + -webkit-transform: rotate(136.8deg); + -ms-transform: rotate(136.8deg); + transform: rotate(136.8deg); +} +.radial-progress[data-progress="76"] .circle .fill.fix { + -webkit-transform: rotate(273.6deg); + -ms-transform: rotate(273.6deg); + transform: rotate(273.6deg); +} +.radial-progress[data-progress="76"] .inset .percentage:before { + content: "76%"; +} +.radial-progress[data-progress="77"] .circle .mask.full, +.radial-progress[data-progress="77"] .circle .fill { + -webkit-transform: rotate(138.6deg); + -ms-transform: rotate(138.6deg); + transform: rotate(138.6deg); +} +.radial-progress[data-progress="77"] .circle .fill.fix { + -webkit-transform: rotate(277.2deg); + -ms-transform: rotate(277.2deg); + transform: rotate(277.2deg); +} +.radial-progress[data-progress="77"] .inset .percentage:before { + content: "77%"; +} +.radial-progress[data-progress="78"] .circle .mask.full, +.radial-progress[data-progress="78"] .circle .fill { + -webkit-transform: rotate(140.4deg); + -ms-transform: rotate(140.4deg); + transform: rotate(140.4deg); +} +.radial-progress[data-progress="78"] .circle .fill.fix { + -webkit-transform: rotate(280.8deg); + -ms-transform: rotate(280.8deg); + transform: rotate(280.8deg); +} +.radial-progress[data-progress="78"] .inset .percentage:before { + content: "78%"; +} +.radial-progress[data-progress="79"] .circle .mask.full, +.radial-progress[data-progress="79"] .circle .fill { + -webkit-transform: rotate(142.2deg); + -ms-transform: rotate(142.2deg); + transform: rotate(142.2deg); +} +.radial-progress[data-progress="79"] .circle .fill.fix { + -webkit-transform: rotate(284.4deg); + -ms-transform: rotate(284.4deg); + transform: rotate(284.4deg); +} +.radial-progress[data-progress="79"] .inset .percentage:before { + content: "79%"; +} +.radial-progress[data-progress="80"] .circle .mask.full, +.radial-progress[data-progress="80"] .circle .fill { + -webkit-transform: rotate(144deg); + -ms-transform: rotate(144deg); + transform: rotate(144deg); +} +.radial-progress[data-progress="80"] .circle .fill.fix { + -webkit-transform: rotate(288deg); + -ms-transform: rotate(288deg); + transform: rotate(288deg); +} +.radial-progress[data-progress="80"] .inset .percentage:before { + content: "80%"; +} +.radial-progress[data-progress="81"] .circle .mask.full, +.radial-progress[data-progress="81"] .circle .fill { + -webkit-transform: rotate(145.8deg); + -ms-transform: rotate(145.8deg); + transform: rotate(145.8deg); +} +.radial-progress[data-progress="81"] .circle .fill.fix { + -webkit-transform: rotate(291.6deg); + -ms-transform: rotate(291.6deg); + transform: rotate(291.6deg); +} +.radial-progress[data-progress="81"] .inset .percentage:before { + content: "81%"; +} +.radial-progress[data-progress="82"] .circle .mask.full, +.radial-progress[data-progress="82"] .circle .fill { + -webkit-transform: rotate(147.6deg); + -ms-transform: rotate(147.6deg); + transform: rotate(147.6deg); +} +.radial-progress[data-progress="82"] .circle .fill.fix { + -webkit-transform: rotate(295.2deg); + -ms-transform: rotate(295.2deg); + transform: rotate(295.2deg); +} +.radial-progress[data-progress="82"] .inset .percentage:before { + content: "82%"; +} +.radial-progress[data-progress="83"] .circle .mask.full, +.radial-progress[data-progress="83"] .circle .fill { + -webkit-transform: rotate(149.4deg); + -ms-transform: rotate(149.4deg); + transform: rotate(149.4deg); +} +.radial-progress[data-progress="83"] .circle .fill.fix { + -webkit-transform: rotate(298.8deg); + -ms-transform: rotate(298.8deg); + transform: rotate(298.8deg); +} +.radial-progress[data-progress="83"] .inset .percentage:before { + content: "83%"; +} +.radial-progress[data-progress="84"] .circle .mask.full, +.radial-progress[data-progress="84"] .circle .fill { + -webkit-transform: rotate(151.2deg); + -ms-transform: rotate(151.2deg); + transform: rotate(151.2deg); +} +.radial-progress[data-progress="84"] .circle .fill.fix { + -webkit-transform: rotate(302.4deg); + -ms-transform: rotate(302.4deg); + transform: rotate(302.4deg); +} +.radial-progress[data-progress="84"] .inset .percentage:before { + content: "84%"; +} +.radial-progress[data-progress="85"] .circle .mask.full, +.radial-progress[data-progress="85"] .circle .fill { + -webkit-transform: rotate(153deg); + -ms-transform: rotate(153deg); + transform: rotate(153deg); +} +.radial-progress[data-progress="85"] .circle .fill.fix { + -webkit-transform: rotate(306deg); + -ms-transform: rotate(306deg); + transform: rotate(306deg); +} +.radial-progress[data-progress="85"] .inset .percentage:before { + content: "85%"; +} +.radial-progress[data-progress="86"] .circle .mask.full, +.radial-progress[data-progress="86"] .circle .fill { + -webkit-transform: rotate(154.8deg); + -ms-transform: rotate(154.8deg); + transform: rotate(154.8deg); +} +.radial-progress[data-progress="86"] .circle .fill.fix { + -webkit-transform: rotate(309.6deg); + -ms-transform: rotate(309.6deg); + transform: rotate(309.6deg); +} +.radial-progress[data-progress="86"] .inset .percentage:before { + content: "86%"; +} +.radial-progress[data-progress="87"] .circle .mask.full, +.radial-progress[data-progress="87"] .circle .fill { + -webkit-transform: rotate(156.6deg); + -ms-transform: rotate(156.6deg); + transform: rotate(156.6deg); +} +.radial-progress[data-progress="87"] .circle .fill.fix { + -webkit-transform: rotate(313.2deg); + -ms-transform: rotate(313.2deg); + transform: rotate(313.2deg); +} +.radial-progress[data-progress="87"] .inset .percentage:before { + content: "87%"; +} +.radial-progress[data-progress="88"] .circle .mask.full, +.radial-progress[data-progress="88"] .circle .fill { + -webkit-transform: rotate(158.4deg); + -ms-transform: rotate(158.4deg); + transform: rotate(158.4deg); +} +.radial-progress[data-progress="88"] .circle .fill.fix { + -webkit-transform: rotate(316.8deg); + -ms-transform: rotate(316.8deg); + transform: rotate(316.8deg); +} +.radial-progress[data-progress="88"] .inset .percentage:before { + content: "88%"; +} +.radial-progress[data-progress="89"] .circle .mask.full, +.radial-progress[data-progress="89"] .circle .fill { + -webkit-transform: rotate(160.2deg); + -ms-transform: rotate(160.2deg); + transform: rotate(160.2deg); +} +.radial-progress[data-progress="89"] .circle .fill.fix { + -webkit-transform: rotate(320.4deg); + -ms-transform: rotate(320.4deg); + transform: rotate(320.4deg); +} +.radial-progress[data-progress="89"] .inset .percentage:before { + content: "89%"; +} +.radial-progress[data-progress="90"] .circle .mask.full, +.radial-progress[data-progress="90"] .circle .fill { + -webkit-transform: rotate(162deg); + -ms-transform: rotate(162deg); + transform: rotate(162deg); +} +.radial-progress[data-progress="90"] .circle .fill.fix { + -webkit-transform: rotate(324deg); + -ms-transform: rotate(324deg); + transform: rotate(324deg); +} +.radial-progress[data-progress="90"] .inset .percentage:before { + content: "90%"; +} +.radial-progress[data-progress="91"] .circle .mask.full, +.radial-progress[data-progress="91"] .circle .fill { + -webkit-transform: rotate(163.8deg); + -ms-transform: rotate(163.8deg); + transform: rotate(163.8deg); +} +.radial-progress[data-progress="91"] .circle .fill.fix { + -webkit-transform: rotate(327.6deg); + -ms-transform: rotate(327.6deg); + transform: rotate(327.6deg); +} +.radial-progress[data-progress="91"] .inset .percentage:before { + content: "91%"; +} +.radial-progress[data-progress="92"] .circle .mask.full, +.radial-progress[data-progress="92"] .circle .fill { + -webkit-transform: rotate(165.6deg); + -ms-transform: rotate(165.6deg); + transform: rotate(165.6deg); +} +.radial-progress[data-progress="92"] .circle .fill.fix { + -webkit-transform: rotate(331.2deg); + -ms-transform: rotate(331.2deg); + transform: rotate(331.2deg); +} +.radial-progress[data-progress="92"] .inset .percentage:before { + content: "92%"; +} +.radial-progress[data-progress="93"] .circle .mask.full, +.radial-progress[data-progress="93"] .circle .fill { + -webkit-transform: rotate(167.4deg); + -ms-transform: rotate(167.4deg); + transform: rotate(167.4deg); +} +.radial-progress[data-progress="93"] .circle .fill.fix { + -webkit-transform: rotate(334.8deg); + -ms-transform: rotate(334.8deg); + transform: rotate(334.8deg); +} +.radial-progress[data-progress="93"] .inset .percentage:before { + content: "93%"; +} +.radial-progress[data-progress="94"] .circle .mask.full, +.radial-progress[data-progress="94"] .circle .fill { + -webkit-transform: rotate(169.2deg); + -ms-transform: rotate(169.2deg); + transform: rotate(169.2deg); +} +.radial-progress[data-progress="94"] .circle .fill.fix { + -webkit-transform: rotate(338.4deg); + -ms-transform: rotate(338.4deg); + transform: rotate(338.4deg); +} +.radial-progress[data-progress="94"] .inset .percentage:before { + content: "94%"; +} +.radial-progress[data-progress="95"] .circle .mask.full, +.radial-progress[data-progress="95"] .circle .fill { + -webkit-transform: rotate(171deg); + -ms-transform: rotate(171deg); + transform: rotate(171deg); +} +.radial-progress[data-progress="95"] .circle .fill.fix { + -webkit-transform: rotate(342deg); + -ms-transform: rotate(342deg); + transform: rotate(342deg); +} +.radial-progress[data-progress="95"] .inset .percentage:before { + content: "95%"; +} +.radial-progress[data-progress="96"] .circle .mask.full, +.radial-progress[data-progress="96"] .circle .fill { + -webkit-transform: rotate(172.8deg); + -ms-transform: rotate(172.8deg); + transform: rotate(172.8deg); +} +.radial-progress[data-progress="96"] .circle .fill.fix { + -webkit-transform: rotate(345.6deg); + -ms-transform: rotate(345.6deg); + transform: rotate(345.6deg); +} +.radial-progress[data-progress="96"] .inset .percentage:before { + content: "96%"; +} +.radial-progress[data-progress="97"] .circle .mask.full, +.radial-progress[data-progress="97"] .circle .fill { + -webkit-transform: rotate(174.6deg); + -ms-transform: rotate(174.6deg); + transform: rotate(174.6deg); +} +.radial-progress[data-progress="97"] .circle .fill.fix { + -webkit-transform: rotate(349.2deg); + -ms-transform: rotate(349.2deg); + transform: rotate(349.2deg); +} +.radial-progress[data-progress="97"] .inset .percentage:before { + content: "97%"; +} +.radial-progress[data-progress="98"] .circle .mask.full, +.radial-progress[data-progress="98"] .circle .fill { + -webkit-transform: rotate(176.4deg); + -ms-transform: rotate(176.4deg); + transform: rotate(176.4deg); +} +.radial-progress[data-progress="98"] .circle .fill.fix { + -webkit-transform: rotate(352.8deg); + -ms-transform: rotate(352.8deg); + transform: rotate(352.8deg); +} +.radial-progress[data-progress="98"] .inset .percentage:before { + content: "98%"; +} +.radial-progress[data-progress="99"] .circle .mask.full, +.radial-progress[data-progress="99"] .circle .fill { + -webkit-transform: rotate(178.2deg); + -ms-transform: rotate(178.2deg); + transform: rotate(178.2deg); +} +.radial-progress[data-progress="99"] .circle .fill.fix { + -webkit-transform: rotate(356.4deg); + -ms-transform: rotate(356.4deg); + transform: rotate(356.4deg); +} +.radial-progress[data-progress="99"] .inset .percentage:before { + content: "99%"; +} +.radial-progress[data-progress="100"] .circle .mask.full, +.radial-progress[data-progress="100"] .circle .fill { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.radial-progress[data-progress="100"] .circle .fill.fix { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); +} +.radial-progress[data-progress="100"] .inset .percentage:before { + content: "100%"; +} +.preferences { + flex: 1 auto; + display: flex; + align-items: flex-start; + justify-content: center; +} +.preferences .preferences-content { + flex: 1 auto; + margin-top: 20px; + padding: 50px; + max-width: 640px; + display: flex; + flex-direction: column; +} +.preferences .preferences-content .title { + margin-top: 40px; + border-bottom: 1px solid #eee; + text-align: left; + font-size: 18px; + font-weight: 400; + color: #394c51; +} +.preferences .preferences-content .option { + display: flex; + flex-direction: row; + margin-top: 14px; +} +.preferences .preferences-content .option .option-name { + flex: 0 auto; + color: #777777; +} +.preferences .preferences-content .option .option-value { + flex: 1 auto; + text-align: right; +} +.header { + min-width: 100%; + flex: 0; + min-height: 50px; + -webkit-app-region: drag; + -webkit-user-select: none; +} +.header.no-drag { + -webkit-app-region: no-drag; +} +.header .buttons { + display: inline-block; + position: relative; + top: 16px; + left: 20px; +} +.header .buttons:hover .button-minimize.enabled { + background-image: url('minimize.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .header .buttons:hover .button-minimize.enabled { + background-image: url("minimize@2x.png"); + background-size: 10px 10px; + } +} +.header .buttons:hover .button-close.enabled { + background-image: url('close.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .header .buttons:hover .button-close.enabled { + background-image: url("close@2x.png"); + background-size: 10px 10px; + } +} +.header .buttons:hover .button-fullscreen.enabled { + background-image: url('fullscreen.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .header .buttons:hover .button-fullscreen.enabled { + background-image: url("fullscreen@2x.png"); + background-size: 10px 10px; + } +} +.header .buttons:hover .button-fullscreenclose.enabled { + background-image: url('fullscreenclose.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .header .buttons:hover .button-fullscreenclose.enabled { + background-image: url("fullscreenclose@2x.png"); + background-size: 10px 10px; + } +} +.header .buttons .button { + box-sizing: border-box; + display: inline-block; + background: white; + margin-right: 9px; + height: 12px; + width: 12px; + border: 1px solid #CCD3D5; + border-radius: 6px; + box-shadow: 0px 1px 1px 0px rgba(234, 234, 234, 0.5); + -webkit-app-region: no-drag; +} +.header .buttons .button.disabled { + border: 1px solid #E8EEEF; +} +.header .buttons .button.enabled:hover { + box-shadow: 0px 1px 1px 0px rgba(195, 198, 201, 0.5); +} +.header .buttons .button.enabled:hover:active { + cursor: default; + -webkit-filter: brightness(92%); +} +.popover.popover-view { + min-width: 290px; +} +.popover.popover-volume { + min-width: 400px; +} +.popover .popover-content { + display: flex; + flex-direction: column; + padding: 14px 14px 20px; +} +.popover .popover-content .table { + margin-bottom: 0; +} +.popover .popover-content .table .icon-arrow-right { + color: #aaa; + margin: 2px 9px 0; + flex: 0 auto; + min-width: 13px; +} +.popover .popover-content .table .btn { + min-width: 22px; + margin-left: 10px; +} +.popover .popover-content .table .table-labels { + flex: 1 auto; + display: flex; + font-size: 12px; + color: #c7d7d7; +} +.popover .popover-content .table .table-labels .label-left { + flex: 0 auto; + min-width: 80px; + margin-right: 30px; + text-align: right; +} +.popover .popover-content .table .table-labels .label-right { + flex: 1 auto; + display: inline-block; + width: 40%; +} +.popover .popover-content .table .table-values { + flex: 1 auto; + display: flex; + flex-direction: row; + margin: 8px 0; +} +.popover .popover-content .table .table-values .value-left { + text-align: right; + min-width: 80px; + flex: 0 auto; +} +.popover .popover-content .table .table-values .value-right { + flex: 1 auto; + -webkit-user-select: text; + width: 154px; +} +.popover .popover-content .table .table-new { + margin-top: 10px; + flex: 1 auto; + display: flex; +} +.popover .popover-content .table .table-new input { + padding: 0; + font-weight: 400; +} +.popover .popover-content .table .table-new input.new-left { + flex: 0 auto; + text-align: right; + min-width: 80px; + max-width: 80px; +} +.popover .popover-content .table .table-new .new-right-wrapper { + position: relative; + display: flex; + flex: 1 auto; +} +.popover .popover-content .table .table-new .new-right-wrapper .new-right-placeholder { + position: absolute; + top: 3px; + left: 0; + font-weight: 400; +} +.popover .popover-content .table .table-new .new-right-wrapper input.new-right { + flex: 1 auto; + height: 24px; + position: relative; + padding-left: 107px; +} +.popover .popover-content .table.volumes .label-left { + min-width: 120px; +} +.popover .popover-content .table.volumes .value-left { + min-width: 120px; +} +.popover .popover-content .table.volumes .icon { + color: #aaa; + margin: 2px 9px 0; +} +.popover .popover-content .question { + margin: 12px 6px 6px; +} +.containers { + box-sizing: border-box; + height: 100%; + display: flex; + flex-direction: column; +} +.containers .containers-body { + flex: 1; + display: flex; + flex-direction: row; +} +.containers .containers-body .sidebar { + display: flex; + flex-direction: column; + min-width: 280px; + margin: 0; + box-sizing: border-box; + border-right: 1px solid #eee; +} +.containers .containers-body .sidebar .sidebar-header { + flex: 0 auto; + min-width: 240px; + min-height: 42px; + display: flex; + border-bottom: 1px solid transparent; + transition: border-bottom 0.25s; + padding: 0px 10px 0px 10px; +} +.containers .containers-body .sidebar .sidebar-header.sep { + border-bottom: 1px solid #eee; + box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.03); +} +.containers .containers-body .sidebar .sidebar-header h4 { + align-self: flex-start; + padding: 0 24px; + margin: 14px 0 0; + display: inline-block; + font-size: 14px; + position: relative; +} +.containers .containers-body .sidebar .sidebar-header .create { + flex: 1 auto; + text-align: right; + /*.btn { + margin-top: 4px; + padding: 4px 7px; + font-size: 16px; + position: relative; + .icon { + position: relative; + top: 3px; + left: 1px; + } + }*/ +} +.containers .containers-body .sidebar .sidebar-containers { + position: relative; + flex: 1 auto; + overflow-y: scroll; + overflow-x: hidden; + box-sizing: border-box; + max-width: 280px; +} +.containers .containers-body .sidebar .sidebar-containers.sep { + border-top: 1px solid #eee; +} +.containers .containers-body .sidebar .sidebar-containers ul { + margin: 0; + min-width: 240px; + padding: 0; + margin-top: 4px; + display: flex; + flex-direction: column; +} +.containers .containers-body .sidebar .sidebar-containers ul a { + color: inherit; + flex-shrink: 0; + cursor: default; + margin: 0px 3px 0px 8px; + outline: none; + padding: 4px 5px; +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li { + border-bottom: none; + border-radius: 40px; + background: #24b8eb; +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li .name { + color: white; +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li .image { + color: white; + opacity: 0.9; +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running { + background-image: url('running-white.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running { + background-image: url("running-white@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running .runningwave { + background-image: url('runningwave-white.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running .runningwave { + background-image: url("runningwave-white@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-stopped { + background-image: url('stopped-white.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-stopped { + background-image: url("stopped-white@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading { + background-image: url('downloading-white.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading { + background-image: url("downloading-white@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading .downloading-arrow { + background-image: url('downloading-arrow-white.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading .downloading-arrow { + background-image: url("downloading-arrow-white@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul a:hover { + text-decoration: none; + cursor: default; +} +.containers .containers-body .sidebar .sidebar-containers ul a:focus { + text-decoration: none; +} +.containers .containers-body .sidebar .sidebar-containers ul li { + vertical-align: middle; + padding: 10px 16px 10px 16px; + display: flex; + flex-direction: row; +} +.containers .containers-body .sidebar .sidebar-containers ul li .info { + font-size: 13px; + margin-left: 16px; +} +.containers .containers-body .sidebar .sidebar-containers ul li .info .name { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + font-size: 14px; + font-weight: 400; + color: #253237; +} +.containers .containers-body .sidebar .sidebar-containers ul li .info .image { + color: #7a9999; + font-size: 12px; + font-weight: 400; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.containers .containers-body .sidebar .sidebar-containers ul li .state { + margin-top: 9px; + display: inline-block; + position: relative; + min-width: 20px; + height: 20px; +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-error { + background-image: url('error.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-error { + background-image: url("error@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-stopped { + background-image: url('stopped.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-stopped { + background-image: url("stopped@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-paused { + background-image: url('paused.png'); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-paused { + background-image: url("paused@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-downloading { + background-image: url('downloading.png'); + overflow: hidden; +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-downloading { + background-image: url("downloading@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-downloading .downloading-arrow { + width: 20px; + height: 20px; + background-image: url('downloading-arrow.png'); + position: absolute; + -webkit-animation-name: translatedownload; + -webkit-animation-duration: 1.8s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-downloading .downloading-arrow { + background-image: url("downloading-arrow@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-running { + background-image: url('running.png'); + overflow: hidden; +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-running { + background-image: url("running@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-running .runningwave { + position: absolute; + width: 40px; + height: 20px; + left: -20px; + background-image: url('runningwave.png'); + -webkit-animation-name: translatewave; + -webkit-animation-duration: 8.0s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-running .runningwave { + background-image: url("runningwave@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .sidebar .sidebar-containers ul li .state-restarting { + display: inline-block; + width: 20px; + height: 20px; + background-image: url('restarting.png'); + background-repeat: repeat-x; + -webkit-animation-delay: -1s; + -webkit-animation-name: rotate; + -webkit-animation-duration: 3.0s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { + .containers .containers-body .sidebar .sidebar-containers ul li .state-restarting { + background-image: url("restarting@2x.png"); + background-size: 20px 20px; + } +} +.containers .containers-body .no-containers { + flex: 1 auto; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: relative; +} +.containers .containers-body .no-containers h3 { + position: relative; + top: -44px; + font-size: 18px; + color: #C7D7D7; +} +.containers .containers-body .details { + margin: 0; + padding: 0; + box-sizing: border-box; + flex: 1; + display: flex; + flex-direction: column; +} +.containers .containers-body .details .details-header { + flex: 0 auto; + display: flex; + flex-direction: column; + padding: 4px 40px 10px 40px; + position: relative; + border-bottom: 1px solid #eee; +} +.containers .containers-body .details .details-header .details-header-actions { + flex: 0 auto; + display: flex; + flex-direction: row; + margin-top: 24px; + margin-bottom: 6px; + position: relative; + border-bottom: 1px solid transparent; + transition: border-bottom 0.25s; +} +.containers .containers-body .details .details-header .details-header-actions .action { + flex: 0 auto; + margin-right: 24px; +} +.containers .containers-body .details .details-header .details-header-actions .details-header-actions-rhs { + flex: 1 auto; + display: flex; + align-items: right; + justify-content: flex-end; +} +.containers .containers-body .details .details-header .details-header-actions .details-header-actions-rhs a.btn { + z-index: 0; +} +.containers .containers-body .details .details-header .details-header-info { + display: flex; + flex-direction: row; +} +.containers .containers-body .details .details-header .details-header-info a { + position: absolute; + right: 30px; + top: -4px; +} +.containers .containers-body .details .details-header .details-header-info h1 { + font-size: 20px; + margin: 0; + color: #253237; +} +.containers .containers-body .details .details-header .details-header-info h2.status { + margin: 8px 0px 0px 16px; + text-transform: uppercase; + font-weight: bold; + font-size: 10px; +} +.containers .containers-body .details .details-header .details-header-info h2.status.running { + color: #65e100; +} +.containers .containers-body .details .details-header .details-header-info h2.image-label { + margin: 8px 0px 0px 30px; + font-size: 10px; + color: #7a9999; +} +.containers .containers-body .details .details-header .details-header-info h2.image { + margin: 5px 0px 0px 16px; + font-size: 14px; + color: #546c70; +} +.containers .containers-body .details .details-progress { + margin: 26% auto 0; + width: 300px; +} +.containers .containers-body .details .details-panel { + flex: 1; + overflow: auto; +} +.containers .containers-body .details .details-panel .logs { + -webkit-user-select: text; + font-family: Menlo; + font-size: 12px; + padding: 18px 35px; + color: #617d81; + white-space: pre-wrap; +} +.containers .containers-body .details .details-panel .logs p { + margin: 0 6px; +} +.containers .containers-body .details .details-panel .settings { + padding: 18px 35px; +} +.containers .containers-body .details .container-name { + margin-bottom: 20px; +} +.containers .containers-body .details .container-name input { + width: 20%; +} +.containers .containers-body .details .env-vars-labels { + width: 100%; + font-size: 12px; + color: #c7d7d7; + margin-left: 5px; + margin-bottom: 5px; +} +.containers .containers-body .details .env-vars-labels .label-key { + display: inline-block; + margin-right: 30px; + width: 20%; +} +.containers .containers-body .details .env-vars-labels .label-val { + display: inline-block; + width: 40%; +} +.containers .containers-body .details .env-vars { + margin-bottom: 20px; +} +.containers .containers-body .details .env-vars .keyval-row { + margin-bottom: 5px; +} +.containers .containers-body .details .env-vars input { + margin-right: 30px; +} +.containers .containers-body .details .env-vars input.key { + width: 20%; +} +.containers .containers-body .details .env-vars input.val { + width: 40%; +} +.create-modal .modal-dialog { + margin-top: 80px; + width: calc(468px); +} +.create-modal .modal-content { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); + border: none; + height: 610px; + display: flex; +} +.create-modal .modal-body { + flex: 1 auto; + display: flex; + flex-direction: row; + padding: 32px 32px; +} +.create-modal .modal-body .popover { + width: 180px; + text-align: center; +} +.create-modal .modal-body .popover .popover-content { + max-height: 160px; + padding: 0; + overflow: auto; +} +.create-modal .modal-body .popover ul { + padding: 0; + list-style: none; + margin: 0; +} +.create-modal .modal-body .popover ul li { + padding: 8px 0; + border-bottom: 1px solid #eee; +} +.create-modal .modal-body .popover ul li:hover { + color: white; + background: #24b8eb; +} +.create-modal .modal-body .popover .tags-loading { + margin: 14px auto; + text-align: center; + -webkit-animation-name: spin; + -webkit-animation-duration: 1.8s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; +} +.create-modal .modal-body section.search { + min-width: 404px; +} +.create-modal .modal-body section.search .question { + text-align: right; +} +.create-modal .modal-body section.search .search-bar { + position: relative; +} +.create-modal .modal-body section.search .search-bar .loading { + position: absolute; + left: 13px; + top: 10px; + width: 20px; + height: 20px; + -webkit-animation-name: spin; + -webkit-animation-duration: 1.8s; + -webkit-animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; +} +.create-modal .modal-body section.search .search-bar .search-icon { + font-size: 20px; + color: #7a9999; + position: absolute; + top: 9px; + left: 14px; +} +.create-modal .modal-body section.search .search-bar input { + border-radius: 20px; + font-size: 13px; + height: 38px; + padding: 8px 16px 8px 40px; + color: #253237; + margin-bottom: 3px; + border-color: #c7d7d7; + box-shadow: none; +} +.create-modal .modal-body section.search .search-bar input:focus { + box-shadow: none; + border-color: #7a9999; +} +.create-modal .modal-body section.search .search-bar input::-webkit-input-placeholder { + color: #ddd; + font-weight: 300; +} +.create-modal .modal-body section.search .results { + overflow: auto; + padding-bottom: 80px; +} +.create-modal .modal-body section.search .results .no-results { + text-align: center; +} +.create-modal .modal-body section.search .results .no-results h3 { + color: #ABC0C0; + font-size: 16px; + margin-top: 160px; +} +.create-modal .modal-body section.search .results .title { + flex: 0 auto; + margin-top: 16px; +} +.create-modal .modal-body section.search .results ul { + margin-top: 10px; + list-style: none; + padding: 0; +} +.create-modal .modal-body section.search .results ul li { + display: flex; + flex-direction: row; + padding: 8px 14px 5px 14px; + border-bottom: 1px solid #eee; +} +.create-modal .modal-body section.search .results ul li:hover { + background-color: #fbfcfc; +} +.create-modal .modal-body section.search .results ul li:last-child { + border-bottom: 0; +} +.create-modal .modal-body section.search .results ul li .info { + flex: 0 auto; +} +.create-modal .modal-body section.search .results ul li .info .name { + color: #253237; + max-width: 278px; + font-size: 16px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.create-modal .modal-body section.search .results ul li .info .name img { + margin-right: 6px; + margin-left: 2px; +} +.create-modal .modal-body section.search .results ul li .info .properties { + color: #7a9999; + margin-top: 2px; +} +.create-modal .modal-body section.search .results ul li .info .properties .star-count { + font-size: 10px; + display: inline-block; + position: relative; + top: -3px; + left: 1px; + height: 17px; +} +.create-modal .modal-body section.search .results ul li .info .properties .icon { + overflow: hidden; + display: inline-block; + font-size: 15px; + height: 15px; +} +.create-modal .modal-body section.search .results ul li .action { + position: relative; + top: 5px; + text-align: right; + flex: 1 auto; +} +.create-modal .modal-body section.search .results ul li .action ul { + text-align: center; +} +.create-modal .modal-body section.search .results ul li .action ul ul { + overflow: auto; + max-height: 300px; +} +.create-modal .modal-body section.search .results ul li .action .icon { + position: relative; + top: 2px; + font-size: 11px; +} +.modal-backdrop.in { + background: rgba(227, 230, 230, 0.95); + opacity: 1; + height: 100%; +} +html, +body { + height: 100%; + width: 100%; + overflow: hidden; + -webkit-font-smoothing: antialiased; + -webkit-user-select: none; + font-family: 'Clear Sans', sans-serif; + cursor: default; +} +html img, +body img { + pointer-events: none; +} +::-webkit-scrollbar { + width: 13px; +} +::-webkit-scrollbar-track { + margin: 3px; + -webkit-border-radius: 5px; + border-radius: 5px; + background: none; +} +::-webkit-scrollbar-thumb { + border: 3px solid rgba(0, 0, 0, 0); + background-clip: padding-box; + width: 7px; + border-radius: 8px; + background-color: rgba(0, 0, 0, 0.2); +} +::-webkit-scrollbar-thumb:hover { + background-color: rgba(0, 0, 0, 0.25); +} +.question { + color: #c7d7d7; + font-size: 10px; +} +.popover { + font-family: 'Clear Sans', sans-serif; + color: #546c70; + font-weight: 400; + font-size: 13px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); + border: 1px solid #ddd; +} +@-webkit-keyframes spin { + from { + -webkit-transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + } +} +@-webkit-keyframes translatewave { + from { + -webkit-transform: translateX(0px); + } + to { + -webkit-transform: translateX(20px); + } +} +@-webkit-keyframes translatedownload { + 0% { + -webkit-transform: translateY(6px); + opacity: 0; + } + 25% { + opacity: 1; + -webkit-transform: translateY(6px); + } + 50% { + opacity: 1; + -webkit-transform: translateY(20px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(20px); + } +} +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy9pY29ucy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9ub3JtYWxpemUubGVzcyIsInN0eWxlcy9ib290c3RyYXAvcHJpbnQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvZ2x5cGhpY29ucy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9zY2FmZm9sZGluZy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdmVuZG9yLXByZWZpeGVzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3ZhcmlhYmxlcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdGFiLWZvY3VzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3RodW1ibmFpbHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvY2Fyb3VzZWwubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2ltYWdlLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3R5cGUubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL3RleHQtZW1waGFzaXMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2JhY2tncm91bmQtdmFyaWFudC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdGV4dC1vdmVyZmxvdy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9jb2RlLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2dyaWQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2dyaWQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2dyaWQtZnJhbWV3b3JrLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3RhYmxlcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdGFibGUtcm93Lmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2Zvcm1zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9mb3Jtcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9idXR0b25zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9idXR0b25zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9vcGFjaXR5Lmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2J1dHRvbi1ncm91cHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvY29tcG9uZW50LWFuaW1hdGlvbnMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvZHJvcGRvd25zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9uYXYtZGl2aWRlci5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvcmVzZXQtZmlsdGVyLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9ib3JkZXItcmFkaXVzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2lucHV0LWdyb3Vwcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9uYXZzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL25hdmJhci5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvbmF2LXZlcnRpY2FsLWFsaWduLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3V0aWxpdGllcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9icmVhZGNydW1icy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9wYWdpbmF0aW9uLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9wYWdpbmF0aW9uLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3BhZ2VyLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2xhYmVscy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvbGFiZWxzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2JhZGdlcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9qdW1ib3Ryb24ubGVzcyIsInN0eWxlcy9ib290c3RyYXAvYWxlcnRzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9hbGVydHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvcHJvZ3Jlc3MtYmFycy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvZ3JhZGllbnRzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9wcm9ncmVzcy1iYXIubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWVkaWEubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbGlzdC1ncm91cC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvbGlzdC1ncm91cC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9wYW5lbHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL3BhbmVscy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9yZXNwb25zaXZlLWVtYmVkLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3dlbGxzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2Nsb3NlLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21vZGFscy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC90b29sdGlwLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3BvcG92ZXJzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9jbGVhcmZpeC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvY2VudGVyLWJsb2NrLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9oaWRlLXRleHQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvcmVzcG9uc2l2ZS11dGlsaXRpZXMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL3Jlc3BvbnNpdmUtdmlzaWJpbGl0eS5sZXNzIiwic3R5bGVzL2NsZWFyc2Fucy5sZXNzIiwic3R5bGVzL3RoZW1lLmxlc3MiLCJzdHlsZXMvc2V0dXAubGVzcyIsInN0eWxlcy9yYWRpYWwubGVzcyIsInN0eWxlcy9wcmVmZXJlbmNlcy5sZXNzIiwic3R5bGVzL2hlYWRlci5sZXNzIiwic3R5bGVzL3JldGluYS5sZXNzIiwic3R5bGVzL2NvbnRhaW5lcnMubGVzcyIsInN0eWxlcy9jb250YWluZXItbW9kYWwubGVzcyIsIi4vc3R5bGVzL21haW4ubGVzcyJdLCJuYW1lcyI6W10s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QUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsMkJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZUFBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxlQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsMEJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsNEJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsY0FBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxtQkFBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxlQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHNCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHNCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHFCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGtCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDZCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDRCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDBCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDRCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGdCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGdCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHFCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHNCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsY0FBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxjQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsMkJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsK0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsNEJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsNkJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUNBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZUFBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxlQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGdCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FB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SixtQkFuQzhDO0VBRzVDLGlCQUNFO0VBREYsaUJBRUU7RUFGRixpQkFHRTtFQUhGLGlCQUlFO0lBQ0UsV0FBQTtJQUNBLFlBQUE7SUFDQSxpQkFBQTtJQUNBLGVBQUE7O0VBUkosaUJBVUU7RUFWRixpQkFXRTtJQUNFLGtCQUFBOztFQVpKLGlCQWNFO0VBZEYsaUJBZUU7SUFDRSxtQkFBQTs7RUFLSjtJQUNFLFNBQUE7SUFDQSxVQUFBO0lBQ0Esb0JBQUE7O0VBSUY7SUFDRSxZQUFBOzs7QW9EM1BGLFNBQUM7QUFDRCxTQUFDO0FsRGtNSCxjQUNFLEdrRHBNQztBbERtTUgsY0FDRSxHa0RuTUM7QTdDTEgsVTZDSUc7QTdDSkgsVTZDS0c7QTdDZUgsZ0I2Q2hCRztBN0NnQkgsZ0I2Q2ZHO0E3Q3dCSCxJNkN6Qkc7QTdDeUJILEk2Q3hCRztBeENzZEgsZ0JBcUJFLFl3QzVlQztBeEN1ZEgsZ0JBcUJFLFl3QzNlQztBbkNvQkgsWW1DckJHO0FuQ3FCSCxZbUNwQkc7QW5DZ0lILG1CQVdFLGFtQzVJQztBbkNpSUgsbUJBV0UsYW1DM0lDO0E1Qk5ILEk0QktHO0E1QkxILEk0Qk1HO0EzQkpILE8yQkdHO0EzQkhILE8yQklHO0EzQmdCSCxjMkJqQkc7QTNCaUJILGMyQmhCRztBM0JtQ0gsZ0IyQnBDRztBM0JvQ0gsZ0IyQm5DRztBckJUSCxNcUJRRztBckJSSCxNcUJTRztBUkNILFdRRkc7QVJFSCxXUURHO0FIc0ZILGFHdkZHO0FIdUZILGFHdEZHO0VBQ0MsU0FBUyxHQUFUO0VBQ0EsY0FBQTs7QUFFRixTQUFDO0FsRDhMSCxjQUNFLEdrRC9MQztBN0NUSCxVNkNTRztBN0NXSCxnQjZDWEc7QTdDb0JILEk2Q3BCRztBeENrZEgsZ0JBcUJFLFl3Q3ZlQztBbkNnQkgsWW1DaEJHO0FuQzRISCxtQkFXRSxhbUN2SUM7QTVCVkgsSTRCVUc7QTNCUkgsTzJCUUc7QTNCWUgsYzJCWkc7QTNCK0JILGdCMkIvQkc7QXJCYkgsTXFCYUc7QVJISCxXUUdHO0FIa0ZILGFHbEZHO0VBQ0MsV0FBQTs7QXpCUko7RTBCUkUs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O0VBQ1AsU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixlQUFlO0VBQ2IsU0FBUyxPQUFUOztBQUVGLGVBQWU7RUFDYixTQUFTLE9BQVQ7O0FBRUYsYUFBYTtFQUNYLFNBQVMsT0FBVDs7QUFFRixhQUFhO0VBQ1gsU0FBUyxPQUFUOztBQUVGLGFBQWE7RUFDWCxTQUFTLE9BQVQ7O0FBRUYsYUFBYTtFQUNYLFNBQVMsT0FBVDs7QUFFRixhQUFhO0VBQ1gsU0FBUyxPQUFUOztBQUVGLGFBQWE7RUFDWCxTQUFTLE9BQVQ7O0FBRUYsYUFBYTtFQUNYLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixvQkFBb0I7RUFDbEIsU0FBUyxPQUFUOztBQUVGLG9CQUFvQjtFQUNsQixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixvQkFBb0I7RUFDbEIsU0FBUyxPQUFUOztBQUVGLG9CQUFvQjtFQUNsQixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixvQkFBb0I7RUFDbEIsU0FBUyxPQUFUOztBQUVGLG9CQUFvQjtFQUNsQixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FB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 */ \ No newline at end of file diff --git a/vendor/jasmine-2.1.3/boot.js b/vendor/jasmine-2.1.3/boot.js deleted file mode 100755 index 164f068b09..0000000000 --- a/vendor/jasmine-2.1.3/boot.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - Starting with version 2.0, this file "boots" Jasmine, performing all of the necessary initialization before executing the loaded environment and all of a project's specs. This file should be loaded after `jasmine.js` and `jasmine_html.js`, but before any project source files or spec files are loaded. Thus this file can also be used to customize Jasmine for a project. - - If a project is using Jasmine via the standalone distribution, this file can be customized directly. If a project is using Jasmine via the [Ruby gem][jasmine-gem], this file can be copied into the support directory via `jasmine copy_boot_js`. Other environments (e.g., Python) will have different mechanisms. - - The location of `boot.js` can be specified and/or overridden in `jasmine.yml`. - - [jasmine-gem]: http://github.com/pivotal/jasmine-gem - */ - -(function() { - - /** - * ## Require & Instantiate - * - * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. - */ - window.jasmine = jasmineRequire.core(jasmineRequire); - - /** - * Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference. - */ - jasmineRequire.html(jasmine); - - /** - * Create the Jasmine environment. This is used to run all specs in a project. - */ - var env = jasmine.getEnv(); - - /** - * ## The Global Interface - * - * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. - */ - var jasmineInterface = jasmineRequire.interface(jasmine, env); - - /** - * Add all of the Jasmine global/public interface to the proper global, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. - */ - if (typeof window == "undefined" && typeof exports == "object") { - extend(exports, jasmineInterface); - } else { - extend(window, jasmineInterface); - } - - /** - * ## Runner Parameters - * - * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. - */ - - var queryString = new jasmine.QueryString({ - getWindowLocation: function() { return window.location; } - }); - - var catchingExceptions = queryString.getParam("catch"); - env.catchExceptions(typeof catchingExceptions === "undefined" ? true : catchingExceptions); - - /** - * ## Reporters - * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). - */ - var htmlReporter = new jasmine.HtmlReporter({ - env: env, - onRaiseExceptionsClick: function() { queryString.setParam("catch", !env.catchingExceptions()); }, - getContainer: function() { return document.body; }, - createElement: function() { return document.createElement.apply(document, arguments); }, - createTextNode: function() { return document.createTextNode.apply(document, arguments); }, - timer: new jasmine.Timer() - }); - - /** - * The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript. - */ - env.addReporter(jasmineInterface.jsApiReporter); - env.addReporter(htmlReporter); - - /** - * Filter which specs will be run by matching the start of the full name against the `spec` query param. - */ - var specFilter = new jasmine.HtmlSpecFilter({ - filterString: function() { return queryString.getParam("spec"); } - }); - - env.specFilter = function(spec) { - return specFilter.matches(spec.getFullName()); - }; - - /** - * Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack. - */ - window.setTimeout = window.setTimeout; - window.setInterval = window.setInterval; - window.clearTimeout = window.clearTimeout; - window.clearInterval = window.clearInterval; - - /** - * ## Execution - * - * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. - */ - var currentWindowOnload = window.onload; - - window.onload = function() { - if (currentWindowOnload) { - currentWindowOnload(); - } - htmlReporter.initialize(); - env.execute(); - }; - - /** - * Helper function for readability above. - */ - function extend(destination, source) { - for (var property in source) destination[property] = source[property]; - return destination; - } - -}()); diff --git a/vendor/jasmine-2.1.3/console.js b/vendor/jasmine-2.1.3/console.js deleted file mode 100755 index a65876e911..0000000000 --- a/vendor/jasmine-2.1.3/console.js +++ /dev/null @@ -1,190 +0,0 @@ -/* -Copyright (c) 2008-2014 Pivotal Labs - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -function getJasmineRequireObj() { - if (typeof module !== 'undefined' && module.exports) { - return exports; - } else { - window.jasmineRequire = window.jasmineRequire || {}; - return window.jasmineRequire; - } -} - -getJasmineRequireObj().console = function(jRequire, j$) { - j$.ConsoleReporter = jRequire.ConsoleReporter(); -}; - -getJasmineRequireObj().ConsoleReporter = function() { - - var noopTimer = { - start: function(){}, - elapsed: function(){ return 0; } - }; - - function ConsoleReporter(options) { - var print = options.print, - showColors = options.showColors || false, - onComplete = options.onComplete || function() {}, - timer = options.timer || noopTimer, - specCount, - failureCount, - failedSpecs = [], - pendingCount, - ansi = { - green: '\x1B[32m', - red: '\x1B[31m', - yellow: '\x1B[33m', - none: '\x1B[0m' - }, - failedSuites = []; - - print('ConsoleReporter is deprecated and will be removed in a future version.'); - - this.jasmineStarted = function() { - specCount = 0; - failureCount = 0; - pendingCount = 0; - print('Started'); - printNewline(); - timer.start(); - }; - - this.jasmineDone = function() { - printNewline(); - for (var i = 0; i < failedSpecs.length; i++) { - specFailureDetails(failedSpecs[i]); - } - - if(specCount > 0) { - printNewline(); - - var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' + - failureCount + ' ' + plural('failure', failureCount); - - if (pendingCount) { - specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount); - } - - print(specCounts); - } else { - print('No specs found'); - } - - printNewline(); - var seconds = timer.elapsed() / 1000; - print('Finished in ' + seconds + ' ' + plural('second', seconds)); - printNewline(); - - for(i = 0; i < failedSuites.length; i++) { - suiteFailureDetails(failedSuites[i]); - } - - onComplete(failureCount === 0); - }; - - this.specDone = function(result) { - specCount++; - - if (result.status == 'pending') { - pendingCount++; - print(colored('yellow', '*')); - return; - } - - if (result.status == 'passed') { - print(colored('green', '.')); - return; - } - - if (result.status == 'failed') { - failureCount++; - failedSpecs.push(result); - print(colored('red', 'F')); - } - }; - - this.suiteDone = function(result) { - if (result.failedExpectations && result.failedExpectations.length > 0) { - failureCount++; - failedSuites.push(result); - } - }; - - return this; - - function printNewline() { - print('\n'); - } - - function colored(color, str) { - return showColors ? (ansi[color] + str + ansi.none) : str; - } - - function plural(str, count) { - return count == 1 ? str : str + 's'; - } - - function repeat(thing, times) { - var arr = []; - for (var i = 0; i < times; i++) { - arr.push(thing); - } - return arr; - } - - function indent(str, spaces) { - var lines = (str || '').split('\n'); - var newArr = []; - for (var i = 0; i < lines.length; i++) { - newArr.push(repeat(' ', spaces).join('') + lines[i]); - } - return newArr.join('\n'); - } - - function specFailureDetails(result) { - printNewline(); - print(result.fullName); - - for (var i = 0; i < result.failedExpectations.length; i++) { - var failedExpectation = result.failedExpectations[i]; - printNewline(); - print(indent(failedExpectation.message, 2)); - print(indent(failedExpectation.stack, 2)); - } - - printNewline(); - } - - function suiteFailureDetails(result) { - for (var i = 0; i < result.failedExpectations.length; i++) { - printNewline(); - print(colored('red', 'An error was thrown in an afterAll')); - printNewline(); - print(colored('red', 'AfterAll ' + result.failedExpectations[i].message)); - - } - printNewline(); - } - } - - return ConsoleReporter; -}; diff --git a/vendor/jasmine-2.1.3/jasmine-html.js b/vendor/jasmine-2.1.3/jasmine-html.js deleted file mode 100755 index 898108b77d..0000000000 --- a/vendor/jasmine-2.1.3/jasmine-html.js +++ /dev/null @@ -1,404 +0,0 @@ -/* -Copyright (c) 2008-2014 Pivotal Labs - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -jasmineRequire.html = function(j$) { - j$.ResultsNode = jasmineRequire.ResultsNode(); - j$.HtmlReporter = jasmineRequire.HtmlReporter(j$); - j$.QueryString = jasmineRequire.QueryString(); - j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter(); -}; - -jasmineRequire.HtmlReporter = function(j$) { - - var noopTimer = { - start: function() {}, - elapsed: function() { return 0; } - }; - - function HtmlReporter(options) { - var env = options.env || {}, - getContainer = options.getContainer, - createElement = options.createElement, - createTextNode = options.createTextNode, - onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {}, - timer = options.timer || noopTimer, - results = [], - specsExecuted = 0, - failureCount = 0, - pendingSpecCount = 0, - htmlReporterMain, - symbols, - failedSuites = []; - - this.initialize = function() { - clearPrior(); - htmlReporterMain = createDom('div', {className: 'jasmine_html-reporter'}, - createDom('div', {className: 'banner'}, - createDom('a', {className: 'title', href: 'http://jasmine.github.io/', target: '_blank'}), - createDom('span', {className: 'version'}, j$.version) - ), - createDom('ul', {className: 'symbol-summary'}), - createDom('div', {className: 'alert'}), - createDom('div', {className: 'results'}, - createDom('div', {className: 'failures'}) - ) - ); - getContainer().appendChild(htmlReporterMain); - - symbols = find('.symbol-summary'); - }; - - var totalSpecsDefined; - this.jasmineStarted = function(options) { - totalSpecsDefined = options.totalSpecsDefined || 0; - timer.start(); - }; - - var summary = createDom('div', {className: 'summary'}); - - var topResults = new j$.ResultsNode({}, '', null), - currentParent = topResults; - - this.suiteStarted = function(result) { - currentParent.addChild(result, 'suite'); - currentParent = currentParent.last(); - }; - - this.suiteDone = function(result) { - if (result.status == 'failed') { - failedSuites.push(result); - } - - if (currentParent == topResults) { - return; - } - - currentParent = currentParent.parent; - }; - - this.specStarted = function(result) { - currentParent.addChild(result, 'spec'); - }; - - var failures = []; - this.specDone = function(result) { - if(noExpectations(result) && typeof console !== 'undefined' && typeof console.error !== 'undefined') { - console.error('Spec \'' + result.fullName + '\' has no expectations.'); - } - - if (result.status != 'disabled') { - specsExecuted++; - } - - symbols.appendChild(createDom('li', { - className: noExpectations(result) ? 'empty' : result.status, - id: 'spec_' + result.id, - title: result.fullName - } - )); - - if (result.status == 'failed') { - failureCount++; - - var failure = - createDom('div', {className: 'spec-detail failed'}, - createDom('div', {className: 'description'}, - createDom('a', {title: result.fullName, href: specHref(result)}, result.fullName) - ), - createDom('div', {className: 'messages'}) - ); - var messages = failure.childNodes[1]; - - for (var i = 0; i < result.failedExpectations.length; i++) { - var expectation = result.failedExpectations[i]; - messages.appendChild(createDom('div', {className: 'result-message'}, expectation.message)); - messages.appendChild(createDom('div', {className: 'stack-trace'}, expectation.stack)); - } - - failures.push(failure); - } - - if (result.status == 'pending') { - pendingSpecCount++; - } - }; - - this.jasmineDone = function() { - var banner = find('.banner'); - banner.appendChild(createDom('span', {className: 'duration'}, 'finished in ' + timer.elapsed() / 1000 + 's')); - - var alert = find('.alert'); - - alert.appendChild(createDom('span', { className: 'exceptions' }, - createDom('label', { className: 'label', 'for': 'raise-exceptions' }, 'raise exceptions'), - createDom('input', { - className: 'raise', - id: 'raise-exceptions', - type: 'checkbox' - }) - )); - var checkbox = find('#raise-exceptions'); - - checkbox.checked = !env.catchingExceptions(); - checkbox.onclick = onRaiseExceptionsClick; - - if (specsExecuted < totalSpecsDefined) { - var skippedMessage = 'Ran ' + specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all'; - alert.appendChild( - createDom('span', {className: 'bar skipped'}, - createDom('a', {href: '?', title: 'Run all specs'}, skippedMessage) - ) - ); - } - var statusBarMessage = ''; - var statusBarClassName = 'bar '; - - if (totalSpecsDefined > 0) { - statusBarMessage += pluralize('spec', specsExecuted) + ', ' + pluralize('failure', failureCount); - if (pendingSpecCount) { statusBarMessage += ', ' + pluralize('pending spec', pendingSpecCount); } - statusBarClassName += (failureCount > 0) ? 'failed' : 'passed'; - } else { - statusBarClassName += 'skipped'; - statusBarMessage += 'No specs found'; - } - - alert.appendChild(createDom('span', {className: statusBarClassName}, statusBarMessage)); - - for(i = 0; i < failedSuites.length; i++) { - var failedSuite = failedSuites[i]; - for(var j = 0; j < failedSuite.failedExpectations.length; j++) { - var errorBarMessage = 'AfterAll ' + failedSuite.failedExpectations[j].message; - var errorBarClassName = 'bar errored'; - alert.appendChild(createDom('span', {className: errorBarClassName}, errorBarMessage)); - } - } - - var results = find('.results'); - results.appendChild(summary); - - summaryList(topResults, summary); - - function summaryList(resultsTree, domParent) { - var specListNode; - for (var i = 0; i < resultsTree.children.length; i++) { - var resultNode = resultsTree.children[i]; - if (resultNode.type == 'suite') { - var suiteListNode = createDom('ul', {className: 'suite', id: 'suite-' + resultNode.result.id}, - createDom('li', {className: 'suite-detail'}, - createDom('a', {href: specHref(resultNode.result)}, resultNode.result.description) - ) - ); - - summaryList(resultNode, suiteListNode); - domParent.appendChild(suiteListNode); - } - if (resultNode.type == 'spec') { - if (domParent.getAttribute('class') != 'specs') { - specListNode = createDom('ul', {className: 'specs'}); - domParent.appendChild(specListNode); - } - var specDescription = resultNode.result.description; - if(noExpectations(resultNode.result)) { - specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription; - } - specListNode.appendChild( - createDom('li', { - className: resultNode.result.status, - id: 'spec-' + resultNode.result.id - }, - createDom('a', {href: specHref(resultNode.result)}, specDescription) - ) - ); - } - } - } - - if (failures.length) { - alert.appendChild( - createDom('span', {className: 'menu bar spec-list'}, - createDom('span', {}, 'Spec List | '), - createDom('a', {className: 'failures-menu', href: '#'}, 'Failures'))); - alert.appendChild( - createDom('span', {className: 'menu bar failure-list'}, - createDom('a', {className: 'spec-list-menu', href: '#'}, 'Spec List'), - createDom('span', {}, ' | Failures '))); - - find('.failures-menu').onclick = function() { - setMenuModeTo('failure-list'); - }; - find('.spec-list-menu').onclick = function() { - setMenuModeTo('spec-list'); - }; - - setMenuModeTo('failure-list'); - - var failureNode = find('.failures'); - for (var i = 0; i < failures.length; i++) { - failureNode.appendChild(failures[i]); - } - } - }; - - return this; - - function find(selector) { - return getContainer().querySelector('.jasmine_html-reporter ' + selector); - } - - function clearPrior() { - // return the reporter - var oldReporter = find(''); - - if(oldReporter) { - getContainer().removeChild(oldReporter); - } - } - - function createDom(type, attrs, childrenVarArgs) { - var el = createElement(type); - - for (var i = 2; i < arguments.length; i++) { - var child = arguments[i]; - - if (typeof child === 'string') { - el.appendChild(createTextNode(child)); - } else { - if (child) { - el.appendChild(child); - } - } - } - - for (var attr in attrs) { - if (attr == 'className') { - el[attr] = attrs[attr]; - } else { - el.setAttribute(attr, attrs[attr]); - } - } - - return el; - } - - function pluralize(singular, count) { - var word = (count == 1 ? singular : singular + 's'); - - return '' + count + ' ' + word; - } - - function specHref(result) { - return '?spec=' + encodeURIComponent(result.fullName); - } - - function setMenuModeTo(mode) { - htmlReporterMain.setAttribute('class', 'jasmine_html-reporter ' + mode); - } - - function noExpectations(result) { - return (result.failedExpectations.length + result.passedExpectations.length) === 0 && - result.status === 'passed'; - } - } - - return HtmlReporter; -}; - -jasmineRequire.HtmlSpecFilter = function() { - function HtmlSpecFilter(options) { - var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); - var filterPattern = new RegExp(filterString); - - this.matches = function(specName) { - return filterPattern.test(specName); - }; - } - - return HtmlSpecFilter; -}; - -jasmineRequire.ResultsNode = function() { - function ResultsNode(result, type, parent) { - this.result = result; - this.type = type; - this.parent = parent; - - this.children = []; - - this.addChild = function(result, type) { - this.children.push(new ResultsNode(result, type, this)); - }; - - this.last = function() { - return this.children[this.children.length - 1]; - }; - } - - return ResultsNode; -}; - -jasmineRequire.QueryString = function() { - function QueryString(options) { - - this.setParam = function(key, value) { - var paramMap = queryStringToParamMap(); - paramMap[key] = value; - options.getWindowLocation().search = toQueryString(paramMap); - }; - - this.getParam = function(key) { - return queryStringToParamMap()[key]; - }; - - return this; - - function toQueryString(paramMap) { - var qStrPairs = []; - for (var prop in paramMap) { - qStrPairs.push(encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop])); - } - return '?' + qStrPairs.join('&'); - } - - function queryStringToParamMap() { - var paramStr = options.getWindowLocation().search.substring(1), - params = [], - paramMap = {}; - - if (paramStr.length > 0) { - params = paramStr.split('&'); - for (var i = 0; i < params.length; i++) { - var p = params[i].split('='); - var value = decodeURIComponent(p[1]); - if (value === 'true' || value === 'false') { - value = JSON.parse(value); - } - paramMap[decodeURIComponent(p[0])] = value; - } - } - - return paramMap; - } - - } - - return QueryString; -}; diff --git a/vendor/jasmine-2.1.3/jasmine.css b/vendor/jasmine-2.1.3/jasmine.css deleted file mode 100755 index 7ae5834879..0000000000 --- a/vendor/jasmine-2.1.3/jasmine.css +++ /dev/null @@ -1,62 +0,0 @@ -body { overflow-y: scroll; } - -.jasmine_html-reporter { background-color: #eeeeee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; } -.jasmine_html-reporter a { text-decoration: none; } -.jasmine_html-reporter a:hover { text-decoration: underline; } -.jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; } -.jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; } -.jasmine_html-reporter .banner { position: relative; } -.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=') no-repeat, none; -webkit-background-size: 100%; -moz-background-size: 100%; -o-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; } -.jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; } -.jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; } -.jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; } -.jasmine_html-reporter .version { color: #aaaaaa; } -.jasmine_html-reporter .banner { margin-top: 14px; } -.jasmine_html-reporter .duration { color: #aaaaaa; float: right; } -.jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; } -.jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; } -.jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; } -.jasmine_html-reporter .symbol-summary li.passed:before { color: #007069; content: "\02022"; } -.jasmine_html-reporter .symbol-summary li.failed { line-height: 9px; } -.jasmine_html-reporter .symbol-summary li.failed:before { color: #ca3a11; content: "\d7"; font-weight: bold; margin-left: -1px; } -.jasmine_html-reporter .symbol-summary li.disabled { font-size: 14px; } -.jasmine_html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; } -.jasmine_html-reporter .symbol-summary li.pending { line-height: 17px; } -.jasmine_html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; } -.jasmine_html-reporter .symbol-summary li.empty { font-size: 14px; } -.jasmine_html-reporter .symbol-summary li.empty:before { color: #ba9d37; content: "\02022"; } -.jasmine_html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; } -.jasmine_html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } -.jasmine_html-reporter .bar.failed { background-color: #ca3a11; } -.jasmine_html-reporter .bar.passed { background-color: #007069; } -.jasmine_html-reporter .bar.skipped { background-color: #bababa; } -.jasmine_html-reporter .bar.errored { background-color: #ca3a11; } -.jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; } -.jasmine_html-reporter .bar.menu a { color: #333333; } -.jasmine_html-reporter .bar a { color: white; } -.jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; } -.jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; } -.jasmine_html-reporter .running-alert { background-color: #666666; } -.jasmine_html-reporter .results { margin-top: 14px; } -.jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } -.jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; } -.jasmine_html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } -.jasmine_html-reporter.showDetails .summary { display: none; } -.jasmine_html-reporter.showDetails #details { display: block; } -.jasmine_html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; } -.jasmine_html-reporter .summary { margin-top: 14px; } -.jasmine_html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; } -.jasmine_html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; } -.jasmine_html-reporter .summary li.passed a { color: #007069; } -.jasmine_html-reporter .summary li.failed a { color: #ca3a11; } -.jasmine_html-reporter .summary li.empty a { color: #ba9d37; } -.jasmine_html-reporter .summary li.pending a { color: #ba9d37; } -.jasmine_html-reporter .description + .suite { margin-top: 0; } -.jasmine_html-reporter .suite { margin-top: 14px; } -.jasmine_html-reporter .suite a { color: #333333; } -.jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; } -.jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; } -.jasmine_html-reporter .failures .spec-detail .description a { color: white; } -.jasmine_html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; } -.jasmine_html-reporter .result-message span.result { display: block; } -.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/vendor/jasmine-2.1.3/jasmine.js b/vendor/jasmine-2.1.3/jasmine.js deleted file mode 100755 index 1ccb640964..0000000000 --- a/vendor/jasmine-2.1.3/jasmine.js +++ /dev/null @@ -1,2908 +0,0 @@ -/* -Copyright (c) 2008-2014 Pivotal Labs - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -getJasmineRequireObj = (function (jasmineGlobal) { - var jasmineRequire; - - if (typeof module !== 'undefined' && module.exports) { - jasmineGlobal = global; - jasmineRequire = exports; - } else { - jasmineRequire = jasmineGlobal.jasmineRequire = jasmineGlobal.jasmineRequire || {}; - } - - function getJasmineRequire() { - return jasmineRequire; - } - - getJasmineRequire().core = function(jRequire) { - var j$ = {}; - - jRequire.base(j$, jasmineGlobal); - j$.util = jRequire.util(); - j$.Any = jRequire.Any(); - j$.CallTracker = jRequire.CallTracker(); - j$.MockDate = jRequire.MockDate(); - j$.Clock = jRequire.Clock(); - j$.DelayedFunctionScheduler = jRequire.DelayedFunctionScheduler(); - j$.Env = jRequire.Env(j$); - j$.ExceptionFormatter = jRequire.ExceptionFormatter(); - j$.Expectation = jRequire.Expectation(); - j$.buildExpectationResult = jRequire.buildExpectationResult(); - j$.JsApiReporter = jRequire.JsApiReporter(); - j$.matchersUtil = jRequire.matchersUtil(j$); - j$.ObjectContaining = jRequire.ObjectContaining(j$); - j$.pp = jRequire.pp(j$); - j$.QueueRunner = jRequire.QueueRunner(j$); - j$.ReportDispatcher = jRequire.ReportDispatcher(); - j$.Spec = jRequire.Spec(j$); - j$.SpyRegistry = jRequire.SpyRegistry(j$); - j$.SpyStrategy = jRequire.SpyStrategy(); - j$.Suite = jRequire.Suite(); - j$.Timer = jRequire.Timer(); - j$.version = jRequire.version(); - - j$.matchers = jRequire.requireMatchers(jRequire, j$); - - return j$; - }; - - return getJasmineRequire; -})(this); - -getJasmineRequireObj().requireMatchers = function(jRequire, j$) { - var availableMatchers = [ - 'toBe', - 'toBeCloseTo', - 'toBeDefined', - 'toBeFalsy', - 'toBeGreaterThan', - 'toBeLessThan', - 'toBeNaN', - 'toBeNull', - 'toBeTruthy', - 'toBeUndefined', - 'toContain', - 'toEqual', - 'toHaveBeenCalled', - 'toHaveBeenCalledWith', - 'toMatch', - 'toThrow', - 'toThrowError' - ], - matchers = {}; - - for (var i = 0; i < availableMatchers.length; i++) { - var name = availableMatchers[i]; - matchers[name] = jRequire[name](j$); - } - - return matchers; -}; - -getJasmineRequireObj().base = function(j$, jasmineGlobal) { - j$.unimplementedMethod_ = function() { - throw new Error('unimplemented method'); - }; - - j$.MAX_PRETTY_PRINT_DEPTH = 40; - j$.MAX_PRETTY_PRINT_ARRAY_LENGTH = 100; - j$.DEFAULT_TIMEOUT_INTERVAL = 5000; - - j$.getGlobal = function() { - return jasmineGlobal; - }; - - j$.getEnv = function(options) { - var env = j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options); - //jasmine. singletons in here (setTimeout blah blah). - return env; - }; - - j$.isArray_ = function(value) { - return j$.isA_('Array', value); - }; - - j$.isString_ = function(value) { - return j$.isA_('String', value); - }; - - j$.isNumber_ = function(value) { - return j$.isA_('Number', value); - }; - - j$.isA_ = function(typeName, value) { - return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; - }; - - j$.isDomNode = function(obj) { - return obj.nodeType > 0; - }; - - j$.any = function(clazz) { - return new j$.Any(clazz); - }; - - j$.objectContaining = function(sample) { - return new j$.ObjectContaining(sample); - }; - - j$.createSpy = function(name, originalFn) { - - var spyStrategy = new j$.SpyStrategy({ - name: name, - fn: originalFn, - getSpy: function() { return spy; } - }), - callTracker = new j$.CallTracker(), - spy = function() { - var callData = { - object: this, - args: Array.prototype.slice.apply(arguments) - }; - - callTracker.track(callData); - var returnValue = spyStrategy.exec.apply(this, arguments); - callData.returnValue = returnValue; - - return returnValue; - }; - - for (var prop in originalFn) { - if (prop === 'and' || prop === 'calls') { - throw new Error('Jasmine spies would overwrite the \'and\' and \'calls\' properties on the object being spied upon'); - } - - spy[prop] = originalFn[prop]; - } - - spy.and = spyStrategy; - spy.calls = callTracker; - - return spy; - }; - - j$.isSpy = function(putativeSpy) { - if (!putativeSpy) { - return false; - } - return putativeSpy.and instanceof j$.SpyStrategy && - putativeSpy.calls instanceof j$.CallTracker; - }; - - j$.createSpyObj = function(baseName, methodNames) { - if (!j$.isArray_(methodNames) || methodNames.length === 0) { - throw 'createSpyObj requires a non-empty array of method names to create spies for'; - } - var obj = {}; - for (var i = 0; i < methodNames.length; i++) { - obj[methodNames[i]] = j$.createSpy(baseName + '.' + methodNames[i]); - } - return obj; - }; -}; - -getJasmineRequireObj().util = function() { - - var util = {}; - - util.inherit = function(childClass, parentClass) { - var Subclass = function() { - }; - Subclass.prototype = parentClass.prototype; - childClass.prototype = new Subclass(); - }; - - util.htmlEscape = function(str) { - if (!str) { - return str; - } - return str.replace(/&/g, '&') - .replace(//g, '>'); - }; - - util.argsToArray = function(args) { - var arrayOfArgs = []; - for (var i = 0; i < args.length; i++) { - arrayOfArgs.push(args[i]); - } - return arrayOfArgs; - }; - - util.isUndefined = function(obj) { - return obj === void 0; - }; - - util.arrayContains = function(array, search) { - var i = array.length; - while (i--) { - if (array[i] === search) { - return true; - } - } - return false; - }; - - util.clone = function(obj) { - if (Object.prototype.toString.apply(obj) === '[object Array]') { - return obj.slice(); - } - - var cloned = {}; - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - cloned[prop] = obj[prop]; - } - } - - return cloned; - }; - - return util; -}; - -getJasmineRequireObj().Spec = function(j$) { - function Spec(attrs) { - this.expectationFactory = attrs.expectationFactory; - this.resultCallback = attrs.resultCallback || function() {}; - this.id = attrs.id; - this.description = attrs.description || ''; - this.queueableFn = attrs.queueableFn; - this.beforeAndAfterFns = attrs.beforeAndAfterFns || function() { return {befores: [], afters: []}; }; - this.userContext = attrs.userContext || function() { return {}; }; - this.onStart = attrs.onStart || function() {}; - this.getSpecName = attrs.getSpecName || function() { return ''; }; - this.expectationResultFactory = attrs.expectationResultFactory || function() { }; - this.queueRunnerFactory = attrs.queueRunnerFactory || function() {}; - this.catchingExceptions = attrs.catchingExceptions || function() { return true; }; - - if (!this.queueableFn.fn) { - this.pend(); - } - - this.result = { - id: this.id, - description: this.description, - fullName: this.getFullName(), - failedExpectations: [], - passedExpectations: [] - }; - } - - Spec.prototype.addExpectationResult = function(passed, data) { - var expectationResult = this.expectationResultFactory(data); - if (passed) { - this.result.passedExpectations.push(expectationResult); - } else { - this.result.failedExpectations.push(expectationResult); - } - }; - - Spec.prototype.expect = function(actual) { - return this.expectationFactory(actual, this); - }; - - Spec.prototype.execute = function(onComplete) { - var self = this; - - this.onStart(this); - - if (this.markedPending || this.disabled) { - complete(); - return; - } - - var fns = this.beforeAndAfterFns(); - var allFns = fns.befores.concat(this.queueableFn).concat(fns.afters); - - this.queueRunnerFactory({ - queueableFns: allFns, - onException: function() { self.onException.apply(self, arguments); }, - onComplete: complete, - userContext: this.userContext() - }); - - function complete() { - self.result.status = self.status(); - self.resultCallback(self.result); - - if (onComplete) { - onComplete(); - } - } - }; - - Spec.prototype.onException = function onException(e) { - if (Spec.isPendingSpecException(e)) { - this.pend(); - return; - } - - this.addExpectationResult(false, { - matcherName: '', - passed: false, - expected: '', - actual: '', - error: e - }); - }; - - Spec.prototype.disable = function() { - this.disabled = true; - }; - - Spec.prototype.pend = function() { - this.markedPending = true; - }; - - Spec.prototype.status = function() { - if (this.disabled) { - return 'disabled'; - } - - if (this.markedPending) { - return 'pending'; - } - - if (this.result.failedExpectations.length > 0) { - return 'failed'; - } else { - return 'passed'; - } - }; - - Spec.prototype.isExecutable = function() { - return !this.disabled && !this.markedPending; - }; - - Spec.prototype.getFullName = function() { - return this.getSpecName(this); - }; - - Spec.pendingSpecExceptionMessage = '=> marked Pending'; - - Spec.isPendingSpecException = function(e) { - return !!(e && e.toString && e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1); - }; - - return Spec; -}; - -if (typeof window == void 0 && typeof exports == 'object') { - exports.Spec = jasmineRequire.Spec; -} - -getJasmineRequireObj().Env = function(j$) { - function Env(options) { - options = options || {}; - - var self = this; - var global = options.global || j$.getGlobal(); - - var totalSpecsDefined = 0; - - var catchExceptions = true; - - var realSetTimeout = j$.getGlobal().setTimeout; - var realClearTimeout = j$.getGlobal().clearTimeout; - this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler(), new j$.MockDate(global)); - - var runnableLookupTable = {}; - var runnableResources = {}; - - var currentSpec = null; - var currentlyExecutingSuites = []; - var currentDeclarationSuite = null; - - var currentSuite = function() { - return currentlyExecutingSuites[currentlyExecutingSuites.length - 1]; - }; - - var currentRunnable = function() { - return currentSpec || currentSuite(); - }; - - var reporter = new j$.ReportDispatcher([ - 'jasmineStarted', - 'jasmineDone', - 'suiteStarted', - 'suiteDone', - 'specStarted', - 'specDone' - ]); - - this.specFilter = function() { - return true; - }; - - this.addCustomEqualityTester = function(tester) { - if(!currentRunnable()) { - throw new Error('Custom Equalities must be added in a before function or a spec'); - } - runnableResources[currentRunnable().id].customEqualityTesters.push(tester); - }; - - this.addMatchers = function(matchersToAdd) { - if(!currentRunnable()) { - throw new Error('Matchers must be added in a before function or a spec'); - } - var customMatchers = runnableResources[currentRunnable().id].customMatchers; - for (var matcherName in matchersToAdd) { - customMatchers[matcherName] = matchersToAdd[matcherName]; - } - }; - - j$.Expectation.addCoreMatchers(j$.matchers); - - var nextSpecId = 0; - var getNextSpecId = function() { - return 'spec' + nextSpecId++; - }; - - var nextSuiteId = 0; - var getNextSuiteId = function() { - return 'suite' + nextSuiteId++; - }; - - var expectationFactory = function(actual, spec) { - return j$.Expectation.Factory({ - util: j$.matchersUtil, - customEqualityTesters: runnableResources[spec.id].customEqualityTesters, - customMatchers: runnableResources[spec.id].customMatchers, - actual: actual, - addExpectationResult: addExpectationResult - }); - - function addExpectationResult(passed, result) { - return spec.addExpectationResult(passed, result); - } - }; - - var defaultResourcesForRunnable = function(id, parentRunnableId) { - var resources = {spies: [], customEqualityTesters: [], customMatchers: {}}; - - if(runnableResources[parentRunnableId]){ - resources.customEqualityTesters = j$.util.clone(runnableResources[parentRunnableId].customEqualityTesters); - resources.customMatchers = j$.util.clone(runnableResources[parentRunnableId].customMatchers); - } - - runnableResources[id] = resources; - }; - - var clearResourcesForRunnable = function(id) { - spyRegistry.clearSpies(); - delete runnableResources[id]; - }; - - var beforeAndAfterFns = function(suite, runnablesExplictlySet) { - return function() { - var befores = [], - afters = [], - beforeAlls = [], - afterAlls = []; - - while(suite) { - befores = befores.concat(suite.beforeFns); - afters = afters.concat(suite.afterFns); - - if (runnablesExplictlySet()) { - beforeAlls = beforeAlls.concat(suite.beforeAllFns); - afterAlls = afterAlls.concat(suite.afterAllFns); - } - - suite = suite.parentSuite; - } - return { - befores: beforeAlls.reverse().concat(befores.reverse()), - afters: afters.concat(afterAlls) - }; - }; - }; - - var getSpecName = function(spec, suite) { - return suite.getFullName() + ' ' + spec.description; - }; - - // TODO: we may just be able to pass in the fn instead of wrapping here - var buildExpectationResult = j$.buildExpectationResult, - exceptionFormatter = new j$.ExceptionFormatter(), - expectationResultFactory = function(attrs) { - attrs.messageFormatter = exceptionFormatter.message; - attrs.stackFormatter = exceptionFormatter.stack; - - return buildExpectationResult(attrs); - }; - - // TODO: fix this naming, and here's where the value comes in - this.catchExceptions = function(value) { - catchExceptions = !!value; - return catchExceptions; - }; - - this.catchingExceptions = function() { - return catchExceptions; - }; - - var maximumSpecCallbackDepth = 20; - var currentSpecCallbackDepth = 0; - - function clearStack(fn) { - currentSpecCallbackDepth++; - if (currentSpecCallbackDepth >= maximumSpecCallbackDepth) { - currentSpecCallbackDepth = 0; - realSetTimeout(fn, 0); - } else { - fn(); - } - } - - var catchException = function(e) { - return j$.Spec.isPendingSpecException(e) || catchExceptions; - }; - - var queueRunnerFactory = function(options) { - options.catchException = catchException; - options.clearStack = options.clearStack || clearStack; - options.timer = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout}; - options.fail = self.fail; - - new j$.QueueRunner(options).execute(); - }; - - var topSuite = new j$.Suite({ - env: this, - id: getNextSuiteId(), - description: 'Jasmine__TopLevel__Suite', - queueRunner: queueRunnerFactory - }); - runnableLookupTable[topSuite.id] = topSuite; - defaultResourcesForRunnable(topSuite.id); - currentDeclarationSuite = topSuite; - - this.topSuite = function() { - return topSuite; - }; - - this.execute = function(runnablesToRun) { - if(runnablesToRun) { - runnablesExplictlySet = true; - } else if (focusedRunnables.length) { - runnablesExplictlySet = true; - runnablesToRun = focusedRunnables; - } else { - runnablesToRun = [topSuite.id]; - } - - var allFns = []; - for(var i = 0; i < runnablesToRun.length; i++) { - var runnable = runnableLookupTable[runnablesToRun[i]]; - allFns.push((function(runnable) { return { fn: function(done) { runnable.execute(done); } }; })(runnable)); - } - - reporter.jasmineStarted({ - totalSpecsDefined: totalSpecsDefined - }); - - queueRunnerFactory({queueableFns: allFns, onComplete: reporter.jasmineDone}); - }; - - this.addReporter = function(reporterToAdd) { - reporter.addReporter(reporterToAdd); - }; - - var spyRegistry = new j$.SpyRegistry({currentSpies: function() { - if(!currentRunnable()) { - throw new Error('Spies must be created in a before function or a spec'); - } - return runnableResources[currentRunnable().id].spies; - }}); - - this.spyOn = function() { - return spyRegistry.spyOn.apply(spyRegistry, arguments); - }; - - var suiteFactory = function(description) { - var suite = new j$.Suite({ - env: self, - id: getNextSuiteId(), - description: description, - parentSuite: currentDeclarationSuite, - queueRunner: queueRunnerFactory, - onStart: suiteStarted, - expectationFactory: expectationFactory, - expectationResultFactory: expectationResultFactory, - resultCallback: function(attrs) { - if (!suite.disabled) { - clearResourcesForRunnable(suite.id); - currentlyExecutingSuites.pop(); - } - reporter.suiteDone(attrs); - } - }); - - runnableLookupTable[suite.id] = suite; - return suite; - - function suiteStarted(suite) { - currentlyExecutingSuites.push(suite); - defaultResourcesForRunnable(suite.id, suite.parentSuite.id); - reporter.suiteStarted(suite.result); - } - }; - - this.describe = function(description, specDefinitions) { - var suite = suiteFactory(description); - addSpecsToSuite(suite, specDefinitions); - return suite; - }; - - this.xdescribe = function(description, specDefinitions) { - var suite = this.describe(description, specDefinitions); - suite.disable(); - return suite; - }; - - var focusedRunnables = []; - - this.fdescribe = function(description, specDefinitions) { - var suite = suiteFactory(description); - suite.isFocused = true; - - focusedRunnables.push(suite.id); - unfocusAncestor(); - addSpecsToSuite(suite, specDefinitions); - - return suite; - }; - - function addSpecsToSuite(suite, specDefinitions) { - var parentSuite = currentDeclarationSuite; - parentSuite.addChild(suite); - currentDeclarationSuite = suite; - - var declarationError = null; - try { - specDefinitions.call(suite); - } catch (e) { - declarationError = e; - } - - if (declarationError) { - self.it('encountered a declaration exception', function() { - throw declarationError; - }); - } - - currentDeclarationSuite = parentSuite; - } - - function findFocusedAncestor(suite) { - while (suite) { - if (suite.isFocused) { - return suite.id; - } - suite = suite.parentSuite; - } - - return null; - } - - function unfocusAncestor() { - var focusedAncestor = findFocusedAncestor(currentDeclarationSuite); - if (focusedAncestor) { - for (var i = 0; i < focusedRunnables.length; i++) { - if (focusedRunnables[i] === focusedAncestor) { - focusedRunnables.splice(i, 1); - break; - } - } - } - } - - var runnablesExplictlySet = false; - - var runnablesExplictlySetGetter = function(){ - return runnablesExplictlySet; - }; - - var specFactory = function(description, fn, suite, timeout) { - totalSpecsDefined++; - var spec = new j$.Spec({ - id: getNextSpecId(), - beforeAndAfterFns: beforeAndAfterFns(suite, runnablesExplictlySetGetter), - expectationFactory: expectationFactory, - resultCallback: specResultCallback, - getSpecName: function(spec) { - return getSpecName(spec, suite); - }, - onStart: specStarted, - description: description, - expectationResultFactory: expectationResultFactory, - queueRunnerFactory: queueRunnerFactory, - userContext: function() { return suite.clonedSharedUserContext(); }, - queueableFn: { - fn: fn, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - } - }); - - runnableLookupTable[spec.id] = spec; - - if (!self.specFilter(spec)) { - spec.disable(); - } - - return spec; - - function specResultCallback(result) { - clearResourcesForRunnable(spec.id); - currentSpec = null; - reporter.specDone(result); - } - - function specStarted(spec) { - currentSpec = spec; - defaultResourcesForRunnable(spec.id, suite.id); - reporter.specStarted(spec.result); - } - }; - - this.it = function(description, fn, timeout) { - var spec = specFactory(description, fn, currentDeclarationSuite, timeout); - currentDeclarationSuite.addChild(spec); - return spec; - }; - - this.xit = function() { - var spec = this.it.apply(this, arguments); - spec.pend(); - return spec; - }; - - this.fit = function(){ - var spec = this.it.apply(this, arguments); - - focusedRunnables.push(spec.id); - unfocusAncestor(); - return spec; - }; - - this.expect = function(actual) { - if (!currentRunnable()) { - throw new Error('\'expect\' was used when there was no current spec, this could be because an asynchronous test timed out'); - } - - return currentRunnable().expect(actual); - }; - - this.beforeEach = function(beforeEachFunction, timeout) { - currentDeclarationSuite.beforeEach({ - fn: beforeEachFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.beforeAll = function(beforeAllFunction, timeout) { - currentDeclarationSuite.beforeAll({ - fn: beforeAllFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.afterEach = function(afterEachFunction, timeout) { - currentDeclarationSuite.afterEach({ - fn: afterEachFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.afterAll = function(afterAllFunction, timeout) { - currentDeclarationSuite.afterAll({ - fn: afterAllFunction, - timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } - }); - }; - - this.pending = function() { - throw j$.Spec.pendingSpecExceptionMessage; - }; - - this.fail = function(error) { - var message = 'Failed'; - if (error) { - message += ': '; - message += error.message || error; - } - - currentRunnable().addExpectationResult(false, { - matcherName: '', - passed: false, - expected: '', - actual: '', - message: message - }); - }; - } - - return Env; -}; - -getJasmineRequireObj().JsApiReporter = function() { - - var noopTimer = { - start: function(){}, - elapsed: function(){ return 0; } - }; - - function JsApiReporter(options) { - var timer = options.timer || noopTimer, - status = 'loaded'; - - this.started = false; - this.finished = false; - - this.jasmineStarted = function() { - this.started = true; - status = 'started'; - timer.start(); - }; - - var executionTime; - - this.jasmineDone = function() { - this.finished = true; - executionTime = timer.elapsed(); - status = 'done'; - }; - - this.status = function() { - return status; - }; - - var suites = [], - suites_hash = {}; - - this.suiteStarted = function(result) { - suites_hash[result.id] = result; - }; - - this.suiteDone = function(result) { - storeSuite(result); - }; - - this.suiteResults = function(index, length) { - return suites.slice(index, index + length); - }; - - function storeSuite(result) { - suites.push(result); - suites_hash[result.id] = result; - } - - this.suites = function() { - return suites_hash; - }; - - var specs = []; - - this.specDone = function(result) { - specs.push(result); - }; - - this.specResults = function(index, length) { - return specs.slice(index, index + length); - }; - - this.specs = function() { - return specs; - }; - - this.executionTime = function() { - return executionTime; - }; - - } - - return JsApiReporter; -}; - -getJasmineRequireObj().Any = function() { - - function Any(expectedObject) { - this.expectedObject = expectedObject; - } - - Any.prototype.jasmineMatches = function(other) { - if (this.expectedObject == String) { - return typeof other == 'string' || other instanceof String; - } - - if (this.expectedObject == Number) { - return typeof other == 'number' || other instanceof Number; - } - - if (this.expectedObject == Function) { - return typeof other == 'function' || other instanceof Function; - } - - if (this.expectedObject == Object) { - return typeof other == 'object'; - } - - if (this.expectedObject == Boolean) { - return typeof other == 'boolean'; - } - - return other instanceof this.expectedObject; - }; - - Any.prototype.jasmineToString = function() { - return ''; - }; - - return Any; -}; - -getJasmineRequireObj().CallTracker = function() { - - function CallTracker() { - var calls = []; - - this.track = function(context) { - calls.push(context); - }; - - this.any = function() { - return !!calls.length; - }; - - this.count = function() { - return calls.length; - }; - - this.argsFor = function(index) { - var call = calls[index]; - return call ? call.args : []; - }; - - this.all = function() { - return calls; - }; - - this.allArgs = function() { - var callArgs = []; - for(var i = 0; i < calls.length; i++){ - callArgs.push(calls[i].args); - } - - return callArgs; - }; - - this.first = function() { - return calls[0]; - }; - - this.mostRecent = function() { - return calls[calls.length - 1]; - }; - - this.reset = function() { - calls = []; - }; - } - - return CallTracker; -}; - -getJasmineRequireObj().Clock = function() { - function Clock(global, delayedFunctionScheduler, mockDate) { - var self = this, - realTimingFunctions = { - setTimeout: global.setTimeout, - clearTimeout: global.clearTimeout, - setInterval: global.setInterval, - clearInterval: global.clearInterval - }, - fakeTimingFunctions = { - setTimeout: setTimeout, - clearTimeout: clearTimeout, - setInterval: setInterval, - clearInterval: clearInterval - }, - installed = false, - timer; - - - self.install = function() { - replace(global, fakeTimingFunctions); - timer = fakeTimingFunctions; - installed = true; - - return self; - }; - - self.uninstall = function() { - delayedFunctionScheduler.reset(); - mockDate.uninstall(); - replace(global, realTimingFunctions); - - timer = realTimingFunctions; - installed = false; - }; - - self.mockDate = function(initialDate) { - mockDate.install(initialDate); - }; - - self.setTimeout = function(fn, delay, params) { - if (legacyIE()) { - if (arguments.length > 2) { - throw new Error('IE < 9 cannot support extra params to setTimeout without a polyfill'); - } - return timer.setTimeout(fn, delay); - } - return Function.prototype.apply.apply(timer.setTimeout, [global, arguments]); - }; - - self.setInterval = function(fn, delay, params) { - if (legacyIE()) { - if (arguments.length > 2) { - throw new Error('IE < 9 cannot support extra params to setInterval without a polyfill'); - } - return timer.setInterval(fn, delay); - } - return Function.prototype.apply.apply(timer.setInterval, [global, arguments]); - }; - - self.clearTimeout = function(id) { - return Function.prototype.call.apply(timer.clearTimeout, [global, id]); - }; - - self.clearInterval = function(id) { - return Function.prototype.call.apply(timer.clearInterval, [global, id]); - }; - - self.tick = function(millis) { - if (installed) { - mockDate.tick(millis); - delayedFunctionScheduler.tick(millis); - } else { - throw new Error('Mock clock is not installed, use jasmine.clock().install()'); - } - }; - - return self; - - function legacyIE() { - //if these methods are polyfilled, apply will be present - return !(realTimingFunctions.setTimeout || realTimingFunctions.setInterval).apply; - } - - function replace(dest, source) { - for (var prop in source) { - dest[prop] = source[prop]; - } - } - - function setTimeout(fn, delay) { - return delayedFunctionScheduler.scheduleFunction(fn, delay, argSlice(arguments, 2)); - } - - function clearTimeout(id) { - return delayedFunctionScheduler.removeFunctionWithId(id); - } - - function setInterval(fn, interval) { - return delayedFunctionScheduler.scheduleFunction(fn, interval, argSlice(arguments, 2), true); - } - - function clearInterval(id) { - return delayedFunctionScheduler.removeFunctionWithId(id); - } - - function argSlice(argsObj, n) { - return Array.prototype.slice.call(argsObj, n); - } - } - - return Clock; -}; - -getJasmineRequireObj().DelayedFunctionScheduler = function() { - function DelayedFunctionScheduler() { - var self = this; - var scheduledLookup = []; - var scheduledFunctions = {}; - var currentTime = 0; - var delayedFnCount = 0; - - self.tick = function(millis) { - millis = millis || 0; - var endTime = currentTime + millis; - - runScheduledFunctions(endTime); - currentTime = endTime; - }; - - self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) { - var f; - if (typeof(funcToCall) === 'string') { - /* jshint evil: true */ - f = function() { return eval(funcToCall); }; - /* jshint evil: false */ - } else { - f = funcToCall; - } - - millis = millis || 0; - timeoutKey = timeoutKey || ++delayedFnCount; - runAtMillis = runAtMillis || (currentTime + millis); - - var funcToSchedule = { - runAtMillis: runAtMillis, - funcToCall: f, - recurring: recurring, - params: params, - timeoutKey: timeoutKey, - millis: millis - }; - - if (runAtMillis in scheduledFunctions) { - scheduledFunctions[runAtMillis].push(funcToSchedule); - } else { - scheduledFunctions[runAtMillis] = [funcToSchedule]; - scheduledLookup.push(runAtMillis); - scheduledLookup.sort(function (a, b) { - return a - b; - }); - } - - return timeoutKey; - }; - - self.removeFunctionWithId = function(timeoutKey) { - for (var runAtMillis in scheduledFunctions) { - var funcs = scheduledFunctions[runAtMillis]; - var i = indexOfFirstToPass(funcs, function (func) { - return func.timeoutKey === timeoutKey; - }); - - if (i > -1) { - if (funcs.length === 1) { - delete scheduledFunctions[runAtMillis]; - deleteFromLookup(runAtMillis); - } else { - funcs.splice(i, 1); - } - - // intervals get rescheduled when executed, so there's never more - // than a single scheduled function with a given timeoutKey - break; - } - } - }; - - self.reset = function() { - currentTime = 0; - scheduledLookup = []; - scheduledFunctions = {}; - delayedFnCount = 0; - }; - - return self; - - function indexOfFirstToPass(array, testFn) { - var index = -1; - - for (var i = 0; i < array.length; ++i) { - if (testFn(array[i])) { - index = i; - break; - } - } - - return index; - } - - function deleteFromLookup(key) { - var value = Number(key); - var i = indexOfFirstToPass(scheduledLookup, function (millis) { - return millis === value; - }); - - if (i > -1) { - scheduledLookup.splice(i, 1); - } - } - - function reschedule(scheduledFn) { - self.scheduleFunction(scheduledFn.funcToCall, - scheduledFn.millis, - scheduledFn.params, - true, - scheduledFn.timeoutKey, - scheduledFn.runAtMillis + scheduledFn.millis); - } - - function runScheduledFunctions(endTime) { - if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) { - return; - } - - do { - currentTime = scheduledLookup.shift(); - - var funcsToRun = scheduledFunctions[currentTime]; - delete scheduledFunctions[currentTime]; - - for (var i = 0; i < funcsToRun.length; ++i) { - var funcToRun = funcsToRun[i]; - - if (funcToRun.recurring) { - reschedule(funcToRun); - } - - funcToRun.funcToCall.apply(null, funcToRun.params || []); - } - } while (scheduledLookup.length > 0 && - // checking first if we're out of time prevents setTimeout(0) - // scheduled in a funcToRun from forcing an extra iteration - currentTime !== endTime && - scheduledLookup[0] <= endTime); - } - } - - return DelayedFunctionScheduler; -}; - -getJasmineRequireObj().ExceptionFormatter = function() { - function ExceptionFormatter() { - this.message = function(error) { - var message = ''; - - if (error.name && error.message) { - message += error.name + ': ' + error.message; - } else { - message += error.toString() + ' thrown'; - } - - if (error.fileName || error.sourceURL) { - message += ' in ' + (error.fileName || error.sourceURL); - } - - if (error.line || error.lineNumber) { - message += ' (line ' + (error.line || error.lineNumber) + ')'; - } - - return message; - }; - - this.stack = function(error) { - return error ? error.stack : null; - }; - } - - return ExceptionFormatter; -}; - -getJasmineRequireObj().Expectation = function() { - - function Expectation(options) { - this.util = options.util || { buildFailureMessage: function() {} }; - this.customEqualityTesters = options.customEqualityTesters || []; - this.actual = options.actual; - this.addExpectationResult = options.addExpectationResult || function(){}; - this.isNot = options.isNot; - - var customMatchers = options.customMatchers || {}; - for (var matcherName in customMatchers) { - this[matcherName] = Expectation.prototype.wrapCompare(matcherName, customMatchers[matcherName]); - } - } - - Expectation.prototype.wrapCompare = function(name, matcherFactory) { - return function() { - var args = Array.prototype.slice.call(arguments, 0), - expected = args.slice(0), - message = ''; - - args.unshift(this.actual); - - var matcher = matcherFactory(this.util, this.customEqualityTesters), - matcherCompare = matcher.compare; - - function defaultNegativeCompare() { - var result = matcher.compare.apply(null, args); - result.pass = !result.pass; - return result; - } - - if (this.isNot) { - matcherCompare = matcher.negativeCompare || defaultNegativeCompare; - } - - var result = matcherCompare.apply(null, args); - - if (!result.pass) { - if (!result.message) { - args.unshift(this.isNot); - args.unshift(name); - message = this.util.buildFailureMessage.apply(null, args); - } else { - if (Object.prototype.toString.apply(result.message) === '[object Function]') { - message = result.message(); - } else { - message = result.message; - } - } - } - - if (expected.length == 1) { - expected = expected[0]; - } - - // TODO: how many of these params are needed? - this.addExpectationResult( - result.pass, - { - matcherName: name, - passed: result.pass, - message: message, - actual: this.actual, - expected: expected // TODO: this may need to be arrayified/sliced - } - ); - }; - }; - - Expectation.addCoreMatchers = function(matchers) { - var prototype = Expectation.prototype; - for (var matcherName in matchers) { - var matcher = matchers[matcherName]; - prototype[matcherName] = prototype.wrapCompare(matcherName, matcher); - } - }; - - Expectation.Factory = function(options) { - options = options || {}; - - var expect = new Expectation(options); - - // TODO: this would be nice as its own Object - NegativeExpectation - // TODO: copy instead of mutate options - options.isNot = true; - expect.not = new Expectation(options); - - return expect; - }; - - return Expectation; -}; - -//TODO: expectation result may make more sense as a presentation of an expectation. -getJasmineRequireObj().buildExpectationResult = function() { - function buildExpectationResult(options) { - var messageFormatter = options.messageFormatter || function() {}, - stackFormatter = options.stackFormatter || function() {}; - - var result = { - matcherName: options.matcherName, - message: message(), - stack: stack(), - passed: options.passed - }; - - if(!result.passed) { - result.expected = options.expected; - result.actual = options.actual; - } - - return result; - - function message() { - if (options.passed) { - return 'Passed.'; - } else if (options.message) { - return options.message; - } else if (options.error) { - return messageFormatter(options.error); - } - return ''; - } - - function stack() { - if (options.passed) { - return ''; - } - - var error = options.error; - if (!error) { - try { - throw new Error(message()); - } catch (e) { - error = e; - } - } - return stackFormatter(error); - } - } - - return buildExpectationResult; -}; - -getJasmineRequireObj().MockDate = function() { - function MockDate(global) { - var self = this; - var currentTime = 0; - - if (!global || !global.Date) { - self.install = function() {}; - self.tick = function() {}; - self.uninstall = function() {}; - return self; - } - - var GlobalDate = global.Date; - - self.install = function(mockDate) { - if (mockDate instanceof GlobalDate) { - currentTime = mockDate.getTime(); - } else { - currentTime = new GlobalDate().getTime(); - } - - global.Date = FakeDate; - }; - - self.tick = function(millis) { - millis = millis || 0; - currentTime = currentTime + millis; - }; - - self.uninstall = function() { - currentTime = 0; - global.Date = GlobalDate; - }; - - createDateProperties(); - - return self; - - function FakeDate() { - switch(arguments.length) { - case 0: - return new GlobalDate(currentTime); - case 1: - return new GlobalDate(arguments[0]); - case 2: - return new GlobalDate(arguments[0], arguments[1]); - case 3: - return new GlobalDate(arguments[0], arguments[1], arguments[2]); - case 4: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3]); - case 5: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], - arguments[4]); - case 6: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], - arguments[4], arguments[5]); - case 7: - return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], - arguments[4], arguments[5], arguments[6]); - } - } - - function createDateProperties() { - FakeDate.prototype = GlobalDate.prototype; - - FakeDate.now = function() { - if (GlobalDate.now) { - return currentTime; - } else { - throw new Error('Browser does not support Date.now()'); - } - }; - - FakeDate.toSource = GlobalDate.toSource; - FakeDate.toString = GlobalDate.toString; - FakeDate.parse = GlobalDate.parse; - FakeDate.UTC = GlobalDate.UTC; - } - } - - return MockDate; -}; - -getJasmineRequireObj().ObjectContaining = function(j$) { - - function ObjectContaining(sample) { - this.sample = sample; - } - - ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { - if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); } - - mismatchKeys = mismatchKeys || []; - mismatchValues = mismatchValues || []; - - var hasKey = function(obj, keyName) { - return obj !== null && !j$.util.isUndefined(obj[keyName]); - }; - - for (var property in this.sample) { - if (!hasKey(other, property) && hasKey(this.sample, property)) { - mismatchKeys.push('expected has key \'' + property + '\', but missing from actual.'); - } - else if (!j$.matchersUtil.equals(other[property], this.sample[property])) { - mismatchValues.push('\'' + property + '\' was \'' + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + '\' in actual, but was \'' + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + '\' in expected.'); - } - } - - return (mismatchKeys.length === 0 && mismatchValues.length === 0); - }; - - ObjectContaining.prototype.jasmineToString = function() { - return ''; - }; - - return ObjectContaining; -}; - -getJasmineRequireObj().pp = function(j$) { - - function PrettyPrinter() { - this.ppNestLevel_ = 0; - this.seen = []; - } - - PrettyPrinter.prototype.format = function(value) { - this.ppNestLevel_++; - try { - if (j$.util.isUndefined(value)) { - this.emitScalar('undefined'); - } else if (value === null) { - this.emitScalar('null'); - } else if (value === 0 && 1/value === -Infinity) { - this.emitScalar('-0'); - } else if (value === j$.getGlobal()) { - this.emitScalar(''); - } else if (value.jasmineToString) { - this.emitScalar(value.jasmineToString()); - } else if (typeof value === 'string') { - this.emitString(value); - } else if (j$.isSpy(value)) { - this.emitScalar('spy on ' + value.and.identity()); - } else if (value instanceof RegExp) { - this.emitScalar(value.toString()); - } else if (typeof value === 'function') { - this.emitScalar('Function'); - } else if (typeof value.nodeType === 'number') { - this.emitScalar('HTMLNode'); - } else if (value instanceof Date) { - this.emitScalar('Date(' + value + ')'); - } else if (j$.util.arrayContains(this.seen, value)) { - this.emitScalar(''); - } else if (j$.isArray_(value) || j$.isA_('Object', value)) { - this.seen.push(value); - if (j$.isArray_(value)) { - this.emitArray(value); - } else { - this.emitObject(value); - } - this.seen.pop(); - } else { - this.emitScalar(value.toString()); - } - } finally { - this.ppNestLevel_--; - } - }; - - PrettyPrinter.prototype.iterateObject = function(obj, fn) { - for (var property in obj) { - if (!Object.prototype.hasOwnProperty.call(obj, property)) { continue; } - fn(property, obj.__lookupGetter__ ? (!j$.util.isUndefined(obj.__lookupGetter__(property)) && - obj.__lookupGetter__(property) !== null) : false); - } - }; - - PrettyPrinter.prototype.emitArray = j$.unimplementedMethod_; - PrettyPrinter.prototype.emitObject = j$.unimplementedMethod_; - PrettyPrinter.prototype.emitScalar = j$.unimplementedMethod_; - PrettyPrinter.prototype.emitString = j$.unimplementedMethod_; - - function StringPrettyPrinter() { - PrettyPrinter.call(this); - - this.string = ''; - } - - j$.util.inherit(StringPrettyPrinter, PrettyPrinter); - - StringPrettyPrinter.prototype.emitScalar = function(value) { - this.append(value); - }; - - StringPrettyPrinter.prototype.emitString = function(value) { - this.append('\'' + value + '\''); - }; - - StringPrettyPrinter.prototype.emitArray = function(array) { - if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { - this.append('Array'); - return; - } - var length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH); - this.append('[ '); - for (var i = 0; i < length; i++) { - if (i > 0) { - this.append(', '); - } - this.format(array[i]); - } - if(array.length > length){ - this.append(', ...'); - } - this.append(' ]'); - }; - - StringPrettyPrinter.prototype.emitObject = function(obj) { - if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { - this.append('Object'); - return; - } - - var self = this; - this.append('{ '); - var first = true; - - this.iterateObject(obj, function(property, isGetter) { - if (first) { - first = false; - } else { - self.append(', '); - } - - self.append(property); - self.append(': '); - if (isGetter) { - self.append(''); - } else { - self.format(obj[property]); - } - }); - - this.append(' }'); - }; - - StringPrettyPrinter.prototype.append = function(value) { - this.string += value; - }; - - return function(value) { - var stringPrettyPrinter = new StringPrettyPrinter(); - stringPrettyPrinter.format(value); - return stringPrettyPrinter.string; - }; -}; - -getJasmineRequireObj().QueueRunner = function(j$) { - - function once(fn) { - var called = false; - return function() { - if (!called) { - called = true; - fn(); - } - }; - } - - function QueueRunner(attrs) { - this.queueableFns = attrs.queueableFns || []; - this.onComplete = attrs.onComplete || function() {}; - this.clearStack = attrs.clearStack || function(fn) {fn();}; - this.onException = attrs.onException || function() {}; - this.catchException = attrs.catchException || function() { return true; }; - this.userContext = attrs.userContext || {}; - this.timer = attrs.timeout || {setTimeout: setTimeout, clearTimeout: clearTimeout}; - this.fail = attrs.fail || function() {}; - } - - QueueRunner.prototype.execute = function() { - this.run(this.queueableFns, 0); - }; - - QueueRunner.prototype.run = function(queueableFns, recursiveIndex) { - var length = queueableFns.length, - self = this, - iterativeIndex; - - - for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) { - var queueableFn = queueableFns[iterativeIndex]; - if (queueableFn.fn.length > 0) { - return attemptAsync(queueableFn); - } else { - attemptSync(queueableFn); - } - } - - var runnerDone = iterativeIndex >= length; - - if (runnerDone) { - this.clearStack(this.onComplete); - } - - function attemptSync(queueableFn) { - try { - queueableFn.fn.call(self.userContext); - } catch (e) { - handleException(e, queueableFn); - } - } - - function attemptAsync(queueableFn) { - var clearTimeout = function () { - Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeoutId]]); - }, - next = once(function () { - clearTimeout(timeoutId); - self.run(queueableFns, iterativeIndex + 1); - }), - timeoutId; - - next.fail = function() { - self.fail.apply(null, arguments); - next(); - }; - - if (queueableFn.timeout) { - timeoutId = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() { - var error = new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.'); - onException(error, queueableFn); - next(); - }, queueableFn.timeout()]]); - } - - try { - queueableFn.fn.call(self.userContext, next); - } catch (e) { - handleException(e, queueableFn); - next(); - } - } - - function onException(e, queueableFn) { - self.onException(e); - } - - function handleException(e, queueableFn) { - onException(e, queueableFn); - if (!self.catchException(e)) { - //TODO: set a var when we catch an exception and - //use a finally block to close the loop in a nice way.. - throw e; - } - } - }; - - return QueueRunner; -}; - -getJasmineRequireObj().ReportDispatcher = function() { - function ReportDispatcher(methods) { - - var dispatchedMethods = methods || []; - - for (var i = 0; i < dispatchedMethods.length; i++) { - var method = dispatchedMethods[i]; - this[method] = (function(m) { - return function() { - dispatch(m, arguments); - }; - }(method)); - } - - var reporters = []; - - this.addReporter = function(reporter) { - reporters.push(reporter); - }; - - return this; - - function dispatch(method, args) { - for (var i = 0; i < reporters.length; i++) { - var reporter = reporters[i]; - if (reporter[method]) { - reporter[method].apply(reporter, args); - } - } - } - } - - return ReportDispatcher; -}; - - -getJasmineRequireObj().SpyRegistry = function(j$) { - - function SpyRegistry(options) { - options = options || {}; - var currentSpies = options.currentSpies || function() { return []; }; - - this.spyOn = function(obj, methodName) { - if (j$.util.isUndefined(obj)) { - throw new Error('spyOn could not find an object to spy upon for ' + methodName + '()'); - } - - if (j$.util.isUndefined(obj[methodName])) { - throw new Error(methodName + '() method does not exist'); - } - - if (obj[methodName] && j$.isSpy(obj[methodName])) { - //TODO?: should this return the current spy? Downside: may cause user confusion about spy state - throw new Error(methodName + ' has already been spied upon'); - } - - var spy = j$.createSpy(methodName, obj[methodName]); - - currentSpies().push({ - spy: spy, - baseObj: obj, - methodName: methodName, - originalValue: obj[methodName] - }); - - obj[methodName] = spy; - - return spy; - }; - - this.clearSpies = function() { - var spies = currentSpies(); - for (var i = 0; i < spies.length; i++) { - var spyEntry = spies[i]; - spyEntry.baseObj[spyEntry.methodName] = spyEntry.originalValue; - } - }; - } - - return SpyRegistry; -}; - -getJasmineRequireObj().SpyStrategy = function() { - - function SpyStrategy(options) { - options = options || {}; - - var identity = options.name || 'unknown', - originalFn = options.fn || function() {}, - getSpy = options.getSpy || function() {}, - plan = function() {}; - - this.identity = function() { - return identity; - }; - - this.exec = function() { - return plan.apply(this, arguments); - }; - - this.callThrough = function() { - plan = originalFn; - return getSpy(); - }; - - this.returnValue = function(value) { - plan = function() { - return value; - }; - return getSpy(); - }; - - this.returnValues = function() { - var values = Array.prototype.slice.call(arguments); - plan = function () { - return values.shift(); - }; - return getSpy(); - }; - - this.throwError = function(something) { - var error = (something instanceof Error) ? something : new Error(something); - plan = function() { - throw error; - }; - return getSpy(); - }; - - this.callFake = function(fn) { - plan = fn; - return getSpy(); - }; - - this.stub = function(fn) { - plan = function() {}; - return getSpy(); - }; - } - - return SpyStrategy; -}; - -getJasmineRequireObj().Suite = function() { - function Suite(attrs) { - this.env = attrs.env; - this.id = attrs.id; - this.parentSuite = attrs.parentSuite; - this.description = attrs.description; - this.onStart = attrs.onStart || function() {}; - this.resultCallback = attrs.resultCallback || function() {}; - this.clearStack = attrs.clearStack || function(fn) {fn();}; - this.expectationFactory = attrs.expectationFactory; - this.expectationResultFactory = attrs.expectationResultFactory; - - this.beforeFns = []; - this.afterFns = []; - this.beforeAllFns = []; - this.afterAllFns = []; - this.queueRunner = attrs.queueRunner || function() {}; - this.disabled = false; - - this.children = []; - - this.result = { - id: this.id, - description: this.description, - fullName: this.getFullName(), - failedExpectations: [] - }; - } - - Suite.prototype.expect = function(actual) { - return this.expectationFactory(actual, this); - }; - - Suite.prototype.getFullName = function() { - var fullName = this.description; - for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { - if (parentSuite.parentSuite) { - fullName = parentSuite.description + ' ' + fullName; - } - } - return fullName; - }; - - Suite.prototype.disable = function() { - this.disabled = true; - }; - - Suite.prototype.beforeEach = function(fn) { - this.beforeFns.unshift(fn); - }; - - Suite.prototype.beforeAll = function(fn) { - this.beforeAllFns.push(fn); - }; - - Suite.prototype.afterEach = function(fn) { - this.afterFns.unshift(fn); - }; - - Suite.prototype.afterAll = function(fn) { - this.afterAllFns.push(fn); - }; - - Suite.prototype.addChild = function(child) { - this.children.push(child); - }; - - Suite.prototype.status = function() { - if (this.disabled) { - return 'disabled'; - } - - if (this.result.failedExpectations.length > 0) { - return 'failed'; - } else { - return 'finished'; - } - }; - - Suite.prototype.execute = function(onComplete) { - var self = this; - - this.onStart(this); - - if (this.disabled) { - complete(); - return; - } - - var allFns = []; - - for (var i = 0; i < this.children.length; i++) { - allFns.push(wrapChildAsAsync(this.children[i])); - } - - if (this.isExecutable()) { - allFns = this.beforeAllFns.concat(allFns); - allFns = allFns.concat(this.afterAllFns); - } - - this.queueRunner({ - queueableFns: allFns, - onComplete: complete, - userContext: this.sharedUserContext(), - onException: function() { self.onException.apply(self, arguments); } - }); - - function complete() { - self.result.status = self.status(); - self.resultCallback(self.result); - - if (onComplete) { - onComplete(); - } - } - - function wrapChildAsAsync(child) { - return { fn: function(done) { child.execute(done); } }; - } - }; - - Suite.prototype.isExecutable = function() { - var foundActive = false; - for(var i = 0; i < this.children.length; i++) { - if(this.children[i].isExecutable()) { - foundActive = true; - break; - } - } - return foundActive; - }; - - Suite.prototype.sharedUserContext = function() { - if (!this.sharedContext) { - this.sharedContext = this.parentSuite ? clone(this.parentSuite.sharedUserContext()) : {}; - } - - return this.sharedContext; - }; - - Suite.prototype.clonedSharedUserContext = function() { - return clone(this.sharedUserContext()); - }; - - Suite.prototype.onException = function() { - if(isAfterAll(this.children)) { - var data = { - matcherName: '', - passed: false, - expected: '', - actual: '', - error: arguments[0] - }; - this.result.failedExpectations.push(this.expectationResultFactory(data)); - } else { - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - child.onException.apply(child, arguments); - } - } - }; - - Suite.prototype.addExpectationResult = function () { - if(isAfterAll(this.children) && isFailure(arguments)){ - var data = arguments[1]; - this.result.failedExpectations.push(this.expectationResultFactory(data)); - } else { - for (var i = 0; i < this.children.length; i++) { - var child = this.children[i]; - child.addExpectationResult.apply(child, arguments); - } - } - }; - - function isAfterAll(children) { - return children && children[0].result.status; - } - - function isFailure(args) { - return !args[0]; - } - - function clone(obj) { - var clonedObj = {}; - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - clonedObj[prop] = obj[prop]; - } - } - - return clonedObj; - } - - return Suite; -}; - -if (typeof window == void 0 && typeof exports == 'object') { - exports.Suite = jasmineRequire.Suite; -} - -getJasmineRequireObj().Timer = function() { - var defaultNow = (function(Date) { - return function() { return new Date().getTime(); }; - })(Date); - - function Timer(options) { - options = options || {}; - - var now = options.now || defaultNow, - startTime; - - this.start = function() { - startTime = now(); - }; - - this.elapsed = function() { - return now() - startTime; - }; - } - - return Timer; -}; - -getJasmineRequireObj().matchersUtil = function(j$) { - // TODO: what to do about jasmine.pp not being inject? move to JSON.stringify? gut PrettyPrinter? - - return { - equals: function(a, b, customTesters) { - customTesters = customTesters || []; - - return eq(a, b, [], [], customTesters); - }, - - contains: function(haystack, needle, customTesters) { - customTesters = customTesters || []; - - if ((Object.prototype.toString.apply(haystack) === '[object Array]') || - (!!haystack && !haystack.indexOf)) - { - for (var i = 0; i < haystack.length; i++) { - if (eq(haystack[i], needle, [], [], customTesters)) { - return true; - } - } - return false; - } - - return !!haystack && haystack.indexOf(needle) >= 0; - }, - - buildFailureMessage: function() { - var args = Array.prototype.slice.call(arguments, 0), - matcherName = args[0], - isNot = args[1], - actual = args[2], - expected = args.slice(3), - englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); - - var message = 'Expected ' + - j$.pp(actual) + - (isNot ? ' not ' : ' ') + - englishyPredicate; - - if (expected.length > 0) { - for (var i = 0; i < expected.length; i++) { - if (i > 0) { - message += ','; - } - message += ' ' + j$.pp(expected[i]); - } - } - - return message + '.'; - } - }; - - // Equality function lovingly adapted from isEqual in - // [Underscore](http://underscorejs.org) - function eq(a, b, aStack, bStack, customTesters) { - var result = true; - - for (var i = 0; i < customTesters.length; i++) { - var customTesterResult = customTesters[i](a, b); - if (!j$.util.isUndefined(customTesterResult)) { - return customTesterResult; - } - } - - if (a instanceof j$.Any) { - result = a.jasmineMatches(b); - if (result) { - return true; - } - } - - if (b instanceof j$.Any) { - result = b.jasmineMatches(a); - if (result) { - return true; - } - } - - if (b instanceof j$.ObjectContaining) { - result = b.jasmineMatches(a); - if (result) { - return true; - } - } - - if (a instanceof Error && b instanceof Error) { - return a.message == b.message; - } - - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) { return a !== 0 || 1 / a == 1 / b; } - // A strict comparison is necessary because `null == undefined`. - if (a === null || b === null) { return a === b; } - var className = Object.prototype.toString.call(a); - if (className != Object.prototype.toString.call(b)) { return false; } - switch (className) { - // Strings, numbers, dates, and booleans are compared by value. - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return a == String(b); - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for - // other numeric values. - return a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b); - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a == +b; - // RegExps are compared by their source patterns and flags. - case '[object RegExp]': - return a.source == b.source && - a.global == b.global && - a.multiline == b.multiline && - a.ignoreCase == b.ignoreCase; - } - if (typeof a != 'object' || typeof b != 'object') { return false; } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] == a) { return bStack[length] == b; } - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size = 0; - // Recursively compare objects and arrays. - if (className == '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size == b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack, customTesters))) { break; } - } - } - } else { - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction(aCtor) && (aCtor instanceof aCtor) && - isFunction(bCtor) && (bCtor instanceof bCtor))) { - return false; - } - // Deep compare objects. - for (var key in a) { - if (has(a, key)) { - // Count the expected number of properties. - size++; - // Deep compare each member. - if (!(result = has(b, key) && eq(a[key], b[key], aStack, bStack, customTesters))) { break; } - } - } - // Ensure that both objects contain the same number of properties. - if (result) { - for (key in b) { - if (has(b, key) && !(size--)) { break; } - } - result = !size; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - - return result; - - function has(obj, key) { - return obj.hasOwnProperty(key); - } - - function isFunction(obj) { - return typeof obj === 'function'; - } - } -}; - -getJasmineRequireObj().toBe = function() { - function toBe() { - return { - compare: function(actual, expected) { - return { - pass: actual === expected - }; - } - }; - } - - return toBe; -}; - -getJasmineRequireObj().toBeCloseTo = function() { - - function toBeCloseTo() { - return { - compare: function(actual, expected, precision) { - if (precision !== 0) { - precision = precision || 2; - } - - return { - pass: Math.abs(expected - actual) < (Math.pow(10, -precision) / 2) - }; - } - }; - } - - return toBeCloseTo; -}; - -getJasmineRequireObj().toBeDefined = function() { - function toBeDefined() { - return { - compare: function(actual) { - return { - pass: (void 0 !== actual) - }; - } - }; - } - - return toBeDefined; -}; - -getJasmineRequireObj().toBeFalsy = function() { - function toBeFalsy() { - return { - compare: function(actual) { - return { - pass: !!!actual - }; - } - }; - } - - return toBeFalsy; -}; - -getJasmineRequireObj().toBeGreaterThan = function() { - - function toBeGreaterThan() { - return { - compare: function(actual, expected) { - return { - pass: actual > expected - }; - } - }; - } - - return toBeGreaterThan; -}; - - -getJasmineRequireObj().toBeLessThan = function() { - function toBeLessThan() { - return { - - compare: function(actual, expected) { - return { - pass: actual < expected - }; - } - }; - } - - return toBeLessThan; -}; -getJasmineRequireObj().toBeNaN = function(j$) { - - function toBeNaN() { - return { - compare: function(actual) { - var result = { - pass: (actual !== actual) - }; - - if (result.pass) { - result.message = 'Expected actual not to be NaN.'; - } else { - result.message = function() { return 'Expected ' + j$.pp(actual) + ' to be NaN.'; }; - } - - return result; - } - }; - } - - return toBeNaN; -}; - -getJasmineRequireObj().toBeNull = function() { - - function toBeNull() { - return { - compare: function(actual) { - return { - pass: actual === null - }; - } - }; - } - - return toBeNull; -}; - -getJasmineRequireObj().toBeTruthy = function() { - - function toBeTruthy() { - return { - compare: function(actual) { - return { - pass: !!actual - }; - } - }; - } - - return toBeTruthy; -}; - -getJasmineRequireObj().toBeUndefined = function() { - - function toBeUndefined() { - return { - compare: function(actual) { - return { - pass: void 0 === actual - }; - } - }; - } - - return toBeUndefined; -}; - -getJasmineRequireObj().toContain = function() { - function toContain(util, customEqualityTesters) { - customEqualityTesters = customEqualityTesters || []; - - return { - compare: function(actual, expected) { - - return { - pass: util.contains(actual, expected, customEqualityTesters) - }; - } - }; - } - - return toContain; -}; - -getJasmineRequireObj().toEqual = function() { - - function toEqual(util, customEqualityTesters) { - customEqualityTesters = customEqualityTesters || []; - - return { - compare: function(actual, expected) { - var result = { - pass: false - }; - - result.pass = util.equals(actual, expected, customEqualityTesters); - - return result; - } - }; - } - - return toEqual; -}; - -getJasmineRequireObj().toHaveBeenCalled = function(j$) { - - function toHaveBeenCalled() { - return { - compare: function(actual) { - var result = {}; - - if (!j$.isSpy(actual)) { - throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); - } - - if (arguments.length > 1) { - throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); - } - - result.pass = actual.calls.any(); - - result.message = result.pass ? - 'Expected spy ' + actual.and.identity() + ' not to have been called.' : - 'Expected spy ' + actual.and.identity() + ' to have been called.'; - - return result; - } - }; - } - - return toHaveBeenCalled; -}; - -getJasmineRequireObj().toHaveBeenCalledWith = function(j$) { - - function toHaveBeenCalledWith(util, customEqualityTesters) { - return { - compare: function() { - var args = Array.prototype.slice.call(arguments, 0), - actual = args[0], - expectedArgs = args.slice(1), - result = { pass: false }; - - if (!j$.isSpy(actual)) { - throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); - } - - if (!actual.calls.any()) { - result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but it was never called.'; }; - return result; - } - - if (util.contains(actual.calls.allArgs(), expectedArgs, customEqualityTesters)) { - result.pass = true; - result.message = function() { return 'Expected spy ' + actual.and.identity() + ' not to have been called with ' + j$.pp(expectedArgs) + ' but it was.'; }; - } else { - result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but actual calls were ' + j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g, '') + '.'; }; - } - - return result; - } - }; - } - - return toHaveBeenCalledWith; -}; - -getJasmineRequireObj().toMatch = function() { - - function toMatch() { - return { - compare: function(actual, expected) { - var regexp = new RegExp(expected); - - return { - pass: regexp.test(actual) - }; - } - }; - } - - return toMatch; -}; - -getJasmineRequireObj().toThrow = function(j$) { - - function toThrow(util) { - return { - compare: function(actual, expected) { - var result = { pass: false }, - threw = false, - thrown; - - if (typeof actual != 'function') { - throw new Error('Actual is not a Function'); - } - - try { - actual(); - } catch (e) { - threw = true; - thrown = e; - } - - if (!threw) { - result.message = 'Expected function to throw an exception.'; - return result; - } - - if (arguments.length == 1) { - result.pass = true; - result.message = function() { return 'Expected function not to throw, but it threw ' + j$.pp(thrown) + '.'; }; - - return result; - } - - if (util.equals(thrown, expected)) { - result.pass = true; - result.message = function() { return 'Expected function not to throw ' + j$.pp(expected) + '.'; }; - } else { - result.message = function() { return 'Expected function to throw ' + j$.pp(expected) + ', but it threw ' + j$.pp(thrown) + '.'; }; - } - - return result; - } - }; - } - - return toThrow; -}; - -getJasmineRequireObj().toThrowError = function(j$) { - function toThrowError (util) { - return { - compare: function(actual) { - var threw = false, - pass = {pass: true}, - fail = {pass: false}, - thrown; - - if (typeof actual != 'function') { - throw new Error('Actual is not a Function'); - } - - var errorMatcher = getMatcher.apply(null, arguments); - - try { - actual(); - } catch (e) { - threw = true; - thrown = e; - } - - if (!threw) { - fail.message = 'Expected function to throw an Error.'; - return fail; - } - - if (!(thrown instanceof Error)) { - fail.message = function() { return 'Expected function to throw an Error, but it threw ' + j$.pp(thrown) + '.'; }; - return fail; - } - - if (errorMatcher.hasNoSpecifics()) { - pass.message = 'Expected function not to throw an Error, but it threw ' + fnNameFor(thrown) + '.'; - return pass; - } - - if (errorMatcher.matches(thrown)) { - pass.message = function() { - return 'Expected function not to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + '.'; - }; - return pass; - } else { - fail.message = function() { - return 'Expected function to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + - ', but it threw ' + errorMatcher.thrownDescription(thrown) + '.'; - }; - return fail; - } - } - }; - - function getMatcher() { - var expected = null, - errorType = null; - - if (arguments.length == 2) { - expected = arguments[1]; - if (isAnErrorType(expected)) { - errorType = expected; - expected = null; - } - } else if (arguments.length > 2) { - errorType = arguments[1]; - expected = arguments[2]; - if (!isAnErrorType(errorType)) { - throw new Error('Expected error type is not an Error.'); - } - } - - if (expected && !isStringOrRegExp(expected)) { - if (errorType) { - throw new Error('Expected error message is not a string or RegExp.'); - } else { - throw new Error('Expected is not an Error, string, or RegExp.'); - } - } - - function messageMatch(message) { - if (typeof expected == 'string') { - return expected == message; - } else { - return expected.test(message); - } - } - - return { - errorTypeDescription: errorType ? fnNameFor(errorType) : 'an exception', - thrownDescription: function(thrown) { - var thrownName = errorType ? fnNameFor(thrown.constructor) : 'an exception', - thrownMessage = ''; - - if (expected) { - thrownMessage = ' with message ' + j$.pp(thrown.message); - } - - return thrownName + thrownMessage; - }, - messageDescription: function() { - if (expected === null) { - return ''; - } else if (expected instanceof RegExp) { - return ' with a message matching ' + j$.pp(expected); - } else { - return ' with message ' + j$.pp(expected); - } - }, - hasNoSpecifics: function() { - return expected === null && errorType === null; - }, - matches: function(error) { - return (errorType === null || error.constructor === errorType) && - (expected === null || messageMatch(error.message)); - } - }; - } - - function fnNameFor(func) { - return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1]; - } - - function isStringOrRegExp(potential) { - return potential instanceof RegExp || (typeof potential == 'string'); - } - - function isAnErrorType(type) { - if (typeof type !== 'function') { - return false; - } - - var Surrogate = function() {}; - Surrogate.prototype = type.prototype; - return (new Surrogate()) instanceof Error; - } - } - - return toThrowError; -}; - -getJasmineRequireObj().interface = function(jasmine, env) { - var jasmineInterface = { - describe: function(description, specDefinitions) { - return env.describe(description, specDefinitions); - }, - - xdescribe: function(description, specDefinitions) { - return env.xdescribe(description, specDefinitions); - }, - - fdescribe: function(description, specDefinitions) { - return env.fdescribe(description, specDefinitions); - }, - - it: function(desc, func) { - return env.it(desc, func); - }, - - xit: function(desc, func) { - return env.xit(desc, func); - }, - - fit: function(desc, func) { - return env.fit(desc, func); - }, - - beforeEach: function(beforeEachFunction) { - return env.beforeEach(beforeEachFunction); - }, - - afterEach: function(afterEachFunction) { - return env.afterEach(afterEachFunction); - }, - - beforeAll: function(beforeAllFunction) { - return env.beforeAll(beforeAllFunction); - }, - - afterAll: function(afterAllFunction) { - return env.afterAll(afterAllFunction); - }, - - expect: function(actual) { - return env.expect(actual); - }, - - pending: function() { - return env.pending(); - }, - - fail: function() { - return env.fail.apply(env, arguments); - }, - - spyOn: function(obj, methodName) { - return env.spyOn(obj, methodName); - }, - - jsApiReporter: new jasmine.JsApiReporter({ - timer: new jasmine.Timer() - }), - - jasmine: jasmine - }; - - jasmine.addCustomEqualityTester = function(tester) { - env.addCustomEqualityTester(tester); - }; - - jasmine.addMatchers = function(matchers) { - return env.addMatchers(matchers); - }; - - jasmine.clock = function() { - return env.clock; - }; - - return jasmineInterface; -}; - -getJasmineRequireObj().version = function() { - return '2.1.3'; -}; diff --git a/vendor/jasmine-2.1.3/jasmine_favicon.png b/vendor/jasmine-2.1.3/jasmine_favicon.png deleted file mode 100755 index 3b84583be4b9d5ae9cd5cae07b2dbaa5ebb0ad1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VDb;}332@o1PuQh8X8uGu4-^- zn3*=SA+%wV=cI;&hMB$%-Lc(MLmN8%IwwUpbcA;F2Q;)twND9bn-tpC9oR4-vb8I; zp+Bg#FSKP+P(yD-%f!%zo}iZgh=%Ua=KkP@iNVbiLYsSn8~VeW`+}P$1~&ACHcbd_ z=nZb_32o{NZkZ6&1k^hrxT!a&r8lIdAIJ@9nh?|iRMsET+#A%`AKKg-(%2K)*cZ|~ zA-J&*$PEUH08MM`4Q=iVY3vVfhN$TUscGs5sR8P31X|G_+SnTcv<0XVC=Rr!u|K4# zHyCJU6UYRR;%2BtKv^I=q#2|DECn_k@wXU|=@ zeD&J(8#iy=zH|5fgNKiwJbm`!<*V0k-oF3v@zdvTKYsrD^Y>rGdNDU(R>|^oaSW-5 z%f0Y2x+hSk{p0&HA;E60Oq1S3r7U;(X3MH#?W9nxXzk)srlC4P;cZYe&v*G}mgi%< ze(bTl{@&_)cX8b-kvX%ff9D22e*M~7edm|;|Jb8m2JBzkzKiSBKR0n*?XSyM6fxZY zJ4bb;vGKRiKP(ztq3sJx9iq$Re`-EEQU0KE$sdyqayzp6H-7x+oGKZ_6;hQ_Y|p&y z7o`N7g@ z8Yl1HKL;mFo4BdxljF1}KbfMR6nNdLyPnEap1MqBdI?{g$L58$P8+wftLX5R70)7n`#pwItnbma$w{%`M(`wpsu2rJ60rdGCc> z+~lm)viMYM`=uXwK_$`#_UtRZMO=2-IV)l2vc~)doyPvg-RmxtACQ#v{7}5$&isV+ zPws~n?@yNGy#H1=vTI?;CAl9~9#VgqJ+7`4y~R+Wyj0U+){?lm9r6mtf0gl_VmUW^ z%eje%?jM%^eLuUg#ybXaQM{yQy&8UgiQ`HQ+=iTpjfd0iJ@ ssyFi&dF4%9dEry;pNN)Q>$jg_dr3r;PHA*CFc&d+y85}Sb4q9e0J812W&i*H From 9057c59378c3a163be1df6ecd7468e267bf80d55 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 30 Jan 2015 15:21:55 -0500 Subject: [PATCH 02/12] Fixing case --- index.html | 2 +- package.json | 4 +- src/Boot2Docker.js | 224 ++++++++++++++++++++++++++ src/ContainerDetails.react.js | 4 +- src/ContainerDetailsSettings.react.js | 0 src/ContainerList.react.js | 2 +- src/ContainerStore.js | 8 +- src/ContainerUtil.js | 2 +- src/Containers.react.js | 9 +- src/Docker.js | 28 ++++ src/Main.js | 44 +++++ src/Menu.js | 2 +- src/Registry.js | 84 ++++++++++ src/Routes.js | 33 ++++ src/Setup.react.js | 10 +- src/Util.js | 103 ++++++++++++ src/router.js | 2 +- src/virtualbox.js | 2 +- 18 files changed, 539 insertions(+), 24 deletions(-) create mode 100644 src/Boot2Docker.js delete mode 100644 src/ContainerDetailsSettings.react.js create mode 100644 src/Docker.js create mode 100644 src/Main.js create mode 100644 src/Registry.js create mode 100644 src/Routes.js create mode 100644 src/Util.js diff --git a/index.html b/index.html index a97ba8b788..94d57f9b1e 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ Kitematic - + diff --git a/package.json b/package.json index 6451447e46..3618b083e5 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "bugs": "https://github.com/kitematic/kitematic/issues", "scripts": { - "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & ./cache/Atom.app/Contents/MacOS/Atom .", + "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & ./cache/Atom.app/Contents/MacOS/Atom . && kill $(pgrep node)", "preinstall": "./deps", "test": "jest", "release": "./release" @@ -33,7 +33,7 @@ "dependencies": { "ansi-to-html": "0.2.0", "async": "^0.9.0", - "bugsnag-js": "git+https://git@github.com/bugsnag/bugsnag-js", + "bugsnag-js": "^2.4.6", "dockerode": "2.0.4", "exec": "0.1.2", "gulp-react": "^2.0.0", diff --git a/src/Boot2Docker.js b/src/Boot2Docker.js new file mode 100644 index 0000000000..8e64baedc4 --- /dev/null +++ b/src/Boot2Docker.js @@ -0,0 +1,224 @@ +var exec = require('exec'); +var path = require('path'); +var fs = require('fs'); +var path = require('path'); +var async = require('async'); + +var cmdExec = function (cmd, callback) { + exec(cmd, function (stderr, stdout, code) { + if (code !== 0) { + callback('Exit code ' + code + ': ' + stderr); + } else { + callback(null, stdout); + } + }); +}; + +var homeDir = function () { + return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME']; +}; + +var Boot2Docker = { + version: function () { + return JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'))['boot2docker-version']; + }, + cliVersion: function (callback) { + cmdExec([Boot2Docker.command(), 'version'], function (err, out) { + if (err) { + callback(err); + return; + } + var match = out.match(/version: v(\d+\.\d+\.\d+)/); + if (!match || match.length < 2) { + callback('Could not parse the boot2docker cli version.'); + } else { + callback(null, match[1]); + } + }); + }, + isoVersion: function (callback) { + fs.readFile(path.join(homeDir(), '.boot2docker', 'boot2docker.iso'), 'utf8', function (err, data) { + if (err) { + callback(err); + return; + } + var match = data.match(/Boot2Docker-v(\d+\.\d+\.\d+)/); + if (!match) { + callback('Could not parse boot2docker iso version'); + return; + } + callback (null, match[1]); + }); + }, + command: function () { + return path.join(process.cwd(), 'resources', 'boot2docker-' + this.version()); + }, + exists: function (callback) { + cmdExec([Boot2Docker.command(), 'info'], function (err, out) { + if (err) { + callback(null, false); + } else { + callback(null, true); + } + }); + }, + status: function (callback) { + cmdExec([Boot2Docker.command(), 'status'], function (err, out) { + if (err) { + callback(err); + return; + } + callback(null, out.trim()); + }); + }, + init: function (callback) { + cmdExec([Boot2Docker.command(), 'init'], callback); + }, + start: function (callback) { + cmdExec([Boot2Docker.command(), 'start'], callback); + }, + stop: function (callback) { + cmdExec([Boot2Docker.command(), 'stop'], callback); + }, + upgrade: function (callback) { + cmdExec([Boot2Docker.command(), 'upgrade'], callback); + }, + ip: function (callback) { + cmdExec([Boot2Docker.command(), 'ip'], callback); + }, + erase: function (callback) { + var VMFileLocation = path.join(homeDir(), 'VirtualBox\\ VMs/boot2docker-vm'); + cmdExec(['rm', '-rf', VMFileLocation], callback); + }, + state: function (callback) { + cmdExec([Boot2Docker.command(), 'info'], function (err, out) { + if (err) { + callback(err); + return; + } + try { + var info = JSON.parse(out); + callback(null, info.State); + } catch (e) { + callback(e, null); + } + }); + }, + disk: function (callback) { + cmdExec([Boot2Docker.command(), 'ssh', 'df'], function (err, out) { + if (err) { + callback(err); + return; + } + try { + var lines = out.split('\n'); + var dataline = _.find(lines, function (line) { + return line.indexOf('/dev/sda1') !== -1; + }); + var tokens = dataline.split(' '); + tokens = tokens.filter(function (token) { + return token !== ''; + }); + var usedGb = parseInt(tokens[2], 10) / 1000000; + var totalGb = parseInt(tokens[3], 10) / 1000000; + var percent = parseInt(tokens[4].replace('%', ''), 10); + callback(null, { + used_gb: usedGb.toFixed(2), + total_gb: totalGb.toFixed(2), + percent: percent + }); + } catch (error) { + callback(error, null); + } + }); + }, + memory: function (callback) { + cmdExec([Boot2Docker.command(), 'ssh', 'free -m'], function (err, out) { + if (err) { + callback(err); + return; + } + try { + var lines = out.split('\n'); + var dataline = _.find(lines, function (line) { + return line.indexOf('-/+ buffers') !== -1; + }); + var tokens = dataline.split(' '); + tokens = tokens.filter(function(token) { + return token !== ''; + }); + var usedGb = parseInt(tokens[2], 10) / 1000; + var freeGb = parseInt(tokens[3], 10) / 1000; + var totalGb = usedGb + freeGb; + var percent = Math.round(usedGb / totalGb * 100); + callback(null, { + used_gb: usedGb.toFixed(2), + total_gb: totalGb.toFixed(2), + free_gb: freeGb.toFixed(2), + percent: percent + }); + } catch (error) { + callback(error); + } + }); + }, + createScratchImage: function (callback) { + cmdExec([Boot2Docker.command(), 'ssh', 'tar cv --files-from /dev/null | docker import - scratch'], function (err, out) { + callback(err); + }); + }, + stats: function (callback) { + var self = this; + self.state(function (err, state) { + if (err) { + callback(err); + return; + } + if (state === 'poweroff') { + callback(null, {state: state}); + return; + } + self.memoryUsage(function (err, mem) { + if (err) { + callback(null, {state: state}); + return; + } + self.diskUsage(function (err, disk) { + if (err) { + callback(null, {state: state, memory: mem}); + return; + } + callback(null, { + state: state, + memory: mem, + disk: disk + }); + }); + }); + }); + }, + sshKeyExists: function () { + return fs.existsSync(path.join(homeDir(), '.ssh', 'id_boot2docker')); + }, + + // Todo: move me to setup + waitWhileStatus: function (status, callback) { + var current = status; + async.whilst(function () { + return current === status; + }, function (callback) { + Boot2Docker.status(function (err, vmStatus) { + if (err) { + callback(err); + } else { + current = vmStatus.trim(); + callback(); + } + }); + }, function (err) { + callback(err); + }); + } +}; + +module.exports = Boot2Docker; diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index 7f0fbc7941..d753ef7c05 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -9,8 +9,8 @@ var remote = require('remote'); var dialog = remote.require('dialog'); var ContainerStore = require('./ContainerStore'); var ContainerUtil = require('./ContainerUtil'); -var docker = require('./docker'); -var boot2docker = require('./boot2docker'); +var docker = require('./Docker'); +var boot2docker = require('./Boot2Docker'); var ProgressBar = require('react-bootstrap/ProgressBar'); var Popover = require('react-bootstrap/Popover'); diff --git a/src/ContainerDetailsSettings.react.js b/src/ContainerDetailsSettings.react.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/ContainerList.react.js b/src/ContainerList.react.js index 0d00fa0e40..2e65a6ddd5 100644 --- a/src/ContainerList.react.js +++ b/src/ContainerList.react.js @@ -8,7 +8,7 @@ var RetinaImage = require('react-retina-image'); var ModalTrigger = require('react-bootstrap/ModalTrigger'); var ContainerModal = require('./ContainerModal.react'); var Header = require('./Header.react'); -var docker = require('./docker'); +var docker = require('./Docker'); var ContainerList = React.createClass({ componentWillMount: function () { diff --git a/src/ContainerStore.js b/src/ContainerStore.js index 3e79c24728..3f304fad0a 100644 --- a/src/ContainerStore.js +++ b/src/ContainerStore.js @@ -1,14 +1,14 @@ +var $ = require('jquery'); +var _ = require('underscore'); var EventEmitter = require('events').EventEmitter; var async = require('async'); var path = require('path'); var assign = require('object-assign'); var Stream = require('stream'); var Convert = require('ansi-to-html'); -var docker = require('./docker'); -var registry = require('./registry'); +var docker = require('./Docker'); +var registry = require('./Registry'); var ContainerUtil = require('./ContainerUtil'); -var $ = require('jquery'); -var _ = require('underscore'); var convert = new Convert(); diff --git a/src/ContainerUtil.js b/src/ContainerUtil.js index 1b396b0298..86aebd701a 100644 --- a/src/ContainerUtil.js +++ b/src/ContainerUtil.js @@ -1,5 +1,5 @@ var _ = require('underscore'); -var docker = require('./docker'); +var docker = require('./Docker'); var ContainerUtil = { env: function (container) { diff --git a/src/Containers.react.js b/src/Containers.react.js index 0372475515..8c527d978d 100644 --- a/src/Containers.react.js +++ b/src/Containers.react.js @@ -1,3 +1,6 @@ +var async = require('async'); +var _ = require('underscore'); +var $ = require('jquery'); var React = require('react/addons'); var Router = require('react-router'); var RetinaImage = require('react-retina-image'); @@ -6,11 +9,7 @@ var ContainerModal = require('./ContainerModal.react'); var ContainerStore = require('./ContainerStore'); var ContainerList = require('./ContainerList.react'); var Header = require('./Header.react'); -var async = require('async'); -var _ = require('underscore'); -var docker = require('./docker'); -var $ = require('jquery'); - +var docker = require('./Docker'); var Containers = React.createClass({ mixins: [Router.Navigation, Router.State], getInitialState: function () { diff --git a/src/Docker.js b/src/Docker.js new file mode 100644 index 0000000000..ac9701546a --- /dev/null +++ b/src/Docker.js @@ -0,0 +1,28 @@ +var fs = require('fs'); +var path = require('path'); +var dockerode = require('dockerode'); + +var Docker = { + host: null, + _client: null, + setHost: function(host) { + this.host = host; + var certDir = path.join(process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'], '.boot2docker/certs/boot2docker-vm'); + if (!fs.existsSync(certDir)) { + return; + } + this._client = new dockerode({ + protocol: 'https', + host: this.host, + port: 2376, + ca: fs.readFileSync(path.join(certDir, 'ca.pem')), + cert: fs.readFileSync(path.join(certDir, 'cert.pem')), + key: fs.readFileSync(path.join(certDir, 'key.pem')) + }); + }, + client: function () { + return this._client; + } +}; + +module.exports = Docker; diff --git a/src/Main.js b/src/Main.js new file mode 100644 index 0000000000..4c485a892b --- /dev/null +++ b/src/Main.js @@ -0,0 +1,44 @@ +var module = require('module'); +require.main.paths.splice(0, 0, process.env.NODE_PATH); + +var Bugsnag = require('bugsnag-js'); +var React = require('react'); +var Router = require('react-router'); +var RetinaImage = require('react-retina-image'); +var async = require('async'); +var docker = require('./docker'); +var router = require('./router'); +var boot2docker = require('./boot2docker'); +var ContainerStore = require('./ContainerStore'); +var Menu = require('./Menu'); +var remote = require('remote'); +var app = remote.require('app'); +var ipc = require('ipc'); + + +var Route = Router.Route; +var NotFoundRoute = Router.NotFoundRoute; +var DefaultRoute = Router.DefaultRoute; +var Link = Router.Link; +var RouteHandler = Router.RouteHandler; + +Bugsnag.apiKey = 'fc51aab02ce9dd1bb6ebc9fe2f4d43d7'; +Bugsnag.autoNotify = true; +Bugsnag.releaseStage = process.env.NODE_ENV === 'development' ? 'development' : 'production'; +Bugsnag.notifyReleaseStages = []; +Bugsnag.appVersion = app.getVersion(); + +if (!window.location.hash.length || window.location.hash === '#/') { + router.run(function (Handler) { + React.render(, document.body); + }); +} else { + boot2docker.ip(function (err, ip) { + docker.setHost(ip); + ContainerStore.init(function () { + router.run(function (Handler) { + React.render(, document.body); + }); + }); + }); +} diff --git a/src/Menu.js b/src/Menu.js index 68bcd9cf2a..336209f99f 100644 --- a/src/Menu.js +++ b/src/Menu.js @@ -3,7 +3,7 @@ var app = remote.require('app'); var Menu = remote.require('menu'); var MenuItem = remote.require('menu-item'); var BrowserWindow = remote.require('browser-window'); -var router = require('./router'); +var router = require('./Router'); // main.js var template = [ diff --git a/src/Registry.js b/src/Registry.js new file mode 100644 index 0000000000..2fc0dcf0be --- /dev/null +++ b/src/Registry.js @@ -0,0 +1,84 @@ +var async = require('async'); +var $ = require('jquery'); + +var Registry = { + token: function(repository, callback) { + $.ajax({ + url: 'https://registry.hub.docker.com/v1/repositories/' + repository + '/images', + headers: { + 'X-Docker-Token': true, + }, + success: function (res, status, xhr) { + callback(null, xhr.getResponseHeader('X-Docker-Token')); + }, + error: function (err) { + callback(err); + } + }); + }, + ancestry: function (imageId, token, callback) { + $.ajax({ + url: 'https://registry-1.docker.io/v1/images/' + imageId + '/ancestry', + headers: { + Authorization: 'Token ' + token + }, + success: function (layers, status, xhr) { + callback(null, layers); + }, + error: function (err) { + callback(err); + } + }); + }, + imageId: function (repository, tag, token, callback) { + $.ajax({ + url: 'https://registry-1.docker.io/v1/repositories/' + repository + '/tags/' + tag, + headers: { + Authorization: 'Token ' + token + }, + success: function (res, status, xhr) { + callback(null, res); + }, + error: function (err) { + callback(err); + } + }); + }, + + // Returns an array [{Id: <12 character image ID, size: size of layer in bytes}] + layers: function (repository, tag, callback) { + var self = this; + this.token(repository, function (err, token) { + self.imageId(repository, tag, token, function (err, imageId) { + self.ancestry(imageId, token, function (err, layers) { + async.map(layers, function (layer, callback) { + $.ajax({ + url: 'https://registry-1.docker.io/v1/images/' + layer + '/json', + headers: { + Authorization: 'Token ' + token + }, + success: function (res, status, xhr) { + var size = xhr.getResponseHeader('X-Docker-Size'); + callback(null, { + Id: layer.slice(0, 12), + size: parseInt(size, 10) + }); + }, + error: function (err) { + callback(err); + } + }); + }, function (err, results) { + if (err) { + callback('Could not sum' + err); + return; + } + callback(null, results); + }); + }); + }); + }); + } +}; + +module.exports = Registry; diff --git a/src/Routes.js b/src/Routes.js new file mode 100644 index 0000000000..92b9df7d3a --- /dev/null +++ b/src/Routes.js @@ -0,0 +1,33 @@ +var React = require('react/addons'); +var Setup = require('./Setup.react'); +var Containers = require('./Containers.react'); +var ContainerDetails = require('./ContainerDetails.react'); +var Preferences = require('./Preferences.react'); +var NoContainers = require('./NoContainers.react'); +var Router = require('react-router'); + +var Route = Router.Route; +var DefaultRoute = Router.DefaultRoute; +var RouteHandler = Router.RouteHandler; + +var App = React.createClass({ + render: function () { + return ( + + ); + } +}); + +var routes = ( + + + + + + + + + +); + +module.exports = routes; diff --git a/src/Setup.react.js b/src/Setup.react.js index 5c07232533..5a77893b5a 100644 --- a/src/Setup.react.js +++ b/src/Setup.react.js @@ -5,11 +5,11 @@ var async = require('async'); var assign = require('object-assign'); var fs = require('fs'); var path = require('path'); -var boot2docker = require('./boot2docker.js'); -var virtualbox = require('./virtualbox.js'); -var util = require('./util.js'); -var docker = require('./docker.js'); -var ContainerStore = require('./ContainerStore.js'); +var boot2docker = require('./Boot2Docker'); +var virtualbox = require('./Virtualbox'); +var util = require('./Util'); +var docker = require('./Docker'); +var ContainerStore = require('./ContainerStore'); var setupSteps = [ { diff --git a/src/Util.js b/src/Util.js new file mode 100644 index 0000000000..78a4c61035 --- /dev/null +++ b/src/Util.js @@ -0,0 +1,103 @@ +var path = require('path'); +var fs = require('fs'); +var nodeCrypto = require('crypto'); +var request = require('request'); +var progress = require('request-progress'); +var exec = require('exec'); + +var Util = { + supportDir: function (callback) { + var dirs = ['Application\ Support', 'Kitematic']; + var acc = process.env.HOME; + dirs.forEach(function (d) { + acc = path.join(acc, d); + if (!fs.existsSync(acc)) { + fs.mkdirSync(acc); + } + }); + return acc; + }, + download: function (url, filename, checksum, callback, progressCallback) { + var doDownload = function () { + progress(request({ + uri: url, + rejectUnauthorized: false + }), { + throttle: 250 + }).on('progress', function (state) { + progressCallback(state.percent); + }).on('error', function (err) { + callback(err); + }).pipe(fs.createWriteStream(filename)).on('error', function (err) { + callback(err); + }).on('close', function (err) { + callback(err); + }); + }; + + // Compare checksum to see if it already exists first + if (fs.existsSync(filename)) { + var existingChecksum = nodeCrypto.createHash('sha256').update(fs.readFileSync(filename), 'utf8').digest('hex'); + console.log(existingChecksum); + if (existingChecksum !== checksum) { + fs.unlinkSync(filename); + doDownload(); + } else { + callback(); + } + } else { + doDownload(); + } + }, + compareVersions: function (v1, v2, options) { + var lexicographical = options && options.lexicographical, + zeroExtend = options && options.zeroExtend, + v1parts = v1.split('.'), + v2parts = v2.split('.'); + + function isValidPart(x) { + return (lexicographical ? /^\d+[A-Za-z]*$/ : /^\d+$/).test(x); + } + + if (!v1parts.every(isValidPart) || !v2parts.every(isValidPart)) { + return NaN; + } + + if (zeroExtend) { + while (v1parts.length < v2parts.length) { + v1parts.push('0'); + } + while (v2parts.length < v1parts.length) { + v2parts.push('0'); + } + } + + if (!lexicographical) { + v1parts = v1parts.map(Number); + v2parts = v2parts.map(Number); + } + + for (var i = 0; i < v1parts.length; ++i) { + if (v2parts.length === i) { + return 1; + } + if (v1parts[i] === v2parts[i]) { + continue; + } + else if (v1parts[i] > v2parts[i]) { + return 1; + } + else { + return -1; + } + } + + if (v1parts.length !== v2parts.length) { + return -1; + } + + return 0; + } +}; + +module.exports = Util; diff --git a/src/router.js b/src/router.js index d419f62176..b02ac78139 100644 --- a/src/router.js +++ b/src/router.js @@ -1,5 +1,5 @@ var Router = require('react-router'); -var routes = require('./routes'); +var routes = require('./Routes'); var router = Router.create({ routes: routes diff --git a/src/virtualbox.js b/src/virtualbox.js index a1071e8e8f..503d4efad2 100644 --- a/src/virtualbox.js +++ b/src/virtualbox.js @@ -2,7 +2,7 @@ var fs = require('fs'); var exec = require('exec'); var path = require('path'); var async = require('async'); -var util = require('./util'); +var util = require('./Util'); var VirtualBox = { REQUIRED_VERSION: '4.3.18', From b561416db55b473cb1d8d07f69a467037043c528 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 30 Jan 2015 15:22:01 -0500 Subject: [PATCH 03/12] Fixing case --- src/boot2docker.js | 224 --------------------------------------------- src/docker.js | 28 ------ src/main.js | 44 --------- src/registry.js | 84 ----------------- src/routes.js | 33 ------- src/util.js | 103 --------------------- 6 files changed, 516 deletions(-) delete mode 100644 src/boot2docker.js delete mode 100644 src/docker.js delete mode 100644 src/main.js delete mode 100644 src/registry.js delete mode 100644 src/routes.js delete mode 100644 src/util.js diff --git a/src/boot2docker.js b/src/boot2docker.js deleted file mode 100644 index 8e64baedc4..0000000000 --- a/src/boot2docker.js +++ /dev/null @@ -1,224 +0,0 @@ -var exec = require('exec'); -var path = require('path'); -var fs = require('fs'); -var path = require('path'); -var async = require('async'); - -var cmdExec = function (cmd, callback) { - exec(cmd, function (stderr, stdout, code) { - if (code !== 0) { - callback('Exit code ' + code + ': ' + stderr); - } else { - callback(null, stdout); - } - }); -}; - -var homeDir = function () { - return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME']; -}; - -var Boot2Docker = { - version: function () { - return JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'))['boot2docker-version']; - }, - cliVersion: function (callback) { - cmdExec([Boot2Docker.command(), 'version'], function (err, out) { - if (err) { - callback(err); - return; - } - var match = out.match(/version: v(\d+\.\d+\.\d+)/); - if (!match || match.length < 2) { - callback('Could not parse the boot2docker cli version.'); - } else { - callback(null, match[1]); - } - }); - }, - isoVersion: function (callback) { - fs.readFile(path.join(homeDir(), '.boot2docker', 'boot2docker.iso'), 'utf8', function (err, data) { - if (err) { - callback(err); - return; - } - var match = data.match(/Boot2Docker-v(\d+\.\d+\.\d+)/); - if (!match) { - callback('Could not parse boot2docker iso version'); - return; - } - callback (null, match[1]); - }); - }, - command: function () { - return path.join(process.cwd(), 'resources', 'boot2docker-' + this.version()); - }, - exists: function (callback) { - cmdExec([Boot2Docker.command(), 'info'], function (err, out) { - if (err) { - callback(null, false); - } else { - callback(null, true); - } - }); - }, - status: function (callback) { - cmdExec([Boot2Docker.command(), 'status'], function (err, out) { - if (err) { - callback(err); - return; - } - callback(null, out.trim()); - }); - }, - init: function (callback) { - cmdExec([Boot2Docker.command(), 'init'], callback); - }, - start: function (callback) { - cmdExec([Boot2Docker.command(), 'start'], callback); - }, - stop: function (callback) { - cmdExec([Boot2Docker.command(), 'stop'], callback); - }, - upgrade: function (callback) { - cmdExec([Boot2Docker.command(), 'upgrade'], callback); - }, - ip: function (callback) { - cmdExec([Boot2Docker.command(), 'ip'], callback); - }, - erase: function (callback) { - var VMFileLocation = path.join(homeDir(), 'VirtualBox\\ VMs/boot2docker-vm'); - cmdExec(['rm', '-rf', VMFileLocation], callback); - }, - state: function (callback) { - cmdExec([Boot2Docker.command(), 'info'], function (err, out) { - if (err) { - callback(err); - return; - } - try { - var info = JSON.parse(out); - callback(null, info.State); - } catch (e) { - callback(e, null); - } - }); - }, - disk: function (callback) { - cmdExec([Boot2Docker.command(), 'ssh', 'df'], function (err, out) { - if (err) { - callback(err); - return; - } - try { - var lines = out.split('\n'); - var dataline = _.find(lines, function (line) { - return line.indexOf('/dev/sda1') !== -1; - }); - var tokens = dataline.split(' '); - tokens = tokens.filter(function (token) { - return token !== ''; - }); - var usedGb = parseInt(tokens[2], 10) / 1000000; - var totalGb = parseInt(tokens[3], 10) / 1000000; - var percent = parseInt(tokens[4].replace('%', ''), 10); - callback(null, { - used_gb: usedGb.toFixed(2), - total_gb: totalGb.toFixed(2), - percent: percent - }); - } catch (error) { - callback(error, null); - } - }); - }, - memory: function (callback) { - cmdExec([Boot2Docker.command(), 'ssh', 'free -m'], function (err, out) { - if (err) { - callback(err); - return; - } - try { - var lines = out.split('\n'); - var dataline = _.find(lines, function (line) { - return line.indexOf('-/+ buffers') !== -1; - }); - var tokens = dataline.split(' '); - tokens = tokens.filter(function(token) { - return token !== ''; - }); - var usedGb = parseInt(tokens[2], 10) / 1000; - var freeGb = parseInt(tokens[3], 10) / 1000; - var totalGb = usedGb + freeGb; - var percent = Math.round(usedGb / totalGb * 100); - callback(null, { - used_gb: usedGb.toFixed(2), - total_gb: totalGb.toFixed(2), - free_gb: freeGb.toFixed(2), - percent: percent - }); - } catch (error) { - callback(error); - } - }); - }, - createScratchImage: function (callback) { - cmdExec([Boot2Docker.command(), 'ssh', 'tar cv --files-from /dev/null | docker import - scratch'], function (err, out) { - callback(err); - }); - }, - stats: function (callback) { - var self = this; - self.state(function (err, state) { - if (err) { - callback(err); - return; - } - if (state === 'poweroff') { - callback(null, {state: state}); - return; - } - self.memoryUsage(function (err, mem) { - if (err) { - callback(null, {state: state}); - return; - } - self.diskUsage(function (err, disk) { - if (err) { - callback(null, {state: state, memory: mem}); - return; - } - callback(null, { - state: state, - memory: mem, - disk: disk - }); - }); - }); - }); - }, - sshKeyExists: function () { - return fs.existsSync(path.join(homeDir(), '.ssh', 'id_boot2docker')); - }, - - // Todo: move me to setup - waitWhileStatus: function (status, callback) { - var current = status; - async.whilst(function () { - return current === status; - }, function (callback) { - Boot2Docker.status(function (err, vmStatus) { - if (err) { - callback(err); - } else { - current = vmStatus.trim(); - callback(); - } - }); - }, function (err) { - callback(err); - }); - } -}; - -module.exports = Boot2Docker; diff --git a/src/docker.js b/src/docker.js deleted file mode 100644 index ac9701546a..0000000000 --- a/src/docker.js +++ /dev/null @@ -1,28 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var dockerode = require('dockerode'); - -var Docker = { - host: null, - _client: null, - setHost: function(host) { - this.host = host; - var certDir = path.join(process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'], '.boot2docker/certs/boot2docker-vm'); - if (!fs.existsSync(certDir)) { - return; - } - this._client = new dockerode({ - protocol: 'https', - host: this.host, - port: 2376, - ca: fs.readFileSync(path.join(certDir, 'ca.pem')), - cert: fs.readFileSync(path.join(certDir, 'cert.pem')), - key: fs.readFileSync(path.join(certDir, 'key.pem')) - }); - }, - client: function () { - return this._client; - } -}; - -module.exports = Docker; diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 4c485a892b..0000000000 --- a/src/main.js +++ /dev/null @@ -1,44 +0,0 @@ -var module = require('module'); -require.main.paths.splice(0, 0, process.env.NODE_PATH); - -var Bugsnag = require('bugsnag-js'); -var React = require('react'); -var Router = require('react-router'); -var RetinaImage = require('react-retina-image'); -var async = require('async'); -var docker = require('./docker'); -var router = require('./router'); -var boot2docker = require('./boot2docker'); -var ContainerStore = require('./ContainerStore'); -var Menu = require('./Menu'); -var remote = require('remote'); -var app = remote.require('app'); -var ipc = require('ipc'); - - -var Route = Router.Route; -var NotFoundRoute = Router.NotFoundRoute; -var DefaultRoute = Router.DefaultRoute; -var Link = Router.Link; -var RouteHandler = Router.RouteHandler; - -Bugsnag.apiKey = 'fc51aab02ce9dd1bb6ebc9fe2f4d43d7'; -Bugsnag.autoNotify = true; -Bugsnag.releaseStage = process.env.NODE_ENV === 'development' ? 'development' : 'production'; -Bugsnag.notifyReleaseStages = []; -Bugsnag.appVersion = app.getVersion(); - -if (!window.location.hash.length || window.location.hash === '#/') { - router.run(function (Handler) { - React.render(, document.body); - }); -} else { - boot2docker.ip(function (err, ip) { - docker.setHost(ip); - ContainerStore.init(function () { - router.run(function (Handler) { - React.render(, document.body); - }); - }); - }); -} diff --git a/src/registry.js b/src/registry.js deleted file mode 100644 index 2fc0dcf0be..0000000000 --- a/src/registry.js +++ /dev/null @@ -1,84 +0,0 @@ -var async = require('async'); -var $ = require('jquery'); - -var Registry = { - token: function(repository, callback) { - $.ajax({ - url: 'https://registry.hub.docker.com/v1/repositories/' + repository + '/images', - headers: { - 'X-Docker-Token': true, - }, - success: function (res, status, xhr) { - callback(null, xhr.getResponseHeader('X-Docker-Token')); - }, - error: function (err) { - callback(err); - } - }); - }, - ancestry: function (imageId, token, callback) { - $.ajax({ - url: 'https://registry-1.docker.io/v1/images/' + imageId + '/ancestry', - headers: { - Authorization: 'Token ' + token - }, - success: function (layers, status, xhr) { - callback(null, layers); - }, - error: function (err) { - callback(err); - } - }); - }, - imageId: function (repository, tag, token, callback) { - $.ajax({ - url: 'https://registry-1.docker.io/v1/repositories/' + repository + '/tags/' + tag, - headers: { - Authorization: 'Token ' + token - }, - success: function (res, status, xhr) { - callback(null, res); - }, - error: function (err) { - callback(err); - } - }); - }, - - // Returns an array [{Id: <12 character image ID, size: size of layer in bytes}] - layers: function (repository, tag, callback) { - var self = this; - this.token(repository, function (err, token) { - self.imageId(repository, tag, token, function (err, imageId) { - self.ancestry(imageId, token, function (err, layers) { - async.map(layers, function (layer, callback) { - $.ajax({ - url: 'https://registry-1.docker.io/v1/images/' + layer + '/json', - headers: { - Authorization: 'Token ' + token - }, - success: function (res, status, xhr) { - var size = xhr.getResponseHeader('X-Docker-Size'); - callback(null, { - Id: layer.slice(0, 12), - size: parseInt(size, 10) - }); - }, - error: function (err) { - callback(err); - } - }); - }, function (err, results) { - if (err) { - callback('Could not sum' + err); - return; - } - callback(null, results); - }); - }); - }); - }); - } -}; - -module.exports = Registry; diff --git a/src/routes.js b/src/routes.js deleted file mode 100644 index 92b9df7d3a..0000000000 --- a/src/routes.js +++ /dev/null @@ -1,33 +0,0 @@ -var React = require('react/addons'); -var Setup = require('./Setup.react'); -var Containers = require('./Containers.react'); -var ContainerDetails = require('./ContainerDetails.react'); -var Preferences = require('./Preferences.react'); -var NoContainers = require('./NoContainers.react'); -var Router = require('react-router'); - -var Route = Router.Route; -var DefaultRoute = Router.DefaultRoute; -var RouteHandler = Router.RouteHandler; - -var App = React.createClass({ - render: function () { - return ( - - ); - } -}); - -var routes = ( - - - - - - - - - -); - -module.exports = routes; diff --git a/src/util.js b/src/util.js deleted file mode 100644 index 78a4c61035..0000000000 --- a/src/util.js +++ /dev/null @@ -1,103 +0,0 @@ -var path = require('path'); -var fs = require('fs'); -var nodeCrypto = require('crypto'); -var request = require('request'); -var progress = require('request-progress'); -var exec = require('exec'); - -var Util = { - supportDir: function (callback) { - var dirs = ['Application\ Support', 'Kitematic']; - var acc = process.env.HOME; - dirs.forEach(function (d) { - acc = path.join(acc, d); - if (!fs.existsSync(acc)) { - fs.mkdirSync(acc); - } - }); - return acc; - }, - download: function (url, filename, checksum, callback, progressCallback) { - var doDownload = function () { - progress(request({ - uri: url, - rejectUnauthorized: false - }), { - throttle: 250 - }).on('progress', function (state) { - progressCallback(state.percent); - }).on('error', function (err) { - callback(err); - }).pipe(fs.createWriteStream(filename)).on('error', function (err) { - callback(err); - }).on('close', function (err) { - callback(err); - }); - }; - - // Compare checksum to see if it already exists first - if (fs.existsSync(filename)) { - var existingChecksum = nodeCrypto.createHash('sha256').update(fs.readFileSync(filename), 'utf8').digest('hex'); - console.log(existingChecksum); - if (existingChecksum !== checksum) { - fs.unlinkSync(filename); - doDownload(); - } else { - callback(); - } - } else { - doDownload(); - } - }, - compareVersions: function (v1, v2, options) { - var lexicographical = options && options.lexicographical, - zeroExtend = options && options.zeroExtend, - v1parts = v1.split('.'), - v2parts = v2.split('.'); - - function isValidPart(x) { - return (lexicographical ? /^\d+[A-Za-z]*$/ : /^\d+$/).test(x); - } - - if (!v1parts.every(isValidPart) || !v2parts.every(isValidPart)) { - return NaN; - } - - if (zeroExtend) { - while (v1parts.length < v2parts.length) { - v1parts.push('0'); - } - while (v2parts.length < v1parts.length) { - v2parts.push('0'); - } - } - - if (!lexicographical) { - v1parts = v1parts.map(Number); - v2parts = v2parts.map(Number); - } - - for (var i = 0; i < v1parts.length; ++i) { - if (v2parts.length === i) { - return 1; - } - if (v1parts[i] === v2parts[i]) { - continue; - } - else if (v1parts[i] > v2parts[i]) { - return 1; - } - else { - return -1; - } - } - - if (v1parts.length !== v2parts.length) { - return -1; - } - - return 0; - } -}; - -module.exports = Util; From 95a19899b8916e52b5cb181e270813d56a46d490 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 30 Jan 2015 15:26:41 -0500 Subject: [PATCH 04/12] Delete test.css --- test.css | 14019 ----------------------------------------------------- 1 file changed, 14019 deletions(-) delete mode 100644 test.css diff --git a/test.css b/test.css deleted file mode 100644 index fcc0766b9d..0000000000 --- a/test.css +++ /dev/null @@ -1,14019 +0,0 @@ -@charset "UTF-8"; -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-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: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -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 { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - 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-appearance: textfield; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - box-shadow: none !important; - text-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .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 th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fontsglyphicons-halflings-regular.eot'); - src: url('../fontsglyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fontsglyphicons-halflings-regular.woff') format('woff'), url('../fontsglyphicons-halflings-regular.ttf') format('truetype'), url('../fontsglyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before, -.glyphicon-eur: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"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -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: #333333; - background-color: #ffffff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #24b8eb; - text-decoration: none; -} -a:hover, -a:focus { - color: #1089b2; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - padding: 4px; - line-height: 1.42857143; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #7a9999; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - 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; -} -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, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777777; -} -h1, -.h1, -h2, -.h2, -h3, -.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, -.h4, -h5, -.h5, -h6, -.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 { - background-color: #fcf8e3; - padding: .2em; -} -.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: #777777; -} -.text-primary { - color: #24b8eb; -} -a.text-primary:hover { - color: #129bca; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #24b8eb; -} -a.bg-primary:hover { - background-color: #129bca; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #7a9999; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #7a9999; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #7a9999; - border-left: 0; - text-align: right; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small: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: #ffffff; - background-color: #333333; - border-radius: 3px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - word-break: break-all; - word-wrap: break-word; - color: #333333; - background-color: #f5f5f5; - border: 1px solid #cccccc; - 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 { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -.row { - margin-left: -15px; - margin-right: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - 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: #777777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #dddddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #dddddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #dddddd; -} -.table .table { - background-color: #ffffff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #dddddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #dddddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-child(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - overflow-x: auto; - min-height: 0.01%; -} -@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 #dddddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - 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="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555555; - background-color: #ffffff; - background-image: none; - border: 1px solid #cccccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, 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, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); -} -.form-control::-moz-placeholder { - color: #999999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999999; -} -.form-control::-webkit-input-placeholder { - color: #999999; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - cursor: not-allowed; - background-color: #7a9999; - opacity: 1; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - line-height: 34px; - } - 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[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; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-left: 0; - padding-right: 0; -} -.input-sm, -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm, -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -textarea.form-group-sm .form-control, -select[multiple].input-sm, -select[multiple].form-group-sm .form-control { - height: auto; -} -.input-lg, -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-lg, -select.form-group-lg .form-control { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -textarea.form-group-lg .form-control, -select[multiple].input-lg, -select[multiple].form-group-lg .form-control { - height: auto; -} -.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; -} -.input-lg + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - border-color: #3c763d; - background-color: #dff0d8; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - border-color: #8a6d3b; - background-color: #fcf8e3; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - border-color: #a94442; - background-color: #f2dede; -} -.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 .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 7px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 7px; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.3px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333333; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default { - color: #333333; - background-color: #ffffff; - border-color: #cccccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default.focus, -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #ffffff; - border-color: #cccccc; -} -.btn-default .badge { - color: #ffffff; - background-color: #333333; -} -.btn-primary { - color: #ffffff; - background-color: #24b8eb; - border-color: #15ade1; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary.focus, -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #129bca; - border-color: #0f82a9; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #24b8eb; - border-color: #15ade1; -} -.btn-primary .badge { - color: #24b8eb; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success.focus, -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info.focus, -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning.focus, -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger.focus, -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #ffffff; -} -.btn-link { - color: #24b8eb; - font-weight: normal; - 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:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #1089b2; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - 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="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; - visibility: hidden; -} -.collapse.in { - display: block; - visibility: visible; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropdown { - 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; - list-style: none; - font-size: 14px; - text-align: left; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} -.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: normal; - line-height: 1.42857143; - color: #333333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - text-decoration: none; - color: #262626; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - outline: 0; - background-color: #24b8eb; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px solid; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - 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-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-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-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 > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group:last-child > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 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-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-bottom-left-radius: 4px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.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-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - float: none; - display: table-cell; - 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="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - 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-left: 0; - padding-right: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.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.33; - 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; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].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; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control: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: normal; - line-height: 1; - color: #555555; - text-align: center; - background-color: #7a9999; - border: 1px solid #cccccc; - 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="radio"], -.input-group-addon input[type="checkbox"] { - 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:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-top-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:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 0; - border-top-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:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - 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 { - margin-left: -1px; -} -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #7a9999; -} -.nav > li.disabled > a { - color: #777777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777777; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #7a9999; - border-color: #24b8eb; -} -.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 #dddddd; -} -.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: #7a9999 #7a9999 #dddddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555555; - background-color: #ffffff; - border: 1px solid #dddddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.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:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.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:hover, -.nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #24b8eb; -} -.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 { - text-align: center; - margin-bottom: 5px; -} -.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:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.tab-content > .tab-pane { - display: none; - visibility: hidden; -} -.tab-content > .active { - display: block; - visibility: visible; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-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 { - overflow-x: visible; - padding-right: 15px; - padding-left: 15px; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - visibility: visible !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - 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-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - 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; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; - height: 50px; -} -.navbar-brand:hover, -.navbar-brand:focus { - 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; - margin-right: 15px; - padding: 9px 10px; - margin-top: 8px; - 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; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - 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 { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 8px; - margin-bottom: 8px; -} -@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 .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - 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; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - border-top-right-radius: 4px; - border-top-left-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-left: 15px; - margin-right: 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: #777777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777777; -} -.navbar-default .navbar-nav > li > a { - color: #777777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #dddddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #dddddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - background-color: #e7e7e7; - color: #555555; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777777; -} -.navbar-default .navbar-link:hover { - color: #333333; -} -.navbar-default .btn-link { - color: #777777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; -} -.navbar-inverse { - background-color: #222222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #ffffff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - background-color: #080808; - color: #ffffff; -} -@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:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #ffffff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #ffffff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444444; -} -.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 { - content: "/\00a0"; - padding: 0 5px; - color: #cccccc; -} -.breadcrumb > .active { - color: #777777; -} -.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; - line-height: 1.42857143; - text-decoration: none; - color: #24b8eb; - background-color: #ffffff; - border: 1px solid #dddddd; - margin-left: -1px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #1089b2; - background-color: #7a9999; - border-color: #dddddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #ffffff; - background-color: #24b8eb; - border-color: #24b8eb; - cursor: default; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777777; - background-color: #ffffff; - border-color: #dddddd; - cursor: not-allowed; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 6px; - border-top-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 6px; - border-top-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - list-style: none; - text-align: center; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #7a9999; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777777; - background-color: #ffffff; - cursor: not-allowed; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #24b8eb; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #129bca; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - color: #ffffff; - line-height: 1; - vertical-align: baseline; - white-space: nowrap; - text-align: center; - background-color: #777777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #24b8eb; - background-color: #ffffff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px 15px; - margin-bottom: 30px; - color: inherit; - background-color: #7a9999; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #617f7f; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-left: auto; - margin-right: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #24b8eb; -} -.thumbnail .caption { - padding: 9px; - color: #333333; -} -.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: bold; -} -.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 { - background-color: #dff0d8; - border-color: #d6e9c6; - color: #3c763d; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - background-color: #d9edf7; - border-color: #bce8f1; - color: #31708f; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - background-color: #fcf8e3; - border-color: #faebcc; - color: #8a6d3b; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - background-color: #f2dede; - border-color: #ebccd1; - color: #a94442; -} -.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; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #ffffff; - text-align: center; - background-color: #24b8eb; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - 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 { - margin-bottom: 20px; - padding-left: 0; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #ffffff; - border: 1px solid #dddddd; -} -.list-group-item:first-child { - border-top-right-radius: 4px; - border-top-left-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item { - color: #555555; -} -a.list-group-item .list-group-item-heading { - color: #333333; -} -a.list-group-item:hover, -a.list-group-item:focus { - text-decoration: none; - color: #555555; - background-color: #f5f5f5; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - background-color: #7a9999; - color: #777777; - cursor: not-allowed; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #24b8eb; - border-color: #24b8eb; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #dff5fc; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - 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: #ffffff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - 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-right-radius: 3px; - border-top-left-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-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-left: 15px; - padding-right: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .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 #dddddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - border: 0; - margin-bottom: 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 > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #dddddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #dddddd; -} -.panel-default { - border-color: #dddddd; -} -.panel-default > .panel-heading { - color: #333333; - background-color: #f5f5f5; - border-color: #dddddd; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #dddddd; -} -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333333; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #dddddd; -} -.panel-primary { - border-color: #24b8eb; -} -.panel-primary > .panel-heading { - color: #ffffff; - background-color: #24b8eb; - border-color: #24b8eb; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #24b8eb; -} -.panel-primary > .panel-heading .badge { - color: #24b8eb; - background-color: #ffffff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #24b8eb; -} -.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 iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; -} -.embed-responsive.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive.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, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 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: bold; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.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: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - outline: 0; -} -.modal-backdrop { - position: absolute; - top: 0; - right: 0; - left: 0; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; - min-height: 16.42857143px; -} -.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-left: 5px; - margin-bottom: 0; -} -.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, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - visibility: visible; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - text-decoration: none; - background-color: #000000; - 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: #000000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.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-weight: normal; - line-height: 1.42857143; - text-align: left; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - white-space: normal; -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - 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 { - border-width: 10px; - content: ""; -} -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #ffffff; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #ffffff; -} -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #ffffff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #ffffff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - transition: transform 0.6s ease-in-out; - backface-visibility: hidden; - perspective: 1000; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - transform: translate3d(100%, 0, 0); - left: 0; - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - transform: translate3d(-100%, 0, 0); - left: 0; - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - transform: translate3d(0, 0, 0); - left: 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; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - outline: 0; - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - font-family: serif; -} -.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%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #ffffff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); -} -.carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #ffffff; -} -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 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-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: 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; - visibility: hidden !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.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; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.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; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.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; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.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; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.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; - } -} -@font-face { - font-family: 'Clear'; - src: url('clearsans-regular-webfont.ttf') format('truetype'); - font-weight: 400; - font-style: normal; -} -@font-face { - font-family: 'Clear Sans'; - src: url('clearsans-medium-webfont.ttf') format('truetype'); - font-weight: 500; - font-style: normal; -} -@font-face { - font-family: 'Clear Sans'; - src: url('clearsans-light-webfont.ttf') format('truetype'); - font-weight: 300; - font-style: normal; -} -@font-face { - font-family: 'Clear Sans'; - src: url('clearsans-thin-webfont.ttf') format('truetype'); - font-weight: 100; - font-style: normal; -} -@font-face { - font-family: 'Clear Sans'; - src: url('clearsans-mediumitalic-webfont.ttf') format('truetype'); - font-weight: 500; - font-style: italic; -} -@font-face { - font-family: 'Clear Sans'; - src: url('clearsans-italic-webfont.ttf') format('truetype'); - font-weight: normal; - font-style: italic; -} -@font-face { - font-family: 'Clear Sans'; - src: url('clearsans-bolditalic-webfont.ttf') format('truetype'); - font-weight: 700; - font-style: italic; -} -@font-face { - font-family: 'Clear Sans'; - src: url('clearsans-bold-webfont.ttf') format('truetype'); - font-weight: 700; - font-style: normal; -} -h3 { - font-size: 14px; - color: #253237; -} -h4 { - font-size: 13px; - color: #546c70; - font-weight: 400; -} -.popover-content { - color: #546c70; - font-size: 13px; -} -input[type="text"].line { - border: 0; - border-bottom: 1px solid #c7d7d7; - color: #546c70; - font-weight: 300; - padding: 5px; - transition: all 0.1s; -} -input[type="text"].line:focus { - outline: 0; - border-bottom: 1px solid #24b8eb; -} -input[type="text"].line::-webkit-input-placeholder { - color: #ddd; - font-weight: 300; -} -.btn-group.tabs .btn { - padding: 6px 14px 6px 14px; -} -.btn-group .btn .icon-dropdown.icon:before { - position: relative; - font-size: 10px; - top: -2px; - margin-left: 0px; - margin-right: 4px; -} -.btn { - font-size: 12px; - background-color: transparent; - color: #546c70; - border: 1px solid #546c70; - border-radius: 25px; - box-shadow: none; - font-weight: 400; - text-shadow: none; - padding: 6px 14px 6px 14px; - height: 32px; - cursor: default; -} -.btn.small { - height: 22px; -} -.btn.small .icon { - font-size: 10px; -} -.btn .content { - position: relative; - top: -4px; - margin-left: 5px; - margin-right: 5px; -} -.btn .icon-dropdown.icon:before { - font-size: 10px; - position: relative; - top: -2px; -} -.btn .icon { - position: relative; - font-size: 16px; -} -.btn:active, -.btn.active { - background-image: none; - box-shadow: none; -} -.btn:focus, -.btn.focus { - box-shadow: none; - outline: none !important; -} -.btn.only-icon { - padding: 6px 7px 6px 7px; -} -.btn.only-icon.small { - padding: 2px 5px 3px 5px; -} -.btn-action { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #24b8eb; - color: #24b8eb; -} -.btn-action:hover, -.btn-action:focus { - border-color: #129bca; - color: #129bca; - cursor: default; - box-shadow: none; - background: none; -} -.btn-action:active { - background-color: #f6fcfe; - border-color: #129bca; - color: #129bca; - box-shadow: none; -} -.btn-action.active { - background-color: #24b8eb; - color: white; - box-shadow: none; -} -.btn-action:disabled, -.btn-action[disabled] { - opacity: 0.5; -} -.btn-positive { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #65e100; - color: #65e100; -} -.btn-positive:hover, -.btn-positive:focus { - border-color: #4eae00; - color: #4eae00; - cursor: default; - box-shadow: none; - background: none; -} -.btn-positive:active { - background-color: #e0ffc7; - border-color: #4eae00; - color: #4eae00; - box-shadow: none; -} -.btn-positive.active { - background-color: #65e100; - color: white; - box-shadow: none; -} -.btn-positive:disabled, -.btn-positive[disabled] { - opacity: 0.5; -} -.btn-default { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #ffffff; - color: #ffffff; -} -.btn-default:hover, -.btn-default:focus { - border-color: #e6e6e6; - color: #e6e6e6; - cursor: default; - box-shadow: none; - background: none; -} -.btn-default:active { - background-color: #ffffff; - border-color: #e6e6e6; - color: #e6e6e6; - box-shadow: none; -} -.btn-default.active { - background-color: #ffffff; - color: white; - box-shadow: none; -} -.btn-default:disabled, -.btn-default[disabled] { - opacity: 0.5; -} -.btn-primary { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #24b8eb; - color: #24b8eb; -} -.btn-primary:hover, -.btn-primary:focus { - border-color: #129bca; - color: #129bca; - cursor: default; - box-shadow: none; - background: none; -} -.btn-primary:active { - background-color: #f6fcfe; - border-color: #129bca; - color: #129bca; - box-shadow: none; -} -.btn-primary.active { - background-color: #24b8eb; - color: white; - box-shadow: none; -} -.btn-primary:disabled, -.btn-primary[disabled] { - opacity: 0.5; -} -.btn-success { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #5cb85c; - color: #5cb85c; -} -.btn-success:hover, -.btn-success:focus { - border-color: #449d44; - color: #449d44; - cursor: default; - box-shadow: none; - background: none; -} -.btn-success:active { - background-color: #fcfefc; - border-color: #449d44; - color: #449d44; - box-shadow: none; -} -.btn-success.active { - background-color: #5cb85c; - color: white; - box-shadow: none; -} -.btn-success:disabled, -.btn-success[disabled] { - opacity: 0.5; -} -.btn-info { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #5bc0de; - color: #5bc0de; -} -.btn-info:hover, -.btn-info:focus { - border-color: #31b0d5; - color: #31b0d5; - cursor: default; - box-shadow: none; - background: none; -} -.btn-info:active { - background-color: #ffffff; - border-color: #31b0d5; - color: #31b0d5; - box-shadow: none; -} -.btn-info.active { - background-color: #5bc0de; - color: white; - box-shadow: none; -} -.btn-info:disabled, -.btn-info[disabled] { - opacity: 0.5; -} -.btn-warning { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #f0ad4e; - color: #f0ad4e; -} -.btn-warning:hover, -.btn-warning:focus { - border-color: #ec971f; - color: #ec971f; - cursor: default; - box-shadow: none; - background: none; -} -.btn-warning:active { - background-color: #ffffff; - border-color: #ec971f; - color: #ec971f; - box-shadow: none; -} -.btn-warning.active { - background-color: #f0ad4e; - color: white; - box-shadow: none; -} -.btn-warning:disabled, -.btn-warning[disabled] { - opacity: 0.5; -} -.btn-danger { - transition: all 0.1s; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - border-color: #d9534f; - color: #d9534f; -} -.btn-danger:hover, -.btn-danger:focus { - border-color: #c9302c; - color: #c9302c; - cursor: default; - box-shadow: none; - background: none; -} -.btn-danger:active { - background-color: #ffffff; - border-color: #c9302c; - color: #c9302c; - box-shadow: none; -} -.btn-danger.active { - background-color: #d9534f; - color: white; - box-shadow: none; -} -.btn-danger:disabled, -.btn-danger[disabled] { - opacity: 0.5; -} -@font-face { - font-family: "streamline-24px"; - src: url("streamline-24px.eot"); - src: url("streamline-24px.eot?#iefix") format("embedded-opentype"), url("streamline-24px.woff") format("woff"), url("streamline-24px.ttf") format("truetype"), url("streamline-24px.svg#streamline-24px") format("svg"); - font-weight: normal; - font-style: normal; -} -[data-icon]:before { - font-family: "streamline-24px" !important; - content: attr(data-icon); - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -[class^="icon-"]:before, -[class*=" icon-"]:before { - font-family: "streamline-24px" !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - speak: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.icon-bin-1:before { - content: "\e000"; -} -.icon-bin-2:before { - content: "\e001"; -} -.icon-binocular:before { - content: "\e002"; -} -.icon-bomb:before { - content: "\e003"; -} -.icon-clip-1:before { - content: "\e004"; -} -.icon-clip-2:before { - content: "\e005"; -} -.icon-crosshair-1:before { - content: "\e006"; -} -.icon-crosshair-2:before { - content: "\e007"; -} -.icon-crosshair-3:before { - content: "\e008"; -} -.icon-cutter:before { - content: "\e009"; -} -.icon-delete-1:before { - content: "\e00a"; -} -.icon-delete-2:before { - content: "\e00b"; -} -.icon-edit-1:before { - content: "\e00c"; -} -.icon-edit-2:before { - content: "\e00d"; -} -.icon-edit-3:before { - content: "\e00e"; -} -.icon-hide:before { - content: "\e00f"; -} -.icon-ink:before { - content: "\e010"; -} -.icon-key-1:before { - content: "\e011"; -} -.icon-key-2:before { - content: "\e012"; -} -.icon-link-1:before { - content: "\e013"; -} -.icon-link-2:before { - content: "\e014"; -} -.icon-link-3:before { - content: "\e015"; -} -.icon-link-broken-1:before { - content: "\e016"; -} -.icon-link-broken-2:before { - content: "\e017"; -} -.icon-lock-1:before { - content: "\e018"; -} -.icon-lock-2:before { - content: "\e019"; -} -.icon-lock-3:before { - content: "\e01a"; -} -.icon-lock-4:before { - content: "\e01b"; -} -.icon-lock-5:before { - content: "\e01c"; -} -.icon-lock-unlock-1:before { - content: "\e01d"; -} -.icon-lock-unlock-2:before { - content: "\e01e"; -} -.icon-magnifier:before { - content: "\e01f"; -} -.icon-pen-1:before { - content: "\e020"; -} -.icon-pen-2:before { - content: "\e021"; -} -.icon-pen-3:before { - content: "\e022"; -} -.icon-pen-4:before { - content: "\e023"; -} -.icon-pencil-1:before { - content: "\e024"; -} -.icon-pencil-2:before { - content: "\e025"; -} -.icon-pencil-3:before { - content: "\e026"; -} -.icon-pin-1:before { - content: "\e027"; -} -.icon-pin-2:before { - content: "\e028"; -} -.icon-power-1:before { - content: "\e029"; -} -.icon-power-2:before { - content: "\e02a"; -} -.icon-preview-1:before { - content: "\e02b"; -} -.icon-preview-2:before { - content: "\e02c"; -} -.icon-scissor-1:before { - content: "\e02d"; -} -.icon-scissor-2:before { - content: "\e02e"; -} -.icon-skull-1:before { - content: "\e02f"; -} -.icon-skull-2:before { - content: "\e030"; -} -.icon-type-1:before { - content: "\e031"; -} -.icon-type-2:before { - content: "\e032"; -} -.icon-type-3:before { - content: "\e033"; -} -.icon-type-4:before { - content: "\e034"; -} -.icon-zoom-area:before { - content: "\e035"; -} -.icon-zoom-in:before { - content: "\e036"; -} -.icon-zoom-out:before { - content: "\e037"; -} -.icon-cursor-1:before { - content: "\e038"; -} -.icon-cursor-2:before { - content: "\e039"; -} -.icon-cursor-add:before { - content: "\e03a"; -} -.icon-cursor-duplicate:before { - content: "\e03b"; -} -.icon-cursor-move:before { - content: "\e03c"; -} -.icon-cursor-move-2:before { - content: "\e03d"; -} -.icon-cursor-select-area:before { - content: "\e03e"; -} -.icon-hand:before { - content: "\e03f"; -} -.icon-hand-block:before { - content: "\e040"; -} -.icon-hand-grab-1:before { - content: "\e041"; -} -.icon-hand-grab-2:before { - content: "\e042"; -} -.icon-hand-point:before { - content: "\e043"; -} -.icon-hand-touch-1:before { - content: "\e044"; -} -.icon-hand-touch-2:before { - content: "\e045"; -} -.icon-hand-touch-3:before { - content: "\e046"; -} -.icon-hand-touch-4:before { - content: "\e047"; -} -.icon-bookmark-1:before { - content: "\e048"; -} -.icon-bookmark-2:before { - content: "\e049"; -} -.icon-bookmark-3:before { - content: "\e04a"; -} -.icon-bookmark-4:before { - content: "\e04b"; -} -.icon-tag-1:before { - content: "\e04c"; -} -.icon-tag-2:before { - content: "\e04d"; -} -.icon-tag-add:before { - content: "\e04e"; -} -.icon-tag-delete:before { - content: "\e04f"; -} -.icon-tags-1:before { - content: "\e050"; -} -.icon-tags-2:before { - content: "\e051"; -} -.icon-anchor-point-1:before { - content: "\e052"; -} -.icon-anchor-point-2:before { - content: "\e053"; -} -.icon-arrange-1:before { - content: "\e054"; -} -.icon-arrange-2:before { - content: "\e055"; -} -.icon-artboard:before { - content: "\e056"; -} -.icon-brush-1:before { - content: "\e057"; -} -.icon-brush-2:before { - content: "\e058"; -} -.icon-bucket:before { - content: "\e059"; -} -.icon-crop:before { - content: "\e05a"; -} -.icon-dropper-1:before { - content: "\e05b"; -} -.icon-dropper-2:before { - content: "\e05c"; -} -.icon-dropper-3:before { - content: "\e05d"; -} -.icon-glue:before { - content: "\e05e"; -} -.icon-grid:before { - content: "\e05f"; -} -.icon-layers:before { - content: "\e060"; -} -.icon-magic-wand-1:before { - content: "\e061"; -} -.icon-magic-wand-2:before { - content: "\e062"; -} -.icon-magnet:before { - content: "\e063"; -} -.icon-marker:before { - content: "\e064"; -} -.icon-palette:before { - content: "\e065"; -} -.icon-pen-5:before { - content: "\e066"; -} -.icon-pen-6:before { - content: "\e067"; -} -.icon-quill:before { - content: "\e068"; -} -.icon-reflect:before { - content: "\e069"; -} -.icon-roller:before { - content: "\e06a"; -} -.icon-ruler-1:before { - content: "\e06b"; -} -.icon-ruler-2:before { - content: "\e06c"; -} -.icon-scale-diagonal-1:before { - content: "\e06d"; -} -.icon-scale-diagonal-2:before { - content: "\e06e"; -} -.icon-scale-horizontal:before { - content: "\e06f"; -} -.icon-scale-tool-1:before { - content: "\e070"; -} -.icon-scale-tool-2:before { - content: "\e071"; -} -.icon-scale-tool-3:before { - content: "\e072"; -} -.icon-scale-vertical:before { - content: "\e073"; -} -.icon-shear-tool:before { - content: "\e074"; -} -.icon-spray:before { - content: "\e075"; -} -.icon-stamp:before { - content: "\e076"; -} -.icon-stationery-1:before { - content: "\e077"; -} -.icon-stationery-2:before { - content: "\e078"; -} -.icon-stationery-3:before { - content: "\e079"; -} -.icon-vector:before { - content: "\e07a"; -} -.icon-award-1:before { - content: "\e07b"; -} -.icon-award-2:before { - content: "\e07c"; -} -.icon-award-3:before { - content: "\e07d"; -} -.icon-award-4:before { - content: "\e07e"; -} -.icon-award-5:before { - content: "\e07f"; -} -.icon-award-6:before { - content: "\e080"; -} -.icon-crown-1:before { - content: "\e081"; -} -.icon-crown-2:before { - content: "\e082"; -} -.icon-crown-3:before { - content: "\e083"; -} -.icon-fire:before { - content: "\e084"; -} -.icon-flag-1:before { - content: "\e085"; -} -.icon-flag-2:before { - content: "\e086"; -} -.icon-flag-3:before { - content: "\e087"; -} -.icon-flag-4:before { - content: "\e088"; -} -.icon-flag-5:before { - content: "\e089"; -} -.icon-flag-6:before { - content: "\e08a"; -} -.icon-flag-7:before { - content: "\e08b"; -} -.icon-flag-8:before { - content: "\e08c"; -} -.icon-google-plus-1:before { - content: "\e08d"; -} -.icon-google-plus-2:before { - content: "\e08e"; -} -.icon-hand-like-1:before { - content: "\e08f"; -} -.icon-hand-like-2:before { - content: "\e090"; -} -.icon-hand-unlike-1:before { - content: "\e091"; -} -.icon-hand-unlike-2:before { - content: "\e092"; -} -.icon-heart-1:before { - content: "\e093"; -} -.icon-heart-2:before { - content: "\e094"; -} -.icon-heart-angel:before { - content: "\e095"; -} -.icon-heart-broken:before { - content: "\e096"; -} -.icon-heart-minus:before { - content: "\e097"; -} -.icon-heart-plus:before { - content: "\e098"; -} -.icon-present:before { - content: "\e099"; -} -.icon-rank-1:before { - content: "\e09a"; -} -.icon-rank-2:before { - content: "\e09b"; -} -.icon-ribbon:before { - content: "\e09c"; -} -.icon-star-1:before { - content: "\e09d"; -} -.icon-star-2:before { - content: "\e09e"; -} -.icon-star-3:before { - content: "\e09f"; -} -.icon-star-4:before { - content: "\e0a0"; -} -.icon-star-5:before { - content: "\e0a1"; -} -.icon-star-6:before { - content: "\e0a2"; -} -.icon-star-7:before { - content: "\e0a3"; -} -.icon-star-8:before { - content: "\e0a4"; -} -.icon-star-9:before { - content: "\e0a5"; -} -.icon-star-10:before { - content: "\e0a6"; -} -.icon-trophy:before { - content: "\e0a7"; -} -.icon-bubble-2:before { - content: "\e0a8"; -} -.icon-bubble-add-1:before { - content: "\e0a9"; -} -.icon-bubble-add-2:before { - content: "\e0aa"; -} -.icon-bubble-add-3:before { - content: "\e0ab"; -} -.icon-bubble-ask-1:before { - content: "\e0ac"; -} -.icon-bubble-ask-2:before { - content: "\e0ad"; -} -.icon-bubble-attention-1:before { - content: "\e0ae"; -} -.icon-bubble-attention-2:before { - content: "\e0af"; -} -.icon-bubble-attention-3:before { - content: "\e0b0"; -} -.icon-bubble-attention-4:before { - content: "\e0b1"; -} -.icon-bubble-attention-5:before { - content: "\e0b2"; -} -.icon-bubble-attention-6:before { - content: "\e0b3"; -} -.icon-bubble-attention-7:before { - content: "\e0b4"; -} -.icon-bubble-block-1:before { - content: "\e0b5"; -} -.icon-bubble-block-2:before { - content: "\e0b6"; -} -.icon-bubble-block-3:before { - content: "\e0b7"; -} -.icon-bubble-chat-1:before { - content: "\e0b8"; -} -.icon-bubble-chat-2:before { - content: "\e0b9"; -} -.icon-bubble-check-1:before { - content: "\e0ba"; -} -.icon-bubble-check-2:before { - content: "\e0bb"; -} -.icon-bubble-check-3:before { - content: "\e0bc"; -} -.icon-bubble-comment-1:before { - content: "\e0bd"; -} -.icon-bubble-comment-2:before { - content: "\e0be"; -} -.icon-bubble-conversation-1:before { - content: "\e0bf"; -} -.icon-bubble-conversation-2:before { - content: "\e0c0"; -} -.icon-bubble-conversation-3:before { - content: "\e0c1"; -} -.icon-bubble-conversation-4:before { - content: "\e0c2"; -} -.icon-bubble-conversation-5:before { - content: "\e0c3"; -} -.icon-bubble-conversation-6:before { - content: "\e0c4"; -} -.icon-bubble-delete-1:before { - content: "\e0c5"; -} -.icon-bubble-delete-2:before { - content: "\e0c6"; -} -.icon-bubble-delete-3:before { - content: "\e0c7"; -} -.icon-bubble-edit-1:before { - content: "\e0c8"; -} -.icon-bubble-edit-2:before { - content: "\e0c9"; -} -.icon-bubble-edit-3:before { - content: "\e0ca"; -} -.icon-bubble-heart-1:before { - content: "\e0cb"; -} -.icon-bubble-heart-2:before { - content: "\e0cc"; -} -.icon-bubble-minus-1:before { - content: "\e0cd"; -} -.icon-bubble-minus-2:before { - content: "\e0ce"; -} -.icon-bubble-minus-3:before { - content: "\e0cf"; -} -.icon-bubble-quote-1:before { - content: "\e0d0"; -} -.icon-bubble-quote-2:before { - content: "\e0d1"; -} -.icon-bubble-smiley-3:before { - content: "\e0d2"; -} -.icon-bubble-smiley-4:before { - content: "\e0d3"; -} -.icon-bubble-smiley-smile:before { - content: "\e0d4"; -} -.icon-bubble-smiley-wink:before { - content: "\e0d5"; -} -.icon-bubble-star-1:before { - content: "\e0d6"; -} -.icon-bubble-star-2:before { - content: "\e0d7"; -} -.icon-bubble-star-3:before { - content: "\e0d8"; -} -.icon-chat-1:before { - content: "\e0d9"; -} -.icon-chat-2:before { - content: "\e0da"; -} -.icon-chat-3:before { - content: "\e0db"; -} -.icon-chat-4:before { - content: "\e0dc"; -} -.icon-chat-5:before { - content: "\e0dd"; -} -.icon-chat-bubble-1:before { - content: "\e0de"; -} -.icon-chat-bubble-2:before { - content: "\e0df"; -} -.icon-smiley-happy-1:before { - content: "\e0e0"; -} -.icon-smiley-happy-2:before { - content: "\e0e1"; -} -.icon-smiley-happy-3:before { - content: "\e0e2"; -} -.icon-smiley-happy-4:before { - content: "\e0e3"; -} -.icon-smiley-happy-5:before { - content: "\e0e4"; -} -.icon-smiley-relax:before { - content: "\e0e5"; -} -.icon-smiley-sad:before { - content: "\e0e6"; -} -.icon-smiley-surprise:before { - content: "\e0e7"; -} -.icon-thinking-1:before { - content: "\e0e8"; -} -.icon-thinking-2:before { - content: "\e0e9"; -} -.icon-call-1:before { - content: "\e0ea"; -} -.icon-call-2:before { - content: "\e0eb"; -} -.icon-call-3:before { - content: "\e0ec"; -} -.icon-call-4:before { - content: "\e0ed"; -} -.icon-call-add:before { - content: "\e0ee"; -} -.icon-call-block:before { - content: "\e0ef"; -} -.icon-call-delete:before { - content: "\e0f0"; -} -.icon-call-in:before { - content: "\e0f1"; -} -.icon-call-minus:before { - content: "\e0f2"; -} -.icon-call-out:before { - content: "\e0f3"; -} -.icon-contact:before { - content: "\e0f4"; -} -.icon-fax:before { - content: "\e0f5"; -} -.icon-hang-up:before { - content: "\e0f6"; -} -.icon-message:before { - content: "\e0f7"; -} -.icon-mobile-phone-1:before { - content: "\e0f8"; -} -.icon-mobile-phone-2:before { - content: "\e0f9"; -} -.icon-phone-1:before { - content: "\e0fa"; -} -.icon-phone-2:before { - content: "\e0fb"; -} -.icon-phone-3:before { - content: "\e0fc"; -} -.icon-phone-4:before { - content: "\e0fd"; -} -.icon-phone-vibration:before { - content: "\e0fe"; -} -.icon-signal-fine:before { - content: "\e0ff"; -} -.icon-signal-full:before { - content: "\e100"; -} -.icon-signal-high:before { - content: "\e101"; -} -.icon-signal-no:before { - content: "\e102"; -} -.icon-signal-poor:before { - content: "\e103"; -} -.icon-signal-weak:before { - content: "\e104"; -} -.icon-smartphone:before { - content: "\e105"; -} -.icon-tape:before { - content: "\e106"; -} -.icon-camera-symbol-1:before { - content: "\e107"; -} -.icon-camera-symbol-2:before { - content: "\e108"; -} -.icon-camera-symbol-3:before { - content: "\e109"; -} -.icon-headphone:before { - content: "\e10a"; -} -.icon-antenna-1:before { - content: "\e10b"; -} -.icon-antenna-2:before { - content: "\e10c"; -} -.icon-antenna-3:before { - content: "\e10d"; -} -.icon-hotspot-1:before { - content: "\e10e"; -} -.icon-hotspot-2:before { - content: "\e10f"; -} -.icon-link:before { - content: "\e110"; -} -.icon-megaphone-1:before { - content: "\e111"; -} -.icon-megaphone-2:before { - content: "\e112"; -} -.icon-radar:before { - content: "\e113"; -} -.icon-rss-1:before { - content: "\e114"; -} -.icon-rss-2:before { - content: "\e115"; -} -.icon-satellite:before { - content: "\e116"; -} -.icon-address-1:before { - content: "\e117"; -} -.icon-address-2:before { - content: "\e118"; -} -.icon-address-3:before { - content: "\e119"; -} -.icon-forward:before { - content: "\e11a"; -} -.icon-inbox-1:before { - content: "\e11b"; -} -.icon-inbox-2:before { - content: "\e11c"; -} -.icon-inbox-3:before { - content: "\e11d"; -} -.icon-inbox-4:before { - content: "\e11e"; -} -.icon-letter-1:before { - content: "\e11f"; -} -.icon-letter-2:before { - content: "\e120"; -} -.icon-letter-3:before { - content: "\e121"; -} -.icon-letter-4:before { - content: "\e122"; -} -.icon-letter-5:before { - content: "\e123"; -} -.icon-mail-1:before { - content: "\e124"; -} -.icon-mail-2:before { - content: "\e125"; -} -.icon-mail-add:before { - content: "\e126"; -} -.icon-mail-attention:before { - content: "\e127"; -} -.icon-mail-block:before { - content: "\e128"; -} -.icon-mail-box-1:before { - content: "\e129"; -} -.icon-mail-box-2:before { - content: "\e12a"; -} -.icon-mail-box-3:before { - content: "\e12b"; -} -.icon-mail-checked:before { - content: "\e12c"; -} -.icon-mail-compose:before { - content: "\e12d"; -} -.icon-mail-delete:before { - content: "\e12e"; -} -.icon-mail-favorite:before { - content: "\e12f"; -} -.icon-mail-inbox:before { - content: "\e130"; -} -.icon-mail-lock:before { - content: "\e131"; -} -.icon-mail-minus:before { - content: "\e132"; -} -.icon-mail-read:before { - content: "\e133"; -} -.icon-mail-recieved-1:before { - content: "\e134"; -} -.icon-mail-recieved-2:before { - content: "\e135"; -} -.icon-mail-search-1:before { - content: "\e136"; -} -.icon-mail-search-2:before { - content: "\e137"; -} -.icon-mail-sent-1:before { - content: "\e138"; -} -.icon-mail-sent-2:before { - content: "\e139"; -} -.icon-mail-setting:before { - content: "\e13a"; -} -.icon-mail-star:before { - content: "\e13b"; -} -.icon-mail-sync:before { - content: "\e13c"; -} -.icon-mail-time:before { - content: "\e13d"; -} -.icon-outbox-1:before { - content: "\e13e"; -} -.icon-outbox-2:before { - content: "\e13f"; -} -.icon-plane-paper-1:before { - content: "\e140"; -} -.icon-plane-paper-2:before { - content: "\e141"; -} -.icon-reply-mail-1:before { - content: "\e142"; -} -.icon-reply-mail-2:before { - content: "\e143"; -} -.icon-connection-1:before { - content: "\e144"; -} -.icon-connection-2:before { - content: "\e145"; -} -.icon-connection-3:before { - content: "\e146"; -} -.icon-contacts-1:before { - content: "\e147"; -} -.icon-contacts-2:before { - content: "\e148"; -} -.icon-contacts-3:before { - content: "\e149"; -} -.icon-contacts-4:before { - content: "\e14a"; -} -.icon-female:before { - content: "\e14b"; -} -.icon-gender-female:before { - content: "\e14c"; -} -.icon-gender-male:before { - content: "\e14d"; -} -.icon-genders:before { - content: "\e14e"; -} -.icon-id-1:before { - content: "\e14f"; -} -.icon-id-2:before { - content: "\e150"; -} -.icon-id-3:before { - content: "\e151"; -} -.icon-id-4:before { - content: "\e152"; -} -.icon-id-5:before { - content: "\e153"; -} -.icon-id-6:before { - content: "\e154"; -} -.icon-id-7:before { - content: "\e155"; -} -.icon-id-8:before { - content: "\e156"; -} -.icon-male:before { - content: "\e157"; -} -.icon-profile-1:before { - content: "\e158"; -} -.icon-profile-2:before { - content: "\e159"; -} -.icon-profile-3:before { - content: "\e15a"; -} -.icon-profile-4:before { - content: "\e15b"; -} -.icon-profile-5:before { - content: "\e15c"; -} -.icon-profile-6:before { - content: "\e15d"; -} -.icon-profile-athlete:before { - content: "\e15e"; -} -.icon-profile-bussiness-man:before { - content: "\e15f"; -} -.icon-profile-chef:before { - content: "\e160"; -} -.icon-profile-cop:before { - content: "\e161"; -} -.icon-profile-doctor-1:before { - content: "\e162"; -} -.icon-profile-doctor-2:before { - content: "\e163"; -} -.icon-profile-gentleman-1:before { - content: "\e164"; -} -.icon-profile-gentleman-2:before { - content: "\e165"; -} -.icon-profile-graduate:before { - content: "\e166"; -} -.icon-profile-king:before { - content: "\e167"; -} -.icon-profile-lady-1:before { - content: "\e168"; -} -.icon-profile-lady-2:before { - content: "\e169"; -} -.icon-profile-man:before { - content: "\e16a"; -} -.icon-profile-nurse1:before { - content: "\e16b"; -} -.icon-profile-nurse-2:before { - content: "\e16c"; -} -.icon-profile-prisoner:before { - content: "\e16d"; -} -.icon-profile-serviceman-1:before { - content: "\e16e"; -} -.icon-profile-serviceman-2:before { - content: "\e16f"; -} -.icon-profile-spy:before { - content: "\e170"; -} -.icon-profile-teacher:before { - content: "\e171"; -} -.icon-profile-thief:before { - content: "\e172"; -} -.icon-user-1:before { - content: "\e173"; -} -.icon-user-2:before { - content: "\e174"; -} -.icon-user-add-1:before { - content: "\e175"; -} -.icon-user-add-2:before { - content: "\e176"; -} -.icon-user-block-1:before { - content: "\e177"; -} -.icon-user-block-2:before { - content: "\e178"; -} -.icon-user-checked-1:before { - content: "\e179"; -} -.icon-user-checked-2:before { - content: "\e17a"; -} -.icon-user-delete-1:before { - content: "\e17b"; -} -.icon-user-delete-2:before { - content: "\e17c"; -} -.icon-user-edit-1:before { - content: "\e17d"; -} -.icon-user-edit-2:before { - content: "\e17e"; -} -.icon-user-heart-1:before { - content: "\e17f"; -} -.icon-user-heart-2:before { - content: "\e180"; -} -.icon-user-lock-1:before { - content: "\e181"; -} -.icon-user-lock-2:before { - content: "\e182"; -} -.icon-user-minus-1:before { - content: "\e183"; -} -.icon-user-minus-2:before { - content: "\e184"; -} -.icon-user-search-1:before { - content: "\e185"; -} -.icon-user-search-2:before { - content: "\e186"; -} -.icon-user-setting-1:before { - content: "\e187"; -} -.icon-user-setting-2:before { - content: "\e188"; -} -.icon-user-star-1:before { - content: "\e189"; -} -.icon-user-star-2:before { - content: "\e18a"; -} -.icon-bag-shopping-1:before { - content: "\e18b"; -} -.icon-bag-shopping-2:before { - content: "\e18c"; -} -.icon-bag-shopping-3:before { - content: "\e18d"; -} -.icon-basket-1:before { - content: "\e18e"; -} -.icon-basket-2:before { - content: "\e18f"; -} -.icon-basket-3:before { - content: "\e190"; -} -.icon-basket-add:before { - content: "\e191"; -} -.icon-basket-minus:before { - content: "\e192"; -} -.icon-briefcase:before { - content: "\e193"; -} -.icon-cart-1:before { - content: "\e194"; -} -.icon-cart-2:before { - content: "\e195"; -} -.icon-cart-3:before { - content: "\e196"; -} -.icon-cart-4:before { - content: "\e197"; -} -.icon-cut:before { - content: "\e198"; -} -.icon-handbag-1:before { - content: "\e199"; -} -.icon-handbag-2:before { - content: "\e19a"; -} -.icon-purse-1:before { - content: "\e19b"; -} -.icon-purse-2:before { - content: "\e19c"; -} -.icon-qr-code:before { - content: "\e19d"; -} -.icon-receipt-1:before { - content: "\e19e"; -} -.icon-receipt-2:before { - content: "\e19f"; -} -.icon-receipt-3:before { - content: "\e1a0"; -} -.icon-receipt-4:before { - content: "\e1a1"; -} -.icon-shopping-1:before { - content: "\e1a2"; -} -.icon-sign-new-1:before { - content: "\e1a3"; -} -.icon-sign-new-2:before { - content: "\e1a4"; -} -.icon-sign-parking:before { - content: "\e1a5"; -} -.icon-signal-star:before { - content: "\e1a6"; -} -.icon-trolley-1:before { - content: "\e1a7"; -} -.icon-trolley-2:before { - content: "\e1a8"; -} -.icon-trolley-3:before { - content: "\e1a9"; -} -.icon-trolley-load:before { - content: "\e1aa"; -} -.icon-trolley-off:before { - content: "\e1ab"; -} -.icon-wallet-1:before { - content: "\e1ac"; -} -.icon-wallet-2:before { - content: "\e1ad"; -} -.icon-wallet-3:before { - content: "\e1ae"; -} -.icon-camera-1:before { - content: "\e1af"; -} -.icon-camera-2:before { - content: "\e1b0"; -} -.icon-camera-3:before { - content: "\e1b1"; -} -.icon-camera-4:before { - content: "\e1b2"; -} -.icon-camera-5:before { - content: "\e1b3"; -} -.icon-camera-back:before { - content: "\e1b4"; -} -.icon-camera-focus:before { - content: "\e1b5"; -} -.icon-camera-frames:before { - content: "\e1b6"; -} -.icon-camera-front:before { - content: "\e1b7"; -} -.icon-camera-graph-1:before { - content: "\e1b8"; -} -.icon-camera-graph-2:before { - content: "\e1b9"; -} -.icon-camera-landscape:before { - content: "\e1ba"; -} -.icon-camera-lens-1:before { - content: "\e1bb"; -} -.icon-camera-lens-2:before { - content: "\e1bc"; -} -.icon-camera-light:before { - content: "\e1bd"; -} -.icon-camera-portrait:before { - content: "\e1be"; -} -.icon-camera-view:before { - content: "\e1bf"; -} -.icon-film-1:before { - content: "\e1c0"; -} -.icon-film-2:before { - content: "\e1c1"; -} -.icon-photo-1:before { - content: "\e1c2"; -} -.icon-photo-2:before { - content: "\e1c3"; -} -.icon-photo-frame:before { - content: "\e1c4"; -} -.icon-photos-1:before { - content: "\e1c5"; -} -.icon-photos-2:before { - content: "\e1c6"; -} -.icon-polaroid:before { - content: "\e1c7"; -} -.icon-signal-camera-1:before { - content: "\e1c8"; -} -.icon-signal-camera-2:before { - content: "\e1c9"; -} -.icon-user-photo:before { - content: "\e1ca"; -} -.icon-backward-1:before { - content: "\e1cb"; -} -.icon-dvd-player:before { - content: "\e1cc"; -} -.icon-eject-1:before { - content: "\e1cd"; -} -.icon-film-3:before { - content: "\e1ce"; -} -.icon-forward-1:before { - content: "\e1cf"; -} -.icon-handycam:before { - content: "\e1d0"; -} -.icon-movie-play-1:before { - content: "\e1d1"; -} -.icon-movie-play-2:before { - content: "\e1d2"; -} -.icon-movie-play-3:before { - content: "\e1d3"; -} -.icon-next-1:before { - content: "\e1d4"; -} -.icon-pause-1:before { - content: "\e1d5"; -} -.icon-play-1:before { - content: "\e1d6"; -} -.icon-player:before { - content: "\e1d7"; -} -.icon-previous-1:before { - content: "\e1d8"; -} -.icon-record-1:before { - content: "\e1d9"; -} -.icon-slate:before { - content: "\e1da"; -} -.icon-stop-1:before { - content: "\e1db"; -} -.icon-television:before { - content: "\e1dc"; -} -.icon-video-camera-1:before { - content: "\e1dd"; -} -.icon-video-camera-2:before { - content: "\e1de"; -} -.icon-backward-2:before { - content: "\e1df"; -} -.icon-cd:before { - content: "\e1e0"; -} -.icon-eject-2:before { - content: "\e1e1"; -} -.icon-equalizer-2:before { - content: "\e1e2"; -} -.icon-equalizer-3:before { - content: "\e1e3"; -} -.icon-forward-2:before { - content: "\e1e4"; -} -.icon-gramophone:before { - content: "\e1e5"; -} -.icon-gramophone-record-2:before { - content: "\e1e6"; -} -.icon-guitar:before { - content: "\e1e7"; -} -.icon-headphone-1:before { - content: "\e1e8"; -} -.icon-headphone-2:before { - content: "\e1e9"; -} -.icon-microphone-1:before { - content: "\e1ea"; -} -.icon-microphone-2:before { - content: "\e1eb"; -} -.icon-microphone-3:before { - content: "\e1ec"; -} -.icon-movie-play-4:before { - content: "\e1ed"; -} -.icon-music-note-1:before { - content: "\e1ee"; -} -.icon-music-note-2:before { - content: "\e1ef"; -} -.icon-music-note-3:before { - content: "\e1f0"; -} -.icon-music-note-4:before { - content: "\e1f1"; -} -.icon-next-2:before { - content: "\e1f2"; -} -.icon-notes-1:before { - content: "\e1f3"; -} -.icon-notes-2:before { - content: "\e1f4"; -} -.icon-pause-2:before { - content: "\e1f5"; -} -.icon-piano:before { - content: "\e1f6"; -} -.icon-play-2:before { - content: "\e1f7"; -} -.icon-playlist:before { - content: "\e1f8"; -} -.icon-previous-2:before { - content: "\e1f9"; -} -.icon-radio-1:before { - content: "\e1fa"; -} -.icon-radio-2:before { - content: "\e1fb"; -} -.icon-record-2:before { - content: "\e1fc"; -} -.icon-recorder:before { - content: "\e1fd"; -} -.icon-saxophone:before { - content: "\e1fe"; -} -.icon-speaker-1:before { - content: "\e1ff"; -} -.icon-speaker-2:before { - content: "\e200"; -} -.icon-speaker-3:before { - content: "\e201"; -} -.icon-stop-2:before { - content: "\e202"; -} -.icon-tape-1:before { - content: "\e203"; -} -.icon-trumpet:before { - content: "\e204"; -} -.icon-volume-down-1:before { - content: "\e205"; -} -.icon-volume-down-2:before { - content: "\e206"; -} -.icon-volume-loud-1:before { - content: "\e207"; -} -.icon-volume-loud-2:before { - content: "\e208"; -} -.icon-volume-low-1:before { - content: "\e209"; -} -.icon-volume-low-2:before { - content: "\e20a"; -} -.icon-volume-medium-1:before { - content: "\e20b"; -} -.icon-volume-medium-2:before { - content: "\e20c"; -} -.icon-volume-mute-1:before { - content: "\e20d"; -} -.icon-volume-mute-2:before { - content: "\e20e"; -} -.icon-volume-mute-3:before { - content: "\e20f"; -} -.icon-volume-up-1:before { - content: "\e210"; -} -.icon-volume-up-2:before { - content: "\e211"; -} -.icon-walkman:before { - content: "\e212"; -} -.icon-cloud:before { - content: "\e213"; -} -.icon-cloud-add:before { - content: "\e214"; -} -.icon-cloud-checked:before { - content: "\e215"; -} -.icon-cloud-delete:before { - content: "\e216"; -} -.icon-cloud-download:before { - content: "\e217"; -} -.icon-cloud-minus:before { - content: "\e218"; -} -.icon-cloud-refresh:before { - content: "\e219"; -} -.icon-cloud-sync:before { - content: "\e21a"; -} -.icon-cloud-upload:before { - content: "\e21b"; -} -.icon-download-1:before { - content: "\e21c"; -} -.icon-download-2:before { - content: "\e21d"; -} -.icon-download-3:before { - content: "\e21e"; -} -.icon-download-4:before { - content: "\e21f"; -} -.icon-download-5:before { - content: "\e220"; -} -.icon-download-6:before { - content: "\e221"; -} -.icon-download-7:before { - content: "\e222"; -} -.icon-download-8:before { - content: "\e223"; -} -.icon-download-9:before { - content: "\e224"; -} -.icon-download-10:before { - content: "\e225"; -} -.icon-download-11:before { - content: "\e226"; -} -.icon-download-12:before { - content: "\e227"; -} -.icon-download-13:before { - content: "\e228"; -} -.icon-download-14:before { - content: "\e229"; -} -.icon-download-15:before { - content: "\e22a"; -} -.icon-download-file:before { - content: "\e22b"; -} -.icon-download-folder:before { - content: "\e22c"; -} -.icon-goal-1:before { - content: "\e22d"; -} -.icon-goal-2:before { - content: "\e22e"; -} -.icon-transfer-1:before { - content: "\e22f"; -} -.icon-transfer-2:before { - content: "\e230"; -} -.icon-transfer-3:before { - content: "\e231"; -} -.icon-transfer-4:before { - content: "\e232"; -} -.icon-transfer-5:before { - content: "\e233"; -} -.icon-transfer-6:before { - content: "\e234"; -} -.icon-transfer-7:before { - content: "\e235"; -} -.icon-transfer-8:before { - content: "\e236"; -} -.icon-transfer-9:before { - content: "\e237"; -} -.icon-transfer-10:before { - content: "\e238"; -} -.icon-transfer-11:before { - content: "\e239"; -} -.icon-transfer-12:before { - content: "\e23a"; -} -.icon-upload-1:before { - content: "\e23b"; -} -.icon-upload-2:before { - content: "\e23c"; -} -.icon-upload-3:before { - content: "\e23d"; -} -.icon-upload-4:before { - content: "\e23e"; -} -.icon-upload-5:before { - content: "\e23f"; -} -.icon-upload-6:before { - content: "\e240"; -} -.icon-upload-7:before { - content: "\e241"; -} -.icon-upload-8:before { - content: "\e242"; -} -.icon-upload-9:before { - content: "\e243"; -} -.icon-upload-10:before { - content: "\e244"; -} -.icon-upload-11:before { - content: "\e245"; -} -.icon-upload-12:before { - content: "\e246"; -} -.icon-clipboard-1:before { - content: "\e247"; -} -.icon-clipboard-2:before { - content: "\e248"; -} -.icon-clipboard-3:before { - content: "\e249"; -} -.icon-clipboard-add:before { - content: "\e24a"; -} -.icon-clipboard-block:before { - content: "\e24b"; -} -.icon-clipboard-checked:before { - content: "\e24c"; -} -.icon-clipboard-delete:before { - content: "\e24d"; -} -.icon-clipboard-edit:before { - content: "\e24e"; -} -.icon-clipboard-minus:before { - content: "\e24f"; -} -.icon-document-1:before { - content: "\e250"; -} -.icon-document-2:before { - content: "\e251"; -} -.icon-file-1:before { - content: "\e252"; -} -.icon-file-2:before { - content: "\e253"; -} -.icon-file-add:before { - content: "\e254"; -} -.icon-file-attention:before { - content: "\e255"; -} -.icon-file-block:before { - content: "\e256"; -} -.icon-file-bookmark:before { - content: "\e257"; -} -.icon-file-checked:before { - content: "\e258"; -} -.icon-file-code:before { - content: "\e259"; -} -.icon-file-delete:before { - content: "\e25a"; -} -.icon-file-download:before { - content: "\e25b"; -} -.icon-file-edit:before { - content: "\e25c"; -} -.icon-file-favorite-1:before { - content: "\e25d"; -} -.icon-file-favorite-2:before { - content: "\e25e"; -} -.icon-file-graph-1:before { - content: "\e25f"; -} -.icon-file-graph-2:before { - content: "\e260"; -} -.icon-file-home:before { - content: "\e261"; -} -.icon-file-image-1:before { - content: "\e262"; -} -.icon-file-image-2:before { - content: "\e263"; -} -.icon-file-list:before { - content: "\e264"; -} -.icon-file-lock:before { - content: "\e265"; -} -.icon-file-media:before { - content: "\e266"; -} -.icon-file-minus:before { - content: "\e267"; -} -.icon-file-music:before { - content: "\e268"; -} -.icon-file-new:before { - content: "\e269"; -} -.icon-file-registry:before { - content: "\e26a"; -} -.icon-file-search:before { - content: "\e26b"; -} -.icon-file-setting:before { - content: "\e26c"; -} -.icon-file-sync:before { - content: "\e26d"; -} -.icon-file-table:before { - content: "\e26e"; -} -.icon-file-thumbnail:before { - content: "\e26f"; -} -.icon-file-time:before { - content: "\e270"; -} -.icon-file-transfer:before { - content: "\e271"; -} -.icon-file-upload:before { - content: "\e272"; -} -.icon-file-zip:before { - content: "\e273"; -} -.icon-files-1:before { - content: "\e274"; -} -.icon-files-2:before { - content: "\e275"; -} -.icon-files-3:before { - content: "\e276"; -} -.icon-files-4:before { - content: "\e277"; -} -.icon-files-5:before { - content: "\e278"; -} -.icon-files-6:before { - content: "\e279"; -} -.icon-hand-file-1:before { - content: "\e27a"; -} -.icon-hand-file-2:before { - content: "\e27b"; -} -.icon-note-paper-1:before { - content: "\e27c"; -} -.icon-note-paper-2:before { - content: "\e27d"; -} -.icon-note-paper-add:before { - content: "\e27e"; -} -.icon-note-paper-attention:before { - content: "\e27f"; -} -.icon-note-paper-block:before { - content: "\e280"; -} -.icon-note-paper-checked:before { - content: "\e281"; -} -.icon-note-paper-delete:before { - content: "\e282"; -} -.icon-note-paper-download:before { - content: "\e283"; -} -.icon-note-paper-edit:before { - content: "\e284"; -} -.icon-note-paper-favorite:before { - content: "\e285"; -} -.icon-note-paper-lock:before { - content: "\e286"; -} -.icon-note-paper-minus:before { - content: "\e287"; -} -.icon-note-paper-search:before { - content: "\e288"; -} -.icon-note-paper-sync:before { - content: "\e289"; -} -.icon-note-paper-upload:before { - content: "\e28a"; -} -.icon-print:before { - content: "\e28b"; -} -.icon-folder-1:before { - content: "\e28c"; -} -.icon-folder-2:before { - content: "\e28d"; -} -.icon-folder-3:before { - content: "\e28e"; -} -.icon-folder-4:before { - content: "\e28f"; -} -.icon-folder-add:before { - content: "\e290"; -} -.icon-folder-attention:before { - content: "\e291"; -} -.icon-folder-block:before { - content: "\e292"; -} -.icon-folder-bookmark:before { - content: "\e293"; -} -.icon-folder-checked:before { - content: "\e294"; -} -.icon-folder-code:before { - content: "\e295"; -} -.icon-folder-delete:before { - content: "\e296"; -} -.icon-folder-download:before { - content: "\e297"; -} -.icon-folder-edit:before { - content: "\e298"; -} -.icon-folder-favorite:before { - content: "\e299"; -} -.icon-folder-home:before { - content: "\e29a"; -} -.icon-folder-image:before { - content: "\e29b"; -} -.icon-folder-lock:before { - content: "\e29c"; -} -.icon-folder-media:before { - content: "\e29d"; -} -.icon-folder-minus:before { - content: "\e29e"; -} -.icon-folder-music:before { - content: "\e29f"; -} -.icon-folder-new:before { - content: "\e2a0"; -} -.icon-folder-search:before { - content: "\e2a1"; -} -.icon-folder-setting:before { - content: "\e2a2"; -} -.icon-folder-share-1:before { - content: "\e2a3"; -} -.icon-folder-share-2:before { - content: "\e2a4"; -} -.icon-folder-sync:before { - content: "\e2a5"; -} -.icon-folder-transfer:before { - content: "\e2a6"; -} -.icon-folder-upload:before { - content: "\e2a7"; -} -.icon-folder-zip:before { - content: "\e2a8"; -} -.icon-add-1:before { - content: "\e2a9"; -} -.icon-add-2:before { - content: "\e2aa"; -} -.icon-add-3:before { - content: "\e2ab"; -} -.icon-add-4:before { - content: "\e2ac"; -} -.icon-add-tag:before { - content: "\e2ad"; -} -.icon-arrow-1:before { - content: "\e2ae"; -} -.icon-arrow-2:before { - content: "\e2af"; -} -.icon-arrow-down-1:before { - content: "\e2b0"; -} -.icon-arrow-down-2:before { - content: "\e2b1"; -} -.icon-arrow-left-1:before { - content: "\e2b2"; -} -.icon-arrow-left-2:before { - content: "\e2b3"; -} -.icon-arrow-move-1:before { - content: "\e2b4"; -} -.icon-arrow-move-down:before { - content: "\e2b5"; -} -.icon-arrow-move-left:before { - content: "\e2b6"; -} -.icon-arrow-move-right:before { - content: "\e2b7"; -} -.icon-arrow-move-up:before { - content: "\e2b8"; -} -.icon-arrow-right-1:before { - content: "\e2b9"; -} -.icon-arrow-right-2:before { - content: "\e2ba"; -} -.icon-arrow-up-1:before { - content: "\e2bb"; -} -.icon-arrow-up-2:before { - content: "\e2bc"; -} -.icon-back:before { - content: "\e2bd"; -} -.icon-center-expand:before { - content: "\e2be"; -} -.icon-center-reduce:before { - content: "\e2bf"; -} -.icon-delete-1-1:before { - content: "\e2c0"; -} -.icon-delete-2-1:before { - content: "\e2c1"; -} -.icon-delete-3:before { - content: "\e2c2"; -} -.icon-delete-4:before { - content: "\e2c3"; -} -.icon-delete-tag:before { - content: "\e2c4"; -} -.icon-expand-horizontal:before { - content: "\e2c5"; -} -.icon-expand-vertical:before { - content: "\e2c6"; -} -.icon-forward-3:before { - content: "\e2c7"; -} -.icon-infinity:before { - content: "\e2c8"; -} -.icon-loading:before { - content: "\e2c9"; -} -.icon-log-out-1:before { - content: "\e2ca"; -} -.icon-log-out-2:before { - content: "\e2cb"; -} -.icon-loop-1:before { - content: "\e2cc"; -} -.icon-loop-2:before { - content: "\e2cd"; -} -.icon-loop-3:before { - content: "\e2ce"; -} -.icon-minus-1:before { - content: "\e2cf"; -} -.icon-minus-2:before { - content: "\e2d0"; -} -.icon-minus-3:before { - content: "\e2d1"; -} -.icon-minus-4:before { - content: "\e2d2"; -} -.icon-minus-tag:before { - content: "\e2d3"; -} -.icon-move-diagonal-1:before { - content: "\e2d4"; -} -.icon-move-diagonal-2:before { - content: "\e2d5"; -} -.icon-move-horizontal-1:before { - content: "\e2d6"; -} -.icon-move-horizontal-2:before { - content: "\e2d7"; -} -.icon-move-vertical-1:before { - content: "\e2d8"; -} -.icon-move-vertical-2:before { - content: "\e2d9"; -} -.icon-next-1-1:before { - content: "\e2da"; -} -.icon-next-2-1:before { - content: "\e2db"; -} -.icon-power-1-1:before { - content: "\e2dc"; -} -.icon-power-2-1:before { - content: "\e2dd"; -} -.icon-power-3:before { - content: "\e2de"; -} -.icon-power-4:before { - content: "\e2df"; -} -.icon-recycle:before { - content: "\e2e0"; -} -.icon-refresh:before { - content: "\e2e1"; -} -.icon-repeat:before { - content: "\e2e2"; -} -.icon-return:before { - content: "\e2e3"; -} -.icon-scale-all-1:before { - content: "\e2e4"; -} -.icon-scale-center:before { - content: "\e2e5"; -} -.icon-scale-horizontal-1:before { - content: "\e2e6"; -} -.icon-scale-horizontal-2:before { - content: "\e2e7"; -} -.icon-scale-reduce-1:before { - content: "\e2e8"; -} -.icon-scale-reduce-2:before { - content: "\e2e9"; -} -.icon-scale-reduce-3:before { - content: "\e2ea"; -} -.icon-scale-spread-1:before { - content: "\e2eb"; -} -.icon-scale-spread-2:before { - content: "\e2ec"; -} -.icon-scale-spread-3:before { - content: "\e2ed"; -} -.icon-scale-vertical-1:before { - content: "\e2ee"; -} -.icon-scale-vertical-2:before { - content: "\e2ef"; -} -.icon-scroll-horizontal-1:before { - content: "\e2f0"; -} -.icon-scroll-horizontal-2:before { - content: "\e2f1"; -} -.icon-scroll-omnidirectional-1:before { - content: "\e2f2"; -} -.icon-scroll-omnidirectional-2:before { - content: "\e2f3"; -} -.icon-scroll-vertical-1:before { - content: "\e2f4"; -} -.icon-scroll-vertical-2:before { - content: "\e2f5"; -} -.icon-shuffle:before { - content: "\e2f6"; -} -.icon-split:before { - content: "\e2f7"; -} -.icon-sync-1:before { - content: "\e2f8"; -} -.icon-sync-2:before { - content: "\e2f9"; -} -.icon-timer:before { - content: "\e2fa"; -} -.icon-transfer:before { - content: "\e2fb"; -} -.icon-transfer-1-1:before { - content: "\e2fc"; -} -.icon-check-1:before { - content: "\e2fd"; -} -.icon-check-2:before { - content: "\e2fe"; -} -.icon-check-3:before { - content: "\e2ff"; -} -.icon-check-box:before { - content: "\e300"; -} -.icon-check-bubble:before { - content: "\e301"; -} -.icon-check-circle-1:before { - content: "\e302"; -} -.icon-check-circle-2:before { - content: "\e303"; -} -.icon-check-list:before { - content: "\e304"; -} -.icon-check-shield:before { - content: "\e305"; -} -.icon-cross:before { - content: "\e306"; -} -.icon-cross-bubble:before { - content: "\e307"; -} -.icon-cross-shield:before { - content: "\e308"; -} -.icon-briefcase-1:before { - content: "\e309"; -} -.icon-brightness-high:before { - content: "\e30a"; -} -.icon-brightness-low:before { - content: "\e30b"; -} -.icon-hammer-1:before { - content: "\e30c"; -} -.icon-hammer-2:before { - content: "\e30d"; -} -.icon-pulse:before { - content: "\e30e"; -} -.icon-scale:before { - content: "\e30f"; -} -.icon-screw-driver:before { - content: "\e310"; -} -.icon-setting-adjustment:before { - content: "\e311"; -} -.icon-setting-gear:before { - content: "\e312"; -} -.icon-setting-gears-1:before { - content: "\e313"; -} -.icon-setting-gears-2:before { - content: "\e314"; -} -.icon-setting-wrenches:before { - content: "\e315"; -} -.icon-switch-1:before { - content: "\e316"; -} -.icon-switch-2:before { - content: "\e317"; -} -.icon-wrench:before { - content: "\e318"; -} -.icon-alarm-1:before { - content: "\e319"; -} -.icon-alarm-clock:before { - content: "\e31a"; -} -.icon-alarm-off:before { - content: "\e31b"; -} -.icon-alarm-snooze:before { - content: "\e31c"; -} -.icon-bell:before { - content: "\e31d"; -} -.icon-calendar-1:before { - content: "\e31e"; -} -.icon-calendar-2:before { - content: "\e31f"; -} -.icon-clock-1:before { - content: "\e320"; -} -.icon-clock-2:before { - content: "\e321"; -} -.icon-clock-3:before { - content: "\e322"; -} -.icon-hourglass-1:before { - content: "\e323"; -} -.icon-hourglass-2:before { - content: "\e324"; -} -.icon-timer-1:before { - content: "\e325"; -} -.icon-timer-3-quarter-1:before { - content: "\e326"; -} -.icon-timer-3-quarter-2:before { - content: "\e327"; -} -.icon-timer-full-1:before { - content: "\e328"; -} -.icon-timer-full-2:before { - content: "\e329"; -} -.icon-timer-half-1:before { - content: "\e32a"; -} -.icon-timer-half-2:before { - content: "\e32b"; -} -.icon-timer-half-3:before { - content: "\e32c"; -} -.icon-timer-half-4:before { - content: "\e32d"; -} -.icon-timer-quarter-1:before { - content: "\e32e"; -} -.icon-timer-quarter-2:before { - content: "\e32f"; -} -.icon-watch-1:before { - content: "\e330"; -} -.icon-watch-2:before { - content: "\e331"; -} -.icon-alert-1:before { - content: "\e332"; -} -.icon-alert-2:before { - content: "\e333"; -} -.icon-alert-3:before { - content: "\e334"; -} -.icon-information:before { - content: "\e335"; -} -.icon-nuclear-1:before { - content: "\e336"; -} -.icon-nuclear-2:before { - content: "\e337"; -} -.icon-question-mark:before { - content: "\e338"; -} -.icon-abacus:before { - content: "\e339"; -} -.icon-amex-card:before { - content: "\e33a"; -} -.icon-atm:before { - content: "\e33b"; -} -.icon-balance:before { - content: "\e33c"; -} -.icon-bank-1:before { - content: "\e33d"; -} -.icon-bank-2:before { - content: "\e33e"; -} -.icon-bank-note-1:before { - content: "\e33f"; -} -.icon-bank-note-2:before { - content: "\e340"; -} -.icon-bank-note-3:before { - content: "\e341"; -} -.icon-bitcoins:before { - content: "\e342"; -} -.icon-board:before { - content: "\e343"; -} -.icon-box-1:before { - content: "\e344"; -} -.icon-box-2:before { - content: "\e345"; -} -.icon-box-3:before { - content: "\e346"; -} -.icon-box-download:before { - content: "\e347"; -} -.icon-box-shipping:before { - content: "\e348"; -} -.icon-box-upload:before { - content: "\e349"; -} -.icon-business-chart-1:before { - content: "\e34a"; -} -.icon-business-chart-2:before { - content: "\e34b"; -} -.icon-calculator-1:before { - content: "\e34c"; -} -.icon-calculator-2:before { - content: "\e34d"; -} -.icon-calculator-3:before { - content: "\e34e"; -} -.icon-cash-register:before { - content: "\e34f"; -} -.icon-chart-board:before { - content: "\e350"; -} -.icon-chart-down:before { - content: "\e351"; -} -.icon-chart-up:before { - content: "\e352"; -} -.icon-check:before { - content: "\e353"; -} -.icon-coins-1:before { - content: "\e354"; -} -.icon-coins-2:before { - content: "\e355"; -} -.icon-court:before { - content: "\e356"; -} -.icon-credit-card:before { - content: "\e357"; -} -.icon-credit-card-lock:before { - content: "\e358"; -} -.icon-delivery:before { - content: "\e359"; -} -.icon-dollar-bag:before { - content: "\e35a"; -} -.icon-dollar-currency-1:before { - content: "\e35b"; -} -.icon-dollar-currency-2:before { - content: "\e35c"; -} -.icon-dollar-currency-3:before { - content: "\e35d"; -} -.icon-dollar-currency-4:before { - content: "\e35e"; -} -.icon-euro-bag:before { - content: "\e35f"; -} -.icon-euro-currency-1:before { - content: "\e360"; -} -.icon-euro-currency-2:before { - content: "\e361"; -} -.icon-euro-currency-3:before { - content: "\e362"; -} -.icon-euro-currency-4:before { - content: "\e363"; -} -.icon-forklift:before { - content: "\e364"; -} -.icon-hand-card:before { - content: "\e365"; -} -.icon-hand-coin:before { - content: "\e366"; -} -.icon-keynote:before { - content: "\e367"; -} -.icon-master-card:before { - content: "\e368"; -} -.icon-money:before { - content: "\e369"; -} -.icon-parking-meter:before { - content: "\e36a"; -} -.icon-percent-1:before { - content: "\e36b"; -} -.icon-percent-2:before { - content: "\e36c"; -} -.icon-percent-3:before { - content: "\e36d"; -} -.icon-percent-4:before { - content: "\e36e"; -} -.icon-percent-5:before { - content: "\e36f"; -} -.icon-percent-up:before { - content: "\e370"; -} -.icon-pie-chart-1:before { - content: "\e371"; -} -.icon-pie-chart-2:before { - content: "\e372"; -} -.icon-piggy-bank:before { - content: "\e373"; -} -.icon-pound-currency-1:before { - content: "\e374"; -} -.icon-pound-currency-2:before { - content: "\e375"; -} -.icon-pound-currency-3:before { - content: "\e376"; -} -.icon-pound-currency-4:before { - content: "\e377"; -} -.icon-safe-1:before { - content: "\e378"; -} -.icon-safe-2:before { - content: "\e379"; -} -.icon-shop:before { - content: "\e37a"; -} -.icon-sign:before { - content: "\e37b"; -} -.icon-trolley:before { - content: "\e37c"; -} -.icon-truck-1:before { - content: "\e37d"; -} -.icon-truck-2:before { - content: "\e37e"; -} -.icon-visa-card:before { - content: "\e37f"; -} -.icon-yen-currency-1:before { - content: "\e380"; -} -.icon-yen-currency-2:before { - content: "\e381"; -} -.icon-yen-currency-3:before { - content: "\e382"; -} -.icon-yen-currency-4:before { - content: "\e383"; -} -.icon-add-marker-1:before { - content: "\e384"; -} -.icon-add-marker-1-1:before { - content: "\e385"; -} -.icon-add-marker-2:before { - content: "\e386"; -} -.icon-add-marker-2-1:before { - content: "\e387"; -} -.icon-add-marker-3:before { - content: "\e388"; -} -.icon-compass-1:before { - content: "\e389"; -} -.icon-compass-2:before { - content: "\e38a"; -} -.icon-compass-3:before { - content: "\e38b"; -} -.icon-delete-marker-1:before { - content: "\e38c"; -} -.icon-delete-marker-1-1:before { - content: "\e38d"; -} -.icon-delete-marker-2:before { - content: "\e38e"; -} -.icon-delete-marker-2-1:before { - content: "\e38f"; -} -.icon-favorite-marker-1:before { - content: "\e390"; -} -.icon-favorite-marker-1-1:before { - content: "\e391"; -} -.icon-favorite-marker-2:before { - content: "\e392"; -} -.icon-favorite-marker-2-1:before { - content: "\e393"; -} -.icon-globe:before { - content: "\e394"; -} -.icon-location:before { - content: "\e395"; -} -.icon-map-1:before { - content: "\e396"; -} -.icon-map-location:before { - content: "\e397"; -} -.icon-map-marker-1:before { - content: "\e398"; -} -.icon-map-marker-1-1:before { - content: "\e399"; -} -.icon-map-marker-2:before { - content: "\e39a"; -} -.icon-map-marker-3:before { - content: "\e39b"; -} -.icon-map-marker-pin:before { - content: "\e39c"; -} -.icon-map-pin:before { - content: "\e39d"; -} -.icon-marker-1:before { - content: "\e39e"; -} -.icon-marker-1-1:before { - content: "\e39f"; -} -.icon-marker-2:before { - content: "\e3a0"; -} -.icon-marker-2-1:before { - content: "\e3a1"; -} -.icon-marker-pin-1:before { - content: "\e3a2"; -} -.icon-marker-pin-2:before { - content: "\e3a3"; -} -.icon-marker-pin-location:before { - content: "\e3a4"; -} -.icon-minus-marker-1:before { - content: "\e3a5"; -} -.icon-minus-marker-1-1:before { - content: "\e3a6"; -} -.icon-minus-marker-2:before { - content: "\e3a7"; -} -.icon-minus-marker-2-1:before { - content: "\e3a8"; -} -.icon-minus-marker-3:before { - content: "\e3a9"; -} -.icon-anchor:before { - content: "\e3aa"; -} -.icon-bank:before { - content: "\e3ab"; -} -.icon-beach:before { - content: "\e3ac"; -} -.icon-boat:before { - content: "\e3ad"; -} -.icon-building-1:before { - content: "\e3ae"; -} -.icon-building-2:before { - content: "\e3af"; -} -.icon-building-3:before { - content: "\e3b0"; -} -.icon-buildings-1:before { - content: "\e3b1"; -} -.icon-buildings-2:before { - content: "\e3b2"; -} -.icon-buildings-3:before { - content: "\e3b3"; -} -.icon-buildings-4:before { - content: "\e3b4"; -} -.icon-castle:before { - content: "\e3b5"; -} -.icon-column:before { - content: "\e3b6"; -} -.icon-direction-sign:before { - content: "\e3b7"; -} -.icon-factory:before { - content: "\e3b8"; -} -.icon-fence:before { - content: "\e3b9"; -} -.icon-garage:before { - content: "\e3ba"; -} -.icon-globe-1:before { - content: "\e3bb"; -} -.icon-globe-2:before { - content: "\e3bc"; -} -.icon-house-1:before { - content: "\e3bd"; -} -.icon-house-2:before { - content: "\e3be"; -} -.icon-house-3:before { - content: "\e3bf"; -} -.icon-house-4:before { - content: "\e3c0"; -} -.icon-library:before { - content: "\e3c1"; -} -.icon-light-house:before { - content: "\e3c2"; -} -.icon-pisa:before { - content: "\e3c3"; -} -.icon-skyscraper:before { - content: "\e3c4"; -} -.icon-temple:before { - content: "\e3c5"; -} -.icon-treasure-map:before { - content: "\e3c6"; -} -.icon-tree:before { - content: "\e3c7"; -} -.icon-tree-pine:before { - content: "\e3c8"; -} -.icon-attention:before { - content: "\e3c9"; -} -.icon-bug-1:before { - content: "\e3ca"; -} -.icon-bug-2:before { - content: "\e3cb"; -} -.icon-css3:before { - content: "\e3cc"; -} -.icon-firewall:before { - content: "\e3cd"; -} -.icon-html5:before { - content: "\e3ce"; -} -.icon-plugins-1:before { - content: "\e3cf"; -} -.icon-plugins-2:before { - content: "\e3d0"; -} -.icon-script:before { - content: "\e3d1"; -} -.icon-new-window:before { - content: "\e3d2"; -} -.icon-window-1:before { - content: "\e3d3"; -} -.icon-window-2:before { - content: "\e3d4"; -} -.icon-window-3:before { - content: "\e3d5"; -} -.icon-window-add:before { - content: "\e3d6"; -} -.icon-window-alert:before { - content: "\e3d7"; -} -.icon-window-check:before { - content: "\e3d8"; -} -.icon-window-code-1:before { - content: "\e3d9"; -} -.icon-window-code-2:before { - content: "\e3da"; -} -.icon-window-code-3:before { - content: "\e3db"; -} -.icon-window-column:before { - content: "\e3dc"; -} -.icon-window-delete:before { - content: "\e3dd"; -} -.icon-window-denied:before { - content: "\e3de"; -} -.icon-window-download-1:before { - content: "\e3df"; -} -.icon-window-download-2:before { - content: "\e3e0"; -} -.icon-window-edit:before { - content: "\e3e1"; -} -.icon-window-favorite:before { - content: "\e3e2"; -} -.icon-window-graph-1:before { - content: "\e3e3"; -} -.icon-window-graph-2:before { - content: "\e3e4"; -} -.icon-window-hand:before { - content: "\e3e5"; -} -.icon-window-home:before { - content: "\e3e6"; -} -.icon-window-like:before { - content: "\e3e7"; -} -.icon-window-list-1:before { - content: "\e3e8"; -} -.icon-window-list-2:before { - content: "\e3e9"; -} -.icon-window-lock:before { - content: "\e3ea"; -} -.icon-window-minimize:before { - content: "\e3eb"; -} -.icon-window-minus:before { - content: "\e3ec"; -} -.icon-window-refresh:before { - content: "\e3ed"; -} -.icon-window-register:before { - content: "\e3ee"; -} -.icon-window-search:before { - content: "\e3ef"; -} -.icon-window-selection:before { - content: "\e3f0"; -} -.icon-window-setting:before { - content: "\e3f1"; -} -.icon-window-sync:before { - content: "\e3f2"; -} -.icon-window-thumbnails-1:before { - content: "\e3f3"; -} -.icon-window-thumbnails-2:before { - content: "\e3f4"; -} -.icon-window-time:before { - content: "\e3f5"; -} -.icon-window-upload-1:before { - content: "\e3f6"; -} -.icon-window-upload-2:before { - content: "\e3f7"; -} -.icon-windows-selection:before { - content: "\e3f8"; -} -.icon-database:before { - content: "\e3f9"; -} -.icon-database-alert:before { - content: "\e3fa"; -} -.icon-database-block:before { - content: "\e3fb"; -} -.icon-database-check:before { - content: "\e3fc"; -} -.icon-database-delete:before { - content: "\e3fd"; -} -.icon-database-download:before { - content: "\e3fe"; -} -.icon-database-edit:before { - content: "\e3ff"; -} -.icon-database-lock:before { - content: "\e400"; -} -.icon-database-minus:before { - content: "\e401"; -} -.icon-database-network:before { - content: "\e402"; -} -.icon-database-plus:before { - content: "\e403"; -} -.icon-database-refresh:before { - content: "\e404"; -} -.icon-database-search:before { - content: "\e405"; -} -.icon-database-setting:before { - content: "\e406"; -} -.icon-database-sync:before { - content: "\e407"; -} -.icon-database-time:before { - content: "\e408"; -} -.icon-database-upload:before { - content: "\e409"; -} -.icon-battery-charging:before { - content: "\e40a"; -} -.icon-battery-full:before { - content: "\e40b"; -} -.icon-battery-high:before { - content: "\e40c"; -} -.icon-battery-low:before { - content: "\e40d"; -} -.icon-battery-medium:before { - content: "\e40e"; -} -.icon-cd-1:before { - content: "\e40f"; -} -.icon-cd-2:before { - content: "\e410"; -} -.icon-chip:before { - content: "\e411"; -} -.icon-computer:before { - content: "\e412"; -} -.icon-disc:before { - content: "\e413"; -} -.icon-filter:before { - content: "\e414"; -} -.icon-floppy-disk:before { - content: "\e415"; -} -.icon-gameboy:before { - content: "\e416"; -} -.icon-harddisk-1:before { - content: "\e417"; -} -.icon-harddisk-2:before { - content: "\e418"; -} -.icon-imac:before { - content: "\e419"; -} -.icon-ipad-1:before { - content: "\e41a"; -} -.icon-ipad-2:before { - content: "\e41b"; -} -.icon-ipod:before { - content: "\e41c"; -} -.icon-joystick-1:before { - content: "\e41d"; -} -.icon-joystick-2:before { - content: "\e41e"; -} -.icon-joystick-3:before { - content: "\e41f"; -} -.icon-keyboard-1:before { - content: "\e420"; -} -.icon-keyboard-2:before { - content: "\e421"; -} -.icon-kindle-1:before { - content: "\e422"; -} -.icon-kindle-2:before { - content: "\e423"; -} -.icon-laptop-1:before { - content: "\e424"; -} -.icon-laptop-2:before { - content: "\e425"; -} -.icon-memory-card:before { - content: "\e426"; -} -.icon-mobile-phone:before { - content: "\e427"; -} -.icon-mouse-1:before { - content: "\e428"; -} -.icon-mouse-2:before { - content: "\e429"; -} -.icon-mp3player:before { - content: "\e42a"; -} -.icon-plug-1:before { - content: "\e42b"; -} -.icon-plug-2:before { - content: "\e42c"; -} -.icon-plug-slot:before { - content: "\e42d"; -} -.icon-printer:before { - content: "\e42e"; -} -.icon-projector:before { - content: "\e42f"; -} -.icon-remote:before { - content: "\e430"; -} -.icon-router:before { - content: "\e431"; -} -.icon-screen-1:before { - content: "\e432"; -} -.icon-screen-2:before { - content: "\e433"; -} -.icon-screen-3:before { - content: "\e434"; -} -.icon-screen-4:before { - content: "\e435"; -} -.icon-smartphone-1:before { - content: "\e436"; -} -.icon-television-1:before { - content: "\e437"; -} -.icon-typewriter-1:before { - content: "\e438"; -} -.icon-typewriter-2:before { - content: "\e439"; -} -.icon-usb-1:before { - content: "\e43a"; -} -.icon-usb-2:before { - content: "\e43b"; -} -.icon-webcam:before { - content: "\e43c"; -} -.icon-wireless-router-1:before { - content: "\e43d"; -} -.icon-wireless-router-2:before { - content: "\e43e"; -} -.icon-bluetooth:before { - content: "\e43f"; -} -.icon-ethernet:before { - content: "\e440"; -} -.icon-ethernet-slot:before { - content: "\e441"; -} -.icon-firewire-1:before { - content: "\e442"; -} -.icon-firewire-2:before { - content: "\e443"; -} -.icon-network-1:before { - content: "\e444"; -} -.icon-network-2:before { - content: "\e445"; -} -.icon-server-1:before { - content: "\e446"; -} -.icon-server-2:before { - content: "\e447"; -} -.icon-server-3:before { - content: "\e448"; -} -.icon-usb:before { - content: "\e449"; -} -.icon-wireless-signal:before { - content: "\e44a"; -} -.icon-book-1:before { - content: "\e44b"; -} -.icon-book-2:before { - content: "\e44c"; -} -.icon-book-3:before { - content: "\e44d"; -} -.icon-book-4:before { - content: "\e44e"; -} -.icon-book-5:before { - content: "\e44f"; -} -.icon-book-6:before { - content: "\e450"; -} -.icon-book-7:before { - content: "\e451"; -} -.icon-book-8:before { - content: "\e452"; -} -.icon-book-download-1:before { - content: "\e453"; -} -.icon-book-download-2:before { - content: "\e454"; -} -.icon-book-favorite-1:before { - content: "\e455"; -} -.icon-book-favorite-2:before { - content: "\e456"; -} -.icon-bookmark-1-1:before { - content: "\e457"; -} -.icon-bookmark-2-1:before { - content: "\e458"; -} -.icon-bookmark-3-1:before { - content: "\e459"; -} -.icon-bookmark-4-1:before { - content: "\e45a"; -} -.icon-books-1:before { - content: "\e45b"; -} -.icon-books-2:before { - content: "\e45c"; -} -.icon-books-3:before { - content: "\e45d"; -} -.icon-briefcase-2:before { - content: "\e45e"; -} -.icon-contact-book-1:before { - content: "\e45f"; -} -.icon-contact-book-2:before { - content: "\e460"; -} -.icon-contact-book-3:before { - content: "\e461"; -} -.icon-contact-book-4:before { - content: "\e462"; -} -.icon-copyright:before { - content: "\e463"; -} -.icon-creative-commons:before { - content: "\e464"; -} -.icon-cube:before { - content: "\e465"; -} -.icon-data-filter:before { - content: "\e466"; -} -.icon-document-box-1:before { - content: "\e467"; -} -.icon-document-box-2:before { - content: "\e468"; -} -.icon-document-box-3:before { - content: "\e469"; -} -.icon-drawer-1:before { - content: "\e46a"; -} -.icon-drawer-2:before { - content: "\e46b"; -} -.icon-drawer-3:before { - content: "\e46c"; -} -.icon-envelope:before { - content: "\e46d"; -} -.icon-file:before { - content: "\e46e"; -} -.icon-files:before { - content: "\e46f"; -} -.icon-filter-1:before { - content: "\e470"; -} -.icon-filter-2:before { - content: "\e471"; -} -.icon-layers-1:before { - content: "\e472"; -} -.icon-list-1:before { - content: "\e473"; -} -.icon-list-2:before { - content: "\e474"; -} -.icon-newspaper-1:before { - content: "\e475"; -} -.icon-newspaper-2:before { - content: "\e476"; -} -.icon-registry-1:before { - content: "\e477"; -} -.icon-registry-2:before { - content: "\e478"; -} -.icon-shield-1:before { - content: "\e479"; -} -.icon-shield-2:before { - content: "\e47a"; -} -.icon-shield-3:before { - content: "\e47b"; -} -.icon-sketchbook:before { - content: "\e47c"; -} -.icon-sound-book:before { - content: "\e47d"; -} -.icon-thumbnails-1:before { - content: "\e47e"; -} -.icon-thumbnails-2:before { - content: "\e47f"; -} -.icon-graph:before { - content: "\e480"; -} -.icon-hierarchy-1:before { - content: "\e481"; -} -.icon-hierarchy-2:before { - content: "\e482"; -} -.icon-hierarchy-3:before { - content: "\e483"; -} -.icon-hierarchy-4:before { - content: "\e484"; -} -.icon-hierarchy-5:before { - content: "\e485"; -} -.icon-hierarchy-6:before { - content: "\e486"; -} -.icon-hierarchy-7:before { - content: "\e487"; -} -.icon-network-1-1:before { - content: "\e488"; -} -.icon-network-2-1:before { - content: "\e489"; -} -.icon-backpack:before { - content: "\e48a"; -} -.icon-balance-1:before { - content: "\e48b"; -} -.icon-bed:before { - content: "\e48c"; -} -.icon-bench:before { - content: "\e48d"; -} -.icon-bomb-1:before { - content: "\e48e"; -} -.icon-bricks:before { - content: "\e48f"; -} -.icon-bullets:before { - content: "\e490"; -} -.icon-buoy:before { - content: "\e491"; -} -.icon-campfire:before { - content: "\e492"; -} -.icon-can:before { - content: "\e493"; -} -.icon-candle:before { - content: "\e494"; -} -.icon-canon:before { - content: "\e495"; -} -.icon-cctv-1:before { - content: "\e496"; -} -.icon-cctv-2:before { - content: "\e497"; -} -.icon-chair:before { - content: "\e498"; -} -.icon-chair-director:before { - content: "\e499"; -} -.icon-cigarette:before { - content: "\e49a"; -} -.icon-construction-sign:before { - content: "\e49b"; -} -.icon-diamond:before { - content: "\e49c"; -} -.icon-disabled:before { - content: "\e49d"; -} -.icon-door:before { - content: "\e49e"; -} -.icon-drawer:before { - content: "\e49f"; -} -.icon-driller:before { - content: "\e4a0"; -} -.icon-dumbbells:before { - content: "\e4a1"; -} -.icon-fire-extinguisher:before { - content: "\e4a2"; -} -.icon-flashlight:before { - content: "\e4a3"; -} -.icon-gas-station:before { - content: "\e4a4"; -} -.icon-gun:before { - content: "\e4a5"; -} -.icon-lamp-1:before { - content: "\e4a6"; -} -.icon-lamp-2:before { - content: "\e4a7"; -} -.icon-lamp-3:before { - content: "\e4a8"; -} -.icon-lamp-4:before { - content: "\e4a9"; -} -.icon-lightbulb-1:before { - content: "\e4aa"; -} -.icon-lightbulb-2:before { - content: "\e4ab"; -} -.icon-measuring-tape:before { - content: "\e4ac"; -} -.icon-mine-cart:before { - content: "\e4ad"; -} -.icon-missile:before { - content: "\e4ae"; -} -.icon-ring:before { - content: "\e4af"; -} -.icon-scale-1:before { - content: "\e4b0"; -} -.icon-shovel:before { - content: "\e4b1"; -} -.icon-smoke-no:before { - content: "\e4b2"; -} -.icon-sofa-1:before { - content: "\e4b3"; -} -.icon-sofa-2:before { - content: "\e4b4"; -} -.icon-sofa-3:before { - content: "\e4b5"; -} -.icon-target:before { - content: "\e4b6"; -} -.icon-torch:before { - content: "\e4b7"; -} -.icon-traffic-cone:before { - content: "\e4b8"; -} -.icon-traffic-light-1:before { - content: "\e4b9"; -} -.icon-traffic-light-2:before { - content: "\e4ba"; -} -.icon-treasure-chest-1:before { - content: "\e4bb"; -} -.icon-treasure-chest-2:before { - content: "\e4bc"; -} -.icon-trowel:before { - content: "\e4bd"; -} -.icon-watering-can:before { - content: "\e4be"; -} -.icon-weigh:before { - content: "\e4bf"; -} -.icon-36-text-arrow-redo:before { - content: "\e4c0"; -} -.icon-academic-cap:before { - content: "\e4c1"; -} -.icon-baseball-helmet:before { - content: "\e4c2"; -} -.icon-beanie:before { - content: "\e4c3"; -} -.icon-bike-helmet:before { - content: "\e4c4"; -} -.icon-bow:before { - content: "\e4c5"; -} -.icon-cap:before { - content: "\e4c6"; -} -.icon-chaplin:before { - content: "\e4c7"; -} -.icon-chef-hat:before { - content: "\e4c8"; -} -.icon-cloth-hanger:before { - content: "\e4c9"; -} -.icon-fins:before { - content: "\e4ca"; -} -.icon-football-helmet:before { - content: "\e4cb"; -} -.icon-glasses:before { - content: "\e4cc"; -} -.icon-glasses-1:before { - content: "\e4cd"; -} -.icon-glasses-2:before { - content: "\e4ce"; -} -.icon-magician-hat:before { - content: "\e4cf"; -} -.icon-monocle-1:before { - content: "\e4d0"; -} -.icon-monocle-2:before { - content: "\e4d1"; -} -.icon-necktie:before { - content: "\e4d2"; -} -.icon-safety-helmet:before { - content: "\e4d3"; -} -.icon-scuba-tank:before { - content: "\e4d4"; -} -.icon-shirt-1:before { - content: "\e4d5"; -} -.icon-shirt-2:before { - content: "\e4d6"; -} -.icon-shirt-3:before { - content: "\e4d7"; -} -.icon-sneakers:before { - content: "\e4d8"; -} -.icon-snorkel:before { - content: "\e4d9"; -} -.icon-sombrero:before { - content: "\e4da"; -} -.icon-sunglasses:before { - content: "\e4db"; -} -.icon-tall-hat:before { - content: "\e4dc"; -} -.icon-trousers:before { - content: "\e4dd"; -} -.icon-walking-stick:before { - content: "\e4de"; -} -.icon-arrow-undo:before { - content: "\e4df"; -} -.icon-bold:before { - content: "\e4e0"; -} -.icon-columns:before { - content: "\e4e1"; -} -.icon-eraser:before { - content: "\e4e2"; -} -.icon-font-color:before { - content: "\e4e3"; -} -.icon-html:before { - content: "\e4e4"; -} -.icon-italic:before { - content: "\e4e5"; -} -.icon-list-1-1:before { - content: "\e4e6"; -} -.icon-list-2-1:before { - content: "\e4e7"; -} -.icon-list-3:before { - content: "\e4e8"; -} -.icon-list-4:before { - content: "\e4e9"; -} -.icon-paragraph:before { - content: "\e4ea"; -} -.icon-paste:before { - content: "\e4eb"; -} -.icon-print-preview:before { - content: "\e4ec"; -} -.icon-quote:before { - content: "\e4ed"; -} -.icon-strikethrough:before { - content: "\e4ee"; -} -.icon-text:before { - content: "\e4ef"; -} -.icon-text-wrapping-1:before { - content: "\e4f0"; -} -.icon-text-wrapping-2:before { - content: "\e4f1"; -} -.icon-text-wrapping-3:before { - content: "\e4f2"; -} -.icon-underline:before { - content: "\e4f3"; -} -.icon-align-center:before { - content: "\e4f4"; -} -.icon-align-left:before { - content: "\e4f5"; -} -.icon-align-right:before { - content: "\e4f6"; -} -.icon-all-caps:before { - content: "\e4f7"; -} -.icon-arrange-2-1:before { - content: "\e4f8"; -} -.icon-arrange-2-2:before { - content: "\e4f9"; -} -.icon-arrange-2-3:before { - content: "\e4fa"; -} -.icon-arrange-2-4:before { - content: "\e4fb"; -} -.icon-arrange-3-1:before { - content: "\e4fc"; -} -.icon-arrange-3-2:before { - content: "\e4fd"; -} -.icon-arrange-3-3:before { - content: "\e4fe"; -} -.icon-arrange-3-4:before { - content: "\e4ff"; -} -.icon-arrange-3-5:before { - content: "\e500"; -} -.icon-arrange-4-1:before { - content: "\e501"; -} -.icon-arrange-4-2:before { - content: "\e502"; -} -.icon-arrange-4-3:before { - content: "\e503"; -} -.icon-arrange-5:before { - content: "\e504"; -} -.icon-consolidate-all:before { - content: "\e505"; -} -.icon-decrease-indent-1:before { - content: "\e506"; -} -.icon-decrease-indent-2:before { - content: "\e507"; -} -.icon-horizontal-page:before { - content: "\e508"; -} -.icon-increase-indent-1:before { - content: "\e509"; -} -.icon-increase-indent-2:before { - content: "\e50a"; -} -.icon-justify:before { - content: "\e50b"; -} -.icon-leading-1:before { - content: "\e50c"; -} -.icon-leading-2:before { - content: "\e50d"; -} -.icon-left-indent:before { - content: "\e50e"; -} -.icon-right-indent:before { - content: "\e50f"; -} -.icon-small-caps:before { - content: "\e510"; -} -.icon-vertical-page:before { - content: "\e511"; -} -.icon-alt-mac:before { - content: "\e512"; -} -.icon-alt-windows:before { - content: "\e513"; -} -.icon-arrow-down:before { - content: "\e514"; -} -.icon-arrow-down-left:before { - content: "\e515"; -} -.icon-arrow-down-right:before { - content: "\e516"; -} -.icon-arrow-left:before { - content: "\e517"; -} -.icon-arrow-right:before { - content: "\e518"; -} -.icon-arrow-up:before { - content: "\e519"; -} -.icon-arrow-up-left:before { - content: "\e51a"; -} -.icon-arrow-up-right:before { - content: "\e51b"; -} -.icon-asterisk-1:before { - content: "\e51c"; -} -.icon-asterisk-2:before { - content: "\e51d"; -} -.icon-back-tab-1:before { - content: "\e51e"; -} -.icon-back-tab-2:before { - content: "\e51f"; -} -.icon-backward-delete:before { - content: "\e520"; -} -.icon-blank:before { - content: "\e521"; -} -.icon-eject:before { - content: "\e522"; -} -.icon-enter-1:before { - content: "\e523"; -} -.icon-enter-2:before { - content: "\e524"; -} -.icon-escape:before { - content: "\e525"; -} -.icon-page-down:before { - content: "\e526"; -} -.icon-page-up:before { - content: "\e527"; -} -.icon-return-1:before { - content: "\e528"; -} -.icon-shift-1:before { - content: "\e529"; -} -.icon-shift-2:before { - content: "\e52a"; -} -.icon-tab:before { - content: "\e52b"; -} -.icon-apple:before { - content: "\e52c"; -} -.icon-beer:before { - content: "\e52d"; -} -.icon-boil:before { - content: "\e52e"; -} -.icon-bottle-1:before { - content: "\e52f"; -} -.icon-bottle-2:before { - content: "\e530"; -} -.icon-bottle-3:before { - content: "\e531"; -} -.icon-bottle-4:before { - content: "\e532"; -} -.icon-bread:before { - content: "\e533"; -} -.icon-burger-1:before { - content: "\e534"; -} -.icon-burger-2:before { - content: "\e535"; -} -.icon-cake-1:before { - content: "\e536"; -} -.icon-cake-2:before { - content: "\e537"; -} -.icon-champagne:before { - content: "\e538"; -} -.icon-cheese:before { - content: "\e539"; -} -.icon-cocktail:before { - content: "\e53a"; -} -.icon-cocktail-1:before { - content: "\e53b"; -} -.icon-cocktail-2:before { - content: "\e53c"; -} -.icon-coffee-pot:before { - content: "\e53d"; -} -.icon-cup1:before { - content: "\e53e"; -} -.icon-cup-2:before { - content: "\e53f"; -} -.icon-deep-fry:before { - content: "\e540"; -} -.icon-energy-drink:before { - content: "\e541"; -} -.icon-espresso-machine:before { - content: "\e542"; -} -.icon-food-dome:before { - content: "\e543"; -} -.icon-fork-and-knife:before { - content: "\e544"; -} -.icon-fork-and-spoon:before { - content: "\e545"; -} -.icon-grape:before { - content: "\e546"; -} -.icon-grater:before { - content: "\e547"; -} -.icon-grill:before { - content: "\e548"; -} -.icon-hot-drinks-glass:before { - content: "\e549"; -} -.icon-hotdog:before { - content: "\e54a"; -} -.icon-ice-cream-1:before { - content: "\e54b"; -} -.icon-ice-cream-2:before { - content: "\e54c"; -} -.icon-ice-cream-3:before { - content: "\e54d"; -} -.icon-ice-drinks-galss:before { - content: "\e54e"; -} -.icon-juicer:before { - content: "\e54f"; -} -.icon-kitchen-timer:before { - content: "\e550"; -} -.icon-milk:before { - content: "\e551"; -} -.icon-orange:before { - content: "\e552"; -} -.icon-oven:before { - content: "\e553"; -} -.icon-pan-fry:before { - content: "\e554"; -} -.icon-pepper-salt:before { - content: "\e555"; -} -.icon-pizza:before { - content: "\e556"; -} -.icon-popcorn:before { - content: "\e557"; -} -.icon-serving:before { - content: "\e558"; -} -.icon-soda:before { - content: "\e559"; -} -.icon-soda-can-1:before { - content: "\e55a"; -} -.icon-soda-can-2:before { - content: "\e55b"; -} -.icon-steam:before { - content: "\e55c"; -} -.icon-tea-pot:before { - content: "\e55d"; -} -.icon-thermometer-high:before { - content: "\e55e"; -} -.icon-thermometer-low:before { - content: "\e55f"; -} -.icon-thermometer-medium:before { - content: "\e560"; -} -.icon-water:before { - content: "\e561"; -} -.icon-wine:before { - content: "\e562"; -} -.icon-ambulance:before { - content: "\e563"; -} -.icon-beaker-1:before { - content: "\e564"; -} -.icon-beaker-2:before { - content: "\e565"; -} -.icon-blood:before { - content: "\e566"; -} -.icon-drug:before { - content: "\e567"; -} -.icon-first-aid:before { - content: "\e568"; -} -.icon-hashish:before { - content: "\e569"; -} -.icon-heartpulse:before { - content: "\e56a"; -} -.icon-hospital-1:before { - content: "\e56b"; -} -.icon-hospital-2:before { - content: "\e56c"; -} -.icon-hospital-sign-1:before { - content: "\e56d"; -} -.icon-hospital-sign-2:before { - content: "\e56e"; -} -.icon-hospital-sign-3:before { - content: "\e56f"; -} -.icon-medicine:before { - content: "\e570"; -} -.icon-microscope:before { - content: "\e571"; -} -.icon-mortar-and-pestle:before { - content: "\e572"; -} -.icon-plaster:before { - content: "\e573"; -} -.icon-pulse-graph-1:before { - content: "\e574"; -} -.icon-pulse-graph-2:before { - content: "\e575"; -} -.icon-pulse-graph-3:before { - content: "\e576"; -} -.icon-red-cross:before { - content: "\e577"; -} -.icon-stethoscope:before { - content: "\e578"; -} -.icon-syringe:before { - content: "\e579"; -} -.icon-yin-yang:before { - content: "\e57a"; -} -.icon-balloon:before { - content: "\e57b"; -} -.icon-briefcase-lock:before { - content: "\e57c"; -} -.icon-card:before { - content: "\e57d"; -} -.icon-cards:before { - content: "\e57e"; -} -.icon-cards-2:before { - content: "\e57f"; -} -.icon-curtain:before { - content: "\e580"; -} -.icon-dice-1:before { - content: "\e581"; -} -.icon-dice-2:before { - content: "\e582"; -} -.icon-happy-smiley:before { - content: "\e583"; -} -.icon-pacman:before { - content: "\e584"; -} -.icon-pacman-ghost:before { - content: "\e585"; -} -.icon-sad-smiley:before { - content: "\e586"; -} -.icon-sign-1:before { - content: "\e587"; -} -.icon-smileys:before { - content: "\e588"; -} -.icon-suitcase-1:before { - content: "\e589"; -} -.icon-suitcase-2:before { - content: "\e58a"; -} -.icon-tetris:before { - content: "\e58b"; -} -.icon-ticket-1:before { - content: "\e58c"; -} -.icon-ticket-2:before { - content: "\e58d"; -} -.icon-ticket-3:before { - content: "\e58e"; -} -.icon-virus:before { - content: "\e58f"; -} -.icon-cloud-1:before { - content: "\e590"; -} -.icon-cloud-lightning:before { - content: "\e591"; -} -.icon-clouds:before { - content: "\e592"; -} -.icon-first-quarter-moon:before { - content: "\e593"; -} -.icon-full-moon:before { - content: "\e594"; -} -.icon-hail:before { - content: "\e595"; -} -.icon-heavy-rain:before { - content: "\e596"; -} -.icon-moon-cloud:before { - content: "\e597"; -} -.icon-rain:before { - content: "\e598"; -} -.icon-rain-lightning:before { - content: "\e599"; -} -.icon-snow:before { - content: "\e59a"; -} -.icon-sun:before { - content: "\e59b"; -} -.icon-sun-cloud:before { - content: "\e59c"; -} -.icon-thermometer:before { - content: "\e59d"; -} -.icon-third-quarter-moon:before { - content: "\e59e"; -} -.icon-umbrella:before { - content: "\e59f"; -} -.icon-waning-crescent-moon:before { - content: "\e5a0"; -} -.icon-waning-gibbous-moon:before { - content: "\e5a1"; -} -.icon-waxing-crescent-moon:before { - content: "\e5a2"; -} -.icon-waxing-gibbous-moon:before { - content: "\e5a3"; -} -.icon-bicycle:before { - content: "\e5a4"; -} -.icon-bus-1:before { - content: "\e5a5"; -} -.icon-bus-2:before { - content: "\e5a6"; -} -.icon-car-1:before { - content: "\e5a7"; -} -.icon-car-2:before { - content: "\e5a8"; -} -.icon-car-3:before { - content: "\e5a9"; -} -.icon-car-4:before { - content: "\e5aa"; -} -.icon-helicopter:before { - content: "\e5ab"; -} -.icon-mountain-bike:before { - content: "\e5ac"; -} -.icon-pickup:before { - content: "\e5ad"; -} -.icon-plane-1:before { - content: "\e5ae"; -} -.icon-plane-2:before { - content: "\e5af"; -} -.icon-plane-landing:before { - content: "\e5b0"; -} -.icon-plane-takeoff:before { - content: "\e5b1"; -} -.icon-road:before { - content: "\e5b2"; -} -.icon-road-bike:before { - content: "\e5b3"; -} -.icon-rocket:before { - content: "\e5b4"; -} -.icon-scooter:before { - content: "\e5b5"; -} -.icon-ship:before { - content: "\e5b6"; -} -.icon-train:before { - content: "\e5b7"; -} -.icon-tram:before { - content: "\e5b8"; -} -.icon-cactus:before { - content: "\e5b9"; -} -.icon-clover:before { - content: "\e5ba"; -} -.icon-flower:before { - content: "\e5bb"; -} -.icon-hand-eco:before { - content: "\e5bc"; -} -.icon-hand-globe:before { - content: "\e5bd"; -} -.icon-leaf:before { - content: "\e5be"; -} -.icon-light-eco:before { - content: "\e5bf"; -} -.icon-potted-plant-1:before { - content: "\e5c0"; -} -.icon-potted-plant-2:before { - content: "\e5c1"; -} -.icon-2-fingers-double-tap:before { - content: "\e5c2"; -} -.icon-2-fingers-down-swipe:before { - content: "\e5c3"; -} -.icon-2-fingers-horizontal-swipe:before { - content: "\e5c4"; -} -.icon-2-fingers-left-swipe:before { - content: "\e5c5"; -} -.icon-2-fingers-omnidirectional-swipe:before { - content: "\e5c6"; -} -.icon-2-fingers-right-swipe:before { - content: "\e5c7"; -} -.icon-2-fingers-tab-hold:before { - content: "\e5c8"; -} -.icon-2-fingers-tap:before { - content: "\e5c9"; -} -.icon-2-fingers-up-swipe:before { - content: "\e5ca"; -} -.icon-2-fingers-vertical-swipe:before { - content: "\e5cb"; -} -.icon-double-tap:before { - content: "\e5cc"; -} -.icon-drag-down:before { - content: "\e5cd"; -} -.icon-drag-horizontal:before { - content: "\e5ce"; -} -.icon-drag-left:before { - content: "\e5cf"; -} -.icon-drag-right:before { - content: "\e5d0"; -} -.icon-drag-up:before { - content: "\e5d1"; -} -.icon-drag-vertical:before { - content: "\e5d2"; -} -.icon-filck-down:before { - content: "\e5d3"; -} -.icon-flick-up:before { - content: "\e5d4"; -} -.icon-horizontal-flick:before { - content: "\e5d5"; -} -.icon-left-flick:before { - content: "\e5d6"; -} -.icon-omnidirectional-drag:before { - content: "\e5d7"; -} -.icon-omnidirectional-flick:before { - content: "\e5d8"; -} -.icon-omnidirectional-swipe:before { - content: "\e5d9"; -} -.icon-pinch:before { - content: "\e5da"; -} -.icon-right-flick:before { - content: "\e5db"; -} -.icon-rotate-clockwise:before { - content: "\e5dc"; -} -.icon-rotate-counterclockwise:before { - content: "\e5dd"; -} -.icon-spread:before { - content: "\e5de"; -} -.icon-swipe-down:before { - content: "\e5df"; -} -.icon-swipe-horizontal:before { - content: "\e5e0"; -} -.icon-swipe-left:before { - content: "\e5e1"; -} -.icon-swipe-right:before { - content: "\e5e2"; -} -.icon-swipe-up:before { - content: "\e5e3"; -} -.icon-swipe-vertical:before { - content: "\e5e4"; -} -.icon-tap:before { - content: "\e5e5"; -} -.icon-tap-hold:before { - content: "\e5e6"; -} -.icon-vertical-flick:before { - content: "\e5e7"; -} -.icon-arrow-1-1:before { - content: "\e5e8"; -} -.icon-arrow-2-1:before { - content: "\e5e9"; -} -.icon-arrow-3:before { - content: "\e5ea"; -} -.icon-arrow-4:before { - content: "\e5eb"; -} -.icon-arrow-5:before { - content: "\e5ec"; -} -.icon-arrow-6:before { - content: "\e5ed"; -} -.icon-arrow-7:before { - content: "\e5ee"; -} -.icon-arrow-8:before { - content: "\e5ef"; -} -.icon-arrow-9:before { - content: "\e5f0"; -} -.icon-arrow-10:before { - content: "\e5f1"; -} -.icon-arrow-11:before { - content: "\e5f2"; -} -.icon-arrow-12:before { - content: "\e5f3"; -} -.icon-arrow-13:before { - content: "\e5f4"; -} -.icon-arrow-14:before { - content: "\e5f5"; -} -.icon-arrow-15:before { - content: "\e5f6"; -} -.icon-arrow-16:before { - content: "\e5f7"; -} -.icon-arrow-17:before { - content: "\e5f8"; -} -.icon-arrow-18:before { - content: "\e5f9"; -} -.icon-arrow-19:before { - content: "\e5fa"; -} -.icon-arrow-20:before { - content: "\e5fb"; -} -.icon-arrow-21:before { - content: "\e5fc"; -} -.icon-arrow-22:before { - content: "\e5fd"; -} -.icon-arrow-23:before { - content: "\e5fe"; -} -.icon-arrow-24:before { - content: "\e5ff"; -} -.icon-arrow-25:before { - content: "\e600"; -} -.icon-arrow-26:before { - content: "\e601"; -} -.icon-arrow-27:before { - content: "\e602"; -} -.icon-arrow-28:before { - content: "\e603"; -} -.icon-arrow-29:before { - content: "\e604"; -} -.icon-arrow-30:before { - content: "\e605"; -} -.icon-arrow-31:before { - content: "\e606"; -} -.icon-arrow-32:before { - content: "\e607"; -} -.icon-arrow-33:before { - content: "\e608"; -} -.icon-arrow-34:before { - content: "\e609"; -} -.icon-arrow-35:before { - content: "\e60a"; -} -.icon-arrow-36:before { - content: "\e60b"; -} -.icon-arrow-37:before { - content: "\e60c"; -} -.icon-arrow-38:before { - content: "\e60d"; -} -.icon-arrow-39:before { - content: "\e60e"; -} -.icon-arrow-40:before { - content: "\e60f"; -} -.icon-arrow-41:before { - content: "\e610"; -} -.icon-arrow-42:before { - content: "\e611"; -} -.icon-arrow-43:before { - content: "\e612"; -} -.icon-arrow-44:before { - content: "\e613"; -} -.icon-arrow-45:before { - content: "\e614"; -} -.icon-arrow-46:before { - content: "\e615"; -} -.icon-arrow-47:before { - content: "\e616"; -} -.icon-arrow-48:before { - content: "\e617"; -} -.icon-arrow-49:before { - content: "\e618"; -} -.icon-arrow-50:before { - content: "\e619"; -} -.icon-arrow-51:before { - content: "\e61a"; -} -.icon-arrow-52:before { - content: "\e61b"; -} -.icon-arrow-53:before { - content: "\e61c"; -} -.icon-arrow-54:before { - content: "\e61d"; -} -.icon-arrow-55:before { - content: "\e61e"; -} -.icon-arrow-56:before { - content: "\e61f"; -} -.icon-arrow-57:before { - content: "\e620"; -} -.icon-arrow-58:before { - content: "\e621"; -} -.icon-arrow-59:before { - content: "\e622"; -} -.icon-arrow-60:before { - content: "\e623"; -} -.icon-arrow-61:before { - content: "\e624"; -} -.icon-arrow-62:before { - content: "\e625"; -} -.icon-arrow-63:before { - content: "\e626"; -} -.icon-arrow-64:before { - content: "\e627"; -} -.icon-arrow-65:before { - content: "\e628"; -} -.icon-arrow-66:before { - content: "\e629"; -} -.icon-arrow-67:before { - content: "\e62a"; -} -.icon-arrow-68:before { - content: "\e62b"; -} -.icon-arrow-69:before { - content: "\e62c"; -} -.icon-arrow-70:before { - content: "\e62d"; -} -.icon-arrow-71:before { - content: "\e62e"; -} -.icon-arrow-72:before { - content: "\e62f"; -} -.icon-arrow-circle-1:before { - content: "\e630"; -} -.icon-arrow-circle-2:before { - content: "\e631"; -} -.icon-arrow-circle-3:before { - content: "\e632"; -} -.icon-arrow-circle-4:before { - content: "\e633"; -} -.icon-arrow-circle-5:before { - content: "\e634"; -} -.icon-arrow-circle-6:before { - content: "\e635"; -} -.icon-arrow-circle-7:before { - content: "\e636"; -} -.icon-arrow-circle-8:before { - content: "\e637"; -} -.icon-arrow-circle-9:before { - content: "\e638"; -} -.icon-arrow-circle-10:before { - content: "\e639"; -} -.icon-arrow-circle-11:before { - content: "\e63a"; -} -.icon-arrow-circle-12:before { - content: "\e63b"; -} -.icon-arrow-circle-13:before { - content: "\e63c"; -} -.icon-arrow-circle-14:before { - content: "\e63d"; -} -.icon-arrow-circle-15:before { - content: "\e63e"; -} -.icon-arrow-circle-16:before { - content: "\e63f"; -} -.icon-arrow-circle-17:before { - content: "\e640"; -} -.icon-arrow-circle-18:before { - content: "\e641"; -} -.icon-arrow-circle-19:before { - content: "\e642"; -} -.icon-arrow-circle-20:before { - content: "\e643"; -} -.icon-arrow-circle-21:before { - content: "\e644"; -} -.icon-arrow-circle-22:before { - content: "\e645"; -} -.icon-arrow-circle-23:before { - content: "\e646"; -} -.icon-arrow-circle-24:before { - content: "\e647"; -} -.icon-arrow-circle-25:before { - content: "\e648"; -} -.icon-arrow-circle-26:before { - content: "\e649"; -} -.icon-arrow-circle-27:before { - content: "\e64a"; -} -.icon-arrow-circle-28:before { - content: "\e64b"; -} -.icon-arrow-circle-29:before { - content: "\e64c"; -} -.icon-arrow-circle-30:before { - content: "\e64d"; -} -.icon-arrow-delete-1:before { - content: "\e64e"; -} -.icon-arrow-delete-2:before { - content: "\e64f"; -} -.icon-arrow-dot-1:before { - content: "\e650"; -} -.icon-arrow-dot-2:before { - content: "\e651"; -} -.icon-arrow-dot-3:before { - content: "\e652"; -} -.icon-arrow-dot-4:before { - content: "\e653"; -} -.icon-arrow-dot-5:before { - content: "\e654"; -} -.icon-arrow-dot-6:before { - content: "\e655"; -} -.icon-arrow-rectangle-1:before { - content: "\e656"; -} -.icon-arrow-rectangle-2:before { - content: "\e657"; -} -.icon-arrow-rectangle-3:before { - content: "\e658"; -} -.icon-arrow-rectangle-4:before { - content: "\e659"; -} -.icon-arrow-rectangle-5:before { - content: "\e65a"; -} -.icon-arrow-rectangle-6:before { - content: "\e65b"; -} -.icon-arrow-rectangle-7:before { - content: "\e65c"; -} -.icon-arrow-rectangle-8:before { - content: "\e65d"; -} -.icon-arrow-rectangle-9:before { - content: "\e65e"; -} -.icon-arrow-rectangle-10:before { - content: "\e65f"; -} -.icon-arrow-rectangle-11:before { - content: "\e660"; -} -.icon-arrow-rectangle-12:before { - content: "\e661"; -} -.icon-arrow-rectangle-13:before { - content: "\e662"; -} -.icon-arrow-rectangle-14:before { - content: "\e663"; -} -.icon-arrow-rectangle-15:before { - content: "\e664"; -} -.icon-arrow-rectangle-16:before { - content: "\e665"; -} -.icon-arrow-rectangle-17:before { - content: "\e666"; -} -.icon-arrow-rectangle-18:before { - content: "\e667"; -} -.icon-arrow-rectangle-19:before { - content: "\e668"; -} -.icon-arrow-rectangle-20:before { - content: "\e669"; -} -/* -The MIT License (MIT) - -Copyright (c) 2013 Imulus, LLC, Ben Atkin, and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -.setup { - margin-top: 25%; - text-align: center; -} -.setup p { - margin-top: 20px; -} -.setup p.error { - color: #d9534f; -} -@-webkit-keyframes rotating { - from { - -webkit-transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - } -} -.radial-progress { - margin: 0 auto; - width: 96px; - height: 96px; - background-color: transparent; - border-radius: 100%; -} -.radial-progress.radial-spinner { - -webkit-animation: rotating 1.2s linear infinite; -} -.radial-progress .circle .mask, -.radial-progress .circle .fill, -.radial-progress .circle .shadow { - width: 96px; - height: 96px; - position: absolute; - border-radius: 100%; -} -.radial-progress .circle .mask, -.radial-progress .circle .fill { - -webkit-backface-visibility: hidden; - transition: -webkit-transform 1s; - transition: -ms-transform 1s; - transition: transform 1s; - border-radius: 100%; -} -.radial-progress .circle .mask { - clip: rect(0px, 96px, 96px, 48px); -} -.radial-progress .circle .mask .fill { - clip: rect(0px, 48px, 96px, 0px); - background-color: #24b8eb; -} -.radial-progress .inset { - width: 92px; - height: 92px; - position: absolute; - margin-left: 2px; - margin-top: 2px; - background-color: white; - border-radius: 100%; -} -.radial-progress .inset .percentage { - width: 57px; - position: absolute; - top: 39px; - left: 17.5px; - line-height: 1; - text-align: center; - font-weight: 500; - font-size: 14px; -} -.radial-progress.radial-negative .circle .mask .fill { - background-color: #f47a45; -} -.radial-progress.radial-positive .circle .mask .fill { - background-color: #65e100; -} -.radial-progress[data-progress="0"] .circle .mask.full, -.radial-progress[data-progress="0"] .circle .fill { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); -} -.radial-progress[data-progress="0"] .circle .fill.fix { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); -} -.radial-progress[data-progress="0"] .inset .percentage:before { - content: "0%"; -} -.radial-progress[data-progress="1"] .circle .mask.full, -.radial-progress[data-progress="1"] .circle .fill { - -webkit-transform: rotate(1.8deg); - -ms-transform: rotate(1.8deg); - transform: rotate(1.8deg); -} -.radial-progress[data-progress="1"] .circle .fill.fix { - -webkit-transform: rotate(3.6deg); - -ms-transform: rotate(3.6deg); - transform: rotate(3.6deg); -} -.radial-progress[data-progress="1"] .inset .percentage:before { - content: "1%"; -} -.radial-progress[data-progress="2"] .circle .mask.full, -.radial-progress[data-progress="2"] .circle .fill { - -webkit-transform: rotate(3.6deg); - -ms-transform: rotate(3.6deg); - transform: rotate(3.6deg); -} -.radial-progress[data-progress="2"] .circle .fill.fix { - -webkit-transform: rotate(7.2deg); - -ms-transform: rotate(7.2deg); - transform: rotate(7.2deg); -} -.radial-progress[data-progress="2"] .inset .percentage:before { - content: "2%"; -} -.radial-progress[data-progress="3"] .circle .mask.full, -.radial-progress[data-progress="3"] .circle .fill { - -webkit-transform: rotate(5.4deg); - -ms-transform: rotate(5.4deg); - transform: rotate(5.4deg); -} -.radial-progress[data-progress="3"] .circle .fill.fix { - -webkit-transform: rotate(10.8deg); - -ms-transform: rotate(10.8deg); - transform: rotate(10.8deg); -} -.radial-progress[data-progress="3"] .inset .percentage:before { - content: "3%"; -} -.radial-progress[data-progress="4"] .circle .mask.full, -.radial-progress[data-progress="4"] .circle .fill { - -webkit-transform: rotate(7.2deg); - -ms-transform: rotate(7.2deg); - transform: rotate(7.2deg); -} -.radial-progress[data-progress="4"] .circle .fill.fix { - -webkit-transform: rotate(14.4deg); - -ms-transform: rotate(14.4deg); - transform: rotate(14.4deg); -} -.radial-progress[data-progress="4"] .inset .percentage:before { - content: "4%"; -} -.radial-progress[data-progress="5"] .circle .mask.full, -.radial-progress[data-progress="5"] .circle .fill { - -webkit-transform: rotate(9deg); - -ms-transform: rotate(9deg); - transform: rotate(9deg); -} -.radial-progress[data-progress="5"] .circle .fill.fix { - -webkit-transform: rotate(18deg); - -ms-transform: rotate(18deg); - transform: rotate(18deg); -} -.radial-progress[data-progress="5"] .inset .percentage:before { - content: "5%"; -} -.radial-progress[data-progress="6"] .circle .mask.full, -.radial-progress[data-progress="6"] .circle .fill { - -webkit-transform: rotate(10.8deg); - -ms-transform: rotate(10.8deg); - transform: rotate(10.8deg); -} -.radial-progress[data-progress="6"] .circle .fill.fix { - -webkit-transform: rotate(21.6deg); - -ms-transform: rotate(21.6deg); - transform: rotate(21.6deg); -} -.radial-progress[data-progress="6"] .inset .percentage:before { - content: "6%"; -} -.radial-progress[data-progress="7"] .circle .mask.full, -.radial-progress[data-progress="7"] .circle .fill { - -webkit-transform: rotate(12.6deg); - -ms-transform: rotate(12.6deg); - transform: rotate(12.6deg); -} -.radial-progress[data-progress="7"] .circle .fill.fix { - -webkit-transform: rotate(25.2deg); - -ms-transform: rotate(25.2deg); - transform: rotate(25.2deg); -} -.radial-progress[data-progress="7"] .inset .percentage:before { - content: "7%"; -} -.radial-progress[data-progress="8"] .circle .mask.full, -.radial-progress[data-progress="8"] .circle .fill { - -webkit-transform: rotate(14.4deg); - -ms-transform: rotate(14.4deg); - transform: rotate(14.4deg); -} -.radial-progress[data-progress="8"] .circle .fill.fix { - -webkit-transform: rotate(28.8deg); - -ms-transform: rotate(28.8deg); - transform: rotate(28.8deg); -} -.radial-progress[data-progress="8"] .inset .percentage:before { - content: "8%"; -} -.radial-progress[data-progress="9"] .circle .mask.full, -.radial-progress[data-progress="9"] .circle .fill { - -webkit-transform: rotate(16.2deg); - -ms-transform: rotate(16.2deg); - transform: rotate(16.2deg); -} -.radial-progress[data-progress="9"] .circle .fill.fix { - -webkit-transform: rotate(32.4deg); - -ms-transform: rotate(32.4deg); - transform: rotate(32.4deg); -} -.radial-progress[data-progress="9"] .inset .percentage:before { - content: "9%"; -} -.radial-progress[data-progress="10"] .circle .mask.full, -.radial-progress[data-progress="10"] .circle .fill { - -webkit-transform: rotate(18deg); - -ms-transform: rotate(18deg); - transform: rotate(18deg); -} -.radial-progress[data-progress="10"] .circle .fill.fix { - -webkit-transform: rotate(36deg); - -ms-transform: rotate(36deg); - transform: rotate(36deg); -} -.radial-progress[data-progress="10"] .inset .percentage:before { - content: "10%"; -} -.radial-progress[data-progress="11"] .circle .mask.full, -.radial-progress[data-progress="11"] .circle .fill { - -webkit-transform: rotate(19.8deg); - -ms-transform: rotate(19.8deg); - transform: rotate(19.8deg); -} -.radial-progress[data-progress="11"] .circle .fill.fix { - -webkit-transform: rotate(39.6deg); - -ms-transform: rotate(39.6deg); - transform: rotate(39.6deg); -} -.radial-progress[data-progress="11"] .inset .percentage:before { - content: "11%"; -} -.radial-progress[data-progress="12"] .circle .mask.full, -.radial-progress[data-progress="12"] .circle .fill { - -webkit-transform: rotate(21.6deg); - -ms-transform: rotate(21.6deg); - transform: rotate(21.6deg); -} -.radial-progress[data-progress="12"] .circle .fill.fix { - -webkit-transform: rotate(43.2deg); - -ms-transform: rotate(43.2deg); - transform: rotate(43.2deg); -} -.radial-progress[data-progress="12"] .inset .percentage:before { - content: "12%"; -} -.radial-progress[data-progress="13"] .circle .mask.full, -.radial-progress[data-progress="13"] .circle .fill { - -webkit-transform: rotate(23.4deg); - -ms-transform: rotate(23.4deg); - transform: rotate(23.4deg); -} -.radial-progress[data-progress="13"] .circle .fill.fix { - -webkit-transform: rotate(46.8deg); - -ms-transform: rotate(46.8deg); - transform: rotate(46.8deg); -} -.radial-progress[data-progress="13"] .inset .percentage:before { - content: "13%"; -} -.radial-progress[data-progress="14"] .circle .mask.full, -.radial-progress[data-progress="14"] .circle .fill { - -webkit-transform: rotate(25.2deg); - -ms-transform: rotate(25.2deg); - transform: rotate(25.2deg); -} -.radial-progress[data-progress="14"] .circle .fill.fix { - -webkit-transform: rotate(50.4deg); - -ms-transform: rotate(50.4deg); - transform: rotate(50.4deg); -} -.radial-progress[data-progress="14"] .inset .percentage:before { - content: "14%"; -} -.radial-progress[data-progress="15"] .circle .mask.full, -.radial-progress[data-progress="15"] .circle .fill { - -webkit-transform: rotate(27deg); - -ms-transform: rotate(27deg); - transform: rotate(27deg); -} -.radial-progress[data-progress="15"] .circle .fill.fix { - -webkit-transform: rotate(54deg); - -ms-transform: rotate(54deg); - transform: rotate(54deg); -} -.radial-progress[data-progress="15"] .inset .percentage:before { - content: "15%"; -} -.radial-progress[data-progress="16"] .circle .mask.full, -.radial-progress[data-progress="16"] .circle .fill { - -webkit-transform: rotate(28.8deg); - -ms-transform: rotate(28.8deg); - transform: rotate(28.8deg); -} -.radial-progress[data-progress="16"] .circle .fill.fix { - -webkit-transform: rotate(57.6deg); - -ms-transform: rotate(57.6deg); - transform: rotate(57.6deg); -} -.radial-progress[data-progress="16"] .inset .percentage:before { - content: "16%"; -} -.radial-progress[data-progress="17"] .circle .mask.full, -.radial-progress[data-progress="17"] .circle .fill { - -webkit-transform: rotate(30.6deg); - -ms-transform: rotate(30.6deg); - transform: rotate(30.6deg); -} -.radial-progress[data-progress="17"] .circle .fill.fix { - -webkit-transform: rotate(61.2deg); - -ms-transform: rotate(61.2deg); - transform: rotate(61.2deg); -} -.radial-progress[data-progress="17"] .inset .percentage:before { - content: "17%"; -} -.radial-progress[data-progress="18"] .circle .mask.full, -.radial-progress[data-progress="18"] .circle .fill { - -webkit-transform: rotate(32.4deg); - -ms-transform: rotate(32.4deg); - transform: rotate(32.4deg); -} -.radial-progress[data-progress="18"] .circle .fill.fix { - -webkit-transform: rotate(64.8deg); - -ms-transform: rotate(64.8deg); - transform: rotate(64.8deg); -} -.radial-progress[data-progress="18"] .inset .percentage:before { - content: "18%"; -} -.radial-progress[data-progress="19"] .circle .mask.full, -.radial-progress[data-progress="19"] .circle .fill { - -webkit-transform: rotate(34.2deg); - -ms-transform: rotate(34.2deg); - transform: rotate(34.2deg); -} -.radial-progress[data-progress="19"] .circle .fill.fix { - -webkit-transform: rotate(68.4deg); - -ms-transform: rotate(68.4deg); - transform: rotate(68.4deg); -} -.radial-progress[data-progress="19"] .inset .percentage:before { - content: "19%"; -} -.radial-progress[data-progress="20"] .circle .mask.full, -.radial-progress[data-progress="20"] .circle .fill { - -webkit-transform: rotate(36deg); - -ms-transform: rotate(36deg); - transform: rotate(36deg); -} -.radial-progress[data-progress="20"] .circle .fill.fix { - -webkit-transform: rotate(72deg); - -ms-transform: rotate(72deg); - transform: rotate(72deg); -} -.radial-progress[data-progress="20"] .inset .percentage:before { - content: "20%"; -} -.radial-progress[data-progress="21"] .circle .mask.full, -.radial-progress[data-progress="21"] .circle .fill { - -webkit-transform: rotate(37.8deg); - -ms-transform: rotate(37.8deg); - transform: rotate(37.8deg); -} -.radial-progress[data-progress="21"] .circle .fill.fix { - -webkit-transform: rotate(75.6deg); - -ms-transform: rotate(75.6deg); - transform: rotate(75.6deg); -} -.radial-progress[data-progress="21"] .inset .percentage:before { - content: "21%"; -} -.radial-progress[data-progress="22"] .circle .mask.full, -.radial-progress[data-progress="22"] .circle .fill { - -webkit-transform: rotate(39.6deg); - -ms-transform: rotate(39.6deg); - transform: rotate(39.6deg); -} -.radial-progress[data-progress="22"] .circle .fill.fix { - -webkit-transform: rotate(79.2deg); - -ms-transform: rotate(79.2deg); - transform: rotate(79.2deg); -} -.radial-progress[data-progress="22"] .inset .percentage:before { - content: "22%"; -} -.radial-progress[data-progress="23"] .circle .mask.full, -.radial-progress[data-progress="23"] .circle .fill { - -webkit-transform: rotate(41.4deg); - -ms-transform: rotate(41.4deg); - transform: rotate(41.4deg); -} -.radial-progress[data-progress="23"] .circle .fill.fix { - -webkit-transform: rotate(82.8deg); - -ms-transform: rotate(82.8deg); - transform: rotate(82.8deg); -} -.radial-progress[data-progress="23"] .inset .percentage:before { - content: "23%"; -} -.radial-progress[data-progress="24"] .circle .mask.full, -.radial-progress[data-progress="24"] .circle .fill { - -webkit-transform: rotate(43.2deg); - -ms-transform: rotate(43.2deg); - transform: rotate(43.2deg); -} -.radial-progress[data-progress="24"] .circle .fill.fix { - -webkit-transform: rotate(86.4deg); - -ms-transform: rotate(86.4deg); - transform: rotate(86.4deg); -} -.radial-progress[data-progress="24"] .inset .percentage:before { - content: "24%"; -} -.radial-progress[data-progress="25"] .circle .mask.full, -.radial-progress[data-progress="25"] .circle .fill { - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); -} -.radial-progress[data-progress="25"] .circle .fill.fix { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.radial-progress[data-progress="25"] .inset .percentage:before { - content: "25%"; -} -.radial-progress[data-progress="26"] .circle .mask.full, -.radial-progress[data-progress="26"] .circle .fill { - -webkit-transform: rotate(46.8deg); - -ms-transform: rotate(46.8deg); - transform: rotate(46.8deg); -} -.radial-progress[data-progress="26"] .circle .fill.fix { - -webkit-transform: rotate(93.6deg); - -ms-transform: rotate(93.6deg); - transform: rotate(93.6deg); -} -.radial-progress[data-progress="26"] .inset .percentage:before { - content: "26%"; -} -.radial-progress[data-progress="27"] .circle .mask.full, -.radial-progress[data-progress="27"] .circle .fill { - -webkit-transform: rotate(48.6deg); - -ms-transform: rotate(48.6deg); - transform: rotate(48.6deg); -} -.radial-progress[data-progress="27"] .circle .fill.fix { - -webkit-transform: rotate(97.2deg); - -ms-transform: rotate(97.2deg); - transform: rotate(97.2deg); -} -.radial-progress[data-progress="27"] .inset .percentage:before { - content: "27%"; -} -.radial-progress[data-progress="28"] .circle .mask.full, -.radial-progress[data-progress="28"] .circle .fill { - -webkit-transform: rotate(50.4deg); - -ms-transform: rotate(50.4deg); - transform: rotate(50.4deg); -} -.radial-progress[data-progress="28"] .circle .fill.fix { - -webkit-transform: rotate(100.8deg); - -ms-transform: rotate(100.8deg); - transform: rotate(100.8deg); -} -.radial-progress[data-progress="28"] .inset .percentage:before { - content: "28%"; -} -.radial-progress[data-progress="29"] .circle .mask.full, -.radial-progress[data-progress="29"] .circle .fill { - -webkit-transform: rotate(52.2deg); - -ms-transform: rotate(52.2deg); - transform: rotate(52.2deg); -} -.radial-progress[data-progress="29"] .circle .fill.fix { - -webkit-transform: rotate(104.4deg); - -ms-transform: rotate(104.4deg); - transform: rotate(104.4deg); -} -.radial-progress[data-progress="29"] .inset .percentage:before { - content: "29%"; -} -.radial-progress[data-progress="30"] .circle .mask.full, -.radial-progress[data-progress="30"] .circle .fill { - -webkit-transform: rotate(54deg); - -ms-transform: rotate(54deg); - transform: rotate(54deg); -} -.radial-progress[data-progress="30"] .circle .fill.fix { - -webkit-transform: rotate(108deg); - -ms-transform: rotate(108deg); - transform: rotate(108deg); -} -.radial-progress[data-progress="30"] .inset .percentage:before { - content: "30%"; -} -.radial-progress[data-progress="31"] .circle .mask.full, -.radial-progress[data-progress="31"] .circle .fill { - -webkit-transform: rotate(55.8deg); - -ms-transform: rotate(55.8deg); - transform: rotate(55.8deg); -} -.radial-progress[data-progress="31"] .circle .fill.fix { - -webkit-transform: rotate(111.6deg); - -ms-transform: rotate(111.6deg); - transform: rotate(111.6deg); -} -.radial-progress[data-progress="31"] .inset .percentage:before { - content: "31%"; -} -.radial-progress[data-progress="32"] .circle .mask.full, -.radial-progress[data-progress="32"] .circle .fill { - -webkit-transform: rotate(57.6deg); - -ms-transform: rotate(57.6deg); - transform: rotate(57.6deg); -} -.radial-progress[data-progress="32"] .circle .fill.fix { - -webkit-transform: rotate(115.2deg); - -ms-transform: rotate(115.2deg); - transform: rotate(115.2deg); -} -.radial-progress[data-progress="32"] .inset .percentage:before { - content: "32%"; -} -.radial-progress[data-progress="33"] .circle .mask.full, -.radial-progress[data-progress="33"] .circle .fill { - -webkit-transform: rotate(59.4deg); - -ms-transform: rotate(59.4deg); - transform: rotate(59.4deg); -} -.radial-progress[data-progress="33"] .circle .fill.fix { - -webkit-transform: rotate(118.8deg); - -ms-transform: rotate(118.8deg); - transform: rotate(118.8deg); -} -.radial-progress[data-progress="33"] .inset .percentage:before { - content: "33%"; -} -.radial-progress[data-progress="34"] .circle .mask.full, -.radial-progress[data-progress="34"] .circle .fill { - -webkit-transform: rotate(61.2deg); - -ms-transform: rotate(61.2deg); - transform: rotate(61.2deg); -} -.radial-progress[data-progress="34"] .circle .fill.fix { - -webkit-transform: rotate(122.4deg); - -ms-transform: rotate(122.4deg); - transform: rotate(122.4deg); -} -.radial-progress[data-progress="34"] .inset .percentage:before { - content: "34%"; -} -.radial-progress[data-progress="35"] .circle .mask.full, -.radial-progress[data-progress="35"] .circle .fill { - -webkit-transform: rotate(63deg); - -ms-transform: rotate(63deg); - transform: rotate(63deg); -} -.radial-progress[data-progress="35"] .circle .fill.fix { - -webkit-transform: rotate(126deg); - -ms-transform: rotate(126deg); - transform: rotate(126deg); -} -.radial-progress[data-progress="35"] .inset .percentage:before { - content: "35%"; -} -.radial-progress[data-progress="36"] .circle .mask.full, -.radial-progress[data-progress="36"] .circle .fill { - -webkit-transform: rotate(64.8deg); - -ms-transform: rotate(64.8deg); - transform: rotate(64.8deg); -} -.radial-progress[data-progress="36"] .circle .fill.fix { - -webkit-transform: rotate(129.6deg); - -ms-transform: rotate(129.6deg); - transform: rotate(129.6deg); -} -.radial-progress[data-progress="36"] .inset .percentage:before { - content: "36%"; -} -.radial-progress[data-progress="37"] .circle .mask.full, -.radial-progress[data-progress="37"] .circle .fill { - -webkit-transform: rotate(66.6deg); - -ms-transform: rotate(66.6deg); - transform: rotate(66.6deg); -} -.radial-progress[data-progress="37"] .circle .fill.fix { - -webkit-transform: rotate(133.2deg); - -ms-transform: rotate(133.2deg); - transform: rotate(133.2deg); -} -.radial-progress[data-progress="37"] .inset .percentage:before { - content: "37%"; -} -.radial-progress[data-progress="38"] .circle .mask.full, -.radial-progress[data-progress="38"] .circle .fill { - -webkit-transform: rotate(68.4deg); - -ms-transform: rotate(68.4deg); - transform: rotate(68.4deg); -} -.radial-progress[data-progress="38"] .circle .fill.fix { - -webkit-transform: rotate(136.8deg); - -ms-transform: rotate(136.8deg); - transform: rotate(136.8deg); -} -.radial-progress[data-progress="38"] .inset .percentage:before { - content: "38%"; -} -.radial-progress[data-progress="39"] .circle .mask.full, -.radial-progress[data-progress="39"] .circle .fill { - -webkit-transform: rotate(70.2deg); - -ms-transform: rotate(70.2deg); - transform: rotate(70.2deg); -} -.radial-progress[data-progress="39"] .circle .fill.fix { - -webkit-transform: rotate(140.4deg); - -ms-transform: rotate(140.4deg); - transform: rotate(140.4deg); -} -.radial-progress[data-progress="39"] .inset .percentage:before { - content: "39%"; -} -.radial-progress[data-progress="40"] .circle .mask.full, -.radial-progress[data-progress="40"] .circle .fill { - -webkit-transform: rotate(72deg); - -ms-transform: rotate(72deg); - transform: rotate(72deg); -} -.radial-progress[data-progress="40"] .circle .fill.fix { - -webkit-transform: rotate(144deg); - -ms-transform: rotate(144deg); - transform: rotate(144deg); -} -.radial-progress[data-progress="40"] .inset .percentage:before { - content: "40%"; -} -.radial-progress[data-progress="41"] .circle .mask.full, -.radial-progress[data-progress="41"] .circle .fill { - -webkit-transform: rotate(73.8deg); - -ms-transform: rotate(73.8deg); - transform: rotate(73.8deg); -} -.radial-progress[data-progress="41"] .circle .fill.fix { - -webkit-transform: rotate(147.6deg); - -ms-transform: rotate(147.6deg); - transform: rotate(147.6deg); -} -.radial-progress[data-progress="41"] .inset .percentage:before { - content: "41%"; -} -.radial-progress[data-progress="42"] .circle .mask.full, -.radial-progress[data-progress="42"] .circle .fill { - -webkit-transform: rotate(75.6deg); - -ms-transform: rotate(75.6deg); - transform: rotate(75.6deg); -} -.radial-progress[data-progress="42"] .circle .fill.fix { - -webkit-transform: rotate(151.2deg); - -ms-transform: rotate(151.2deg); - transform: rotate(151.2deg); -} -.radial-progress[data-progress="42"] .inset .percentage:before { - content: "42%"; -} -.radial-progress[data-progress="43"] .circle .mask.full, -.radial-progress[data-progress="43"] .circle .fill { - -webkit-transform: rotate(77.4deg); - -ms-transform: rotate(77.4deg); - transform: rotate(77.4deg); -} -.radial-progress[data-progress="43"] .circle .fill.fix { - -webkit-transform: rotate(154.8deg); - -ms-transform: rotate(154.8deg); - transform: rotate(154.8deg); -} -.radial-progress[data-progress="43"] .inset .percentage:before { - content: "43%"; -} -.radial-progress[data-progress="44"] .circle .mask.full, -.radial-progress[data-progress="44"] .circle .fill { - -webkit-transform: rotate(79.2deg); - -ms-transform: rotate(79.2deg); - transform: rotate(79.2deg); -} -.radial-progress[data-progress="44"] .circle .fill.fix { - -webkit-transform: rotate(158.4deg); - -ms-transform: rotate(158.4deg); - transform: rotate(158.4deg); -} -.radial-progress[data-progress="44"] .inset .percentage:before { - content: "44%"; -} -.radial-progress[data-progress="45"] .circle .mask.full, -.radial-progress[data-progress="45"] .circle .fill { - -webkit-transform: rotate(81deg); - -ms-transform: rotate(81deg); - transform: rotate(81deg); -} -.radial-progress[data-progress="45"] .circle .fill.fix { - -webkit-transform: rotate(162deg); - -ms-transform: rotate(162deg); - transform: rotate(162deg); -} -.radial-progress[data-progress="45"] .inset .percentage:before { - content: "45%"; -} -.radial-progress[data-progress="46"] .circle .mask.full, -.radial-progress[data-progress="46"] .circle .fill { - -webkit-transform: rotate(82.8deg); - -ms-transform: rotate(82.8deg); - transform: rotate(82.8deg); -} -.radial-progress[data-progress="46"] .circle .fill.fix { - -webkit-transform: rotate(165.6deg); - -ms-transform: rotate(165.6deg); - transform: rotate(165.6deg); -} -.radial-progress[data-progress="46"] .inset .percentage:before { - content: "46%"; -} -.radial-progress[data-progress="47"] .circle .mask.full, -.radial-progress[data-progress="47"] .circle .fill { - -webkit-transform: rotate(84.6deg); - -ms-transform: rotate(84.6deg); - transform: rotate(84.6deg); -} -.radial-progress[data-progress="47"] .circle .fill.fix { - -webkit-transform: rotate(169.2deg); - -ms-transform: rotate(169.2deg); - transform: rotate(169.2deg); -} -.radial-progress[data-progress="47"] .inset .percentage:before { - content: "47%"; -} -.radial-progress[data-progress="48"] .circle .mask.full, -.radial-progress[data-progress="48"] .circle .fill { - -webkit-transform: rotate(86.4deg); - -ms-transform: rotate(86.4deg); - transform: rotate(86.4deg); -} -.radial-progress[data-progress="48"] .circle .fill.fix { - -webkit-transform: rotate(172.8deg); - -ms-transform: rotate(172.8deg); - transform: rotate(172.8deg); -} -.radial-progress[data-progress="48"] .inset .percentage:before { - content: "48%"; -} -.radial-progress[data-progress="49"] .circle .mask.full, -.radial-progress[data-progress="49"] .circle .fill { - -webkit-transform: rotate(88.2deg); - -ms-transform: rotate(88.2deg); - transform: rotate(88.2deg); -} -.radial-progress[data-progress="49"] .circle .fill.fix { - -webkit-transform: rotate(176.4deg); - -ms-transform: rotate(176.4deg); - transform: rotate(176.4deg); -} -.radial-progress[data-progress="49"] .inset .percentage:before { - content: "49%"; -} -.radial-progress[data-progress="50"] .circle .mask.full, -.radial-progress[data-progress="50"] .circle .fill { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.radial-progress[data-progress="50"] .circle .fill.fix { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.radial-progress[data-progress="50"] .inset .percentage:before { - content: "50%"; -} -.radial-progress[data-progress="51"] .circle .mask.full, -.radial-progress[data-progress="51"] .circle .fill { - -webkit-transform: rotate(91.8deg); - -ms-transform: rotate(91.8deg); - transform: rotate(91.8deg); -} -.radial-progress[data-progress="51"] .circle .fill.fix { - -webkit-transform: rotate(183.6deg); - -ms-transform: rotate(183.6deg); - transform: rotate(183.6deg); -} -.radial-progress[data-progress="51"] .inset .percentage:before { - content: "51%"; -} -.radial-progress[data-progress="52"] .circle .mask.full, -.radial-progress[data-progress="52"] .circle .fill { - -webkit-transform: rotate(93.6deg); - -ms-transform: rotate(93.6deg); - transform: rotate(93.6deg); -} -.radial-progress[data-progress="52"] .circle .fill.fix { - -webkit-transform: rotate(187.2deg); - -ms-transform: rotate(187.2deg); - transform: rotate(187.2deg); -} -.radial-progress[data-progress="52"] .inset .percentage:before { - content: "52%"; -} -.radial-progress[data-progress="53"] .circle .mask.full, -.radial-progress[data-progress="53"] .circle .fill { - -webkit-transform: rotate(95.4deg); - -ms-transform: rotate(95.4deg); - transform: rotate(95.4deg); -} -.radial-progress[data-progress="53"] .circle .fill.fix { - -webkit-transform: rotate(190.8deg); - -ms-transform: rotate(190.8deg); - transform: rotate(190.8deg); -} -.radial-progress[data-progress="53"] .inset .percentage:before { - content: "53%"; -} -.radial-progress[data-progress="54"] .circle .mask.full, -.radial-progress[data-progress="54"] .circle .fill { - -webkit-transform: rotate(97.2deg); - -ms-transform: rotate(97.2deg); - transform: rotate(97.2deg); -} -.radial-progress[data-progress="54"] .circle .fill.fix { - -webkit-transform: rotate(194.4deg); - -ms-transform: rotate(194.4deg); - transform: rotate(194.4deg); -} -.radial-progress[data-progress="54"] .inset .percentage:before { - content: "54%"; -} -.radial-progress[data-progress="55"] .circle .mask.full, -.radial-progress[data-progress="55"] .circle .fill { - -webkit-transform: rotate(99deg); - -ms-transform: rotate(99deg); - transform: rotate(99deg); -} -.radial-progress[data-progress="55"] .circle .fill.fix { - -webkit-transform: rotate(198deg); - -ms-transform: rotate(198deg); - transform: rotate(198deg); -} -.radial-progress[data-progress="55"] .inset .percentage:before { - content: "55%"; -} -.radial-progress[data-progress="56"] .circle .mask.full, -.radial-progress[data-progress="56"] .circle .fill { - -webkit-transform: rotate(100.8deg); - -ms-transform: rotate(100.8deg); - transform: rotate(100.8deg); -} -.radial-progress[data-progress="56"] .circle .fill.fix { - -webkit-transform: rotate(201.6deg); - -ms-transform: rotate(201.6deg); - transform: rotate(201.6deg); -} -.radial-progress[data-progress="56"] .inset .percentage:before { - content: "56%"; -} -.radial-progress[data-progress="57"] .circle .mask.full, -.radial-progress[data-progress="57"] .circle .fill { - -webkit-transform: rotate(102.6deg); - -ms-transform: rotate(102.6deg); - transform: rotate(102.6deg); -} -.radial-progress[data-progress="57"] .circle .fill.fix { - -webkit-transform: rotate(205.2deg); - -ms-transform: rotate(205.2deg); - transform: rotate(205.2deg); -} -.radial-progress[data-progress="57"] .inset .percentage:before { - content: "57%"; -} -.radial-progress[data-progress="58"] .circle .mask.full, -.radial-progress[data-progress="58"] .circle .fill { - -webkit-transform: rotate(104.4deg); - -ms-transform: rotate(104.4deg); - transform: rotate(104.4deg); -} -.radial-progress[data-progress="58"] .circle .fill.fix { - -webkit-transform: rotate(208.8deg); - -ms-transform: rotate(208.8deg); - transform: rotate(208.8deg); -} -.radial-progress[data-progress="58"] .inset .percentage:before { - content: "58%"; -} -.radial-progress[data-progress="59"] .circle .mask.full, -.radial-progress[data-progress="59"] .circle .fill { - -webkit-transform: rotate(106.2deg); - -ms-transform: rotate(106.2deg); - transform: rotate(106.2deg); -} -.radial-progress[data-progress="59"] .circle .fill.fix { - -webkit-transform: rotate(212.4deg); - -ms-transform: rotate(212.4deg); - transform: rotate(212.4deg); -} -.radial-progress[data-progress="59"] .inset .percentage:before { - content: "59%"; -} -.radial-progress[data-progress="60"] .circle .mask.full, -.radial-progress[data-progress="60"] .circle .fill { - -webkit-transform: rotate(108deg); - -ms-transform: rotate(108deg); - transform: rotate(108deg); -} -.radial-progress[data-progress="60"] .circle .fill.fix { - -webkit-transform: rotate(216deg); - -ms-transform: rotate(216deg); - transform: rotate(216deg); -} -.radial-progress[data-progress="60"] .inset .percentage:before { - content: "60%"; -} -.radial-progress[data-progress="61"] .circle .mask.full, -.radial-progress[data-progress="61"] .circle .fill { - -webkit-transform: rotate(109.8deg); - -ms-transform: rotate(109.8deg); - transform: rotate(109.8deg); -} -.radial-progress[data-progress="61"] .circle .fill.fix { - -webkit-transform: rotate(219.6deg); - -ms-transform: rotate(219.6deg); - transform: rotate(219.6deg); -} -.radial-progress[data-progress="61"] .inset .percentage:before { - content: "61%"; -} -.radial-progress[data-progress="62"] .circle .mask.full, -.radial-progress[data-progress="62"] .circle .fill { - -webkit-transform: rotate(111.6deg); - -ms-transform: rotate(111.6deg); - transform: rotate(111.6deg); -} -.radial-progress[data-progress="62"] .circle .fill.fix { - -webkit-transform: rotate(223.2deg); - -ms-transform: rotate(223.2deg); - transform: rotate(223.2deg); -} -.radial-progress[data-progress="62"] .inset .percentage:before { - content: "62%"; -} -.radial-progress[data-progress="63"] .circle .mask.full, -.radial-progress[data-progress="63"] .circle .fill { - -webkit-transform: rotate(113.4deg); - -ms-transform: rotate(113.4deg); - transform: rotate(113.4deg); -} -.radial-progress[data-progress="63"] .circle .fill.fix { - -webkit-transform: rotate(226.8deg); - -ms-transform: rotate(226.8deg); - transform: rotate(226.8deg); -} -.radial-progress[data-progress="63"] .inset .percentage:before { - content: "63%"; -} -.radial-progress[data-progress="64"] .circle .mask.full, -.radial-progress[data-progress="64"] .circle .fill { - -webkit-transform: rotate(115.2deg); - -ms-transform: rotate(115.2deg); - transform: rotate(115.2deg); -} -.radial-progress[data-progress="64"] .circle .fill.fix { - -webkit-transform: rotate(230.4deg); - -ms-transform: rotate(230.4deg); - transform: rotate(230.4deg); -} -.radial-progress[data-progress="64"] .inset .percentage:before { - content: "64%"; -} -.radial-progress[data-progress="65"] .circle .mask.full, -.radial-progress[data-progress="65"] .circle .fill { - -webkit-transform: rotate(117deg); - -ms-transform: rotate(117deg); - transform: rotate(117deg); -} -.radial-progress[data-progress="65"] .circle .fill.fix { - -webkit-transform: rotate(234deg); - -ms-transform: rotate(234deg); - transform: rotate(234deg); -} -.radial-progress[data-progress="65"] .inset .percentage:before { - content: "65%"; -} -.radial-progress[data-progress="66"] .circle .mask.full, -.radial-progress[data-progress="66"] .circle .fill { - -webkit-transform: rotate(118.8deg); - -ms-transform: rotate(118.8deg); - transform: rotate(118.8deg); -} -.radial-progress[data-progress="66"] .circle .fill.fix { - -webkit-transform: rotate(237.6deg); - -ms-transform: rotate(237.6deg); - transform: rotate(237.6deg); -} -.radial-progress[data-progress="66"] .inset .percentage:before { - content: "66%"; -} -.radial-progress[data-progress="67"] .circle .mask.full, -.radial-progress[data-progress="67"] .circle .fill { - -webkit-transform: rotate(120.6deg); - -ms-transform: rotate(120.6deg); - transform: rotate(120.6deg); -} -.radial-progress[data-progress="67"] .circle .fill.fix { - -webkit-transform: rotate(241.2deg); - -ms-transform: rotate(241.2deg); - transform: rotate(241.2deg); -} -.radial-progress[data-progress="67"] .inset .percentage:before { - content: "67%"; -} -.radial-progress[data-progress="68"] .circle .mask.full, -.radial-progress[data-progress="68"] .circle .fill { - -webkit-transform: rotate(122.4deg); - -ms-transform: rotate(122.4deg); - transform: rotate(122.4deg); -} -.radial-progress[data-progress="68"] .circle .fill.fix { - -webkit-transform: rotate(244.8deg); - -ms-transform: rotate(244.8deg); - transform: rotate(244.8deg); -} -.radial-progress[data-progress="68"] .inset .percentage:before { - content: "68%"; -} -.radial-progress[data-progress="69"] .circle .mask.full, -.radial-progress[data-progress="69"] .circle .fill { - -webkit-transform: rotate(124.2deg); - -ms-transform: rotate(124.2deg); - transform: rotate(124.2deg); -} -.radial-progress[data-progress="69"] .circle .fill.fix { - -webkit-transform: rotate(248.4deg); - -ms-transform: rotate(248.4deg); - transform: rotate(248.4deg); -} -.radial-progress[data-progress="69"] .inset .percentage:before { - content: "69%"; -} -.radial-progress[data-progress="70"] .circle .mask.full, -.radial-progress[data-progress="70"] .circle .fill { - -webkit-transform: rotate(126deg); - -ms-transform: rotate(126deg); - transform: rotate(126deg); -} -.radial-progress[data-progress="70"] .circle .fill.fix { - -webkit-transform: rotate(252deg); - -ms-transform: rotate(252deg); - transform: rotate(252deg); -} -.radial-progress[data-progress="70"] .inset .percentage:before { - content: "70%"; -} -.radial-progress[data-progress="71"] .circle .mask.full, -.radial-progress[data-progress="71"] .circle .fill { - -webkit-transform: rotate(127.8deg); - -ms-transform: rotate(127.8deg); - transform: rotate(127.8deg); -} -.radial-progress[data-progress="71"] .circle .fill.fix { - -webkit-transform: rotate(255.6deg); - -ms-transform: rotate(255.6deg); - transform: rotate(255.6deg); -} -.radial-progress[data-progress="71"] .inset .percentage:before { - content: "71%"; -} -.radial-progress[data-progress="72"] .circle .mask.full, -.radial-progress[data-progress="72"] .circle .fill { - -webkit-transform: rotate(129.6deg); - -ms-transform: rotate(129.6deg); - transform: rotate(129.6deg); -} -.radial-progress[data-progress="72"] .circle .fill.fix { - -webkit-transform: rotate(259.2deg); - -ms-transform: rotate(259.2deg); - transform: rotate(259.2deg); -} -.radial-progress[data-progress="72"] .inset .percentage:before { - content: "72%"; -} -.radial-progress[data-progress="73"] .circle .mask.full, -.radial-progress[data-progress="73"] .circle .fill { - -webkit-transform: rotate(131.4deg); - -ms-transform: rotate(131.4deg); - transform: rotate(131.4deg); -} -.radial-progress[data-progress="73"] .circle .fill.fix { - -webkit-transform: rotate(262.8deg); - -ms-transform: rotate(262.8deg); - transform: rotate(262.8deg); -} -.radial-progress[data-progress="73"] .inset .percentage:before { - content: "73%"; -} -.radial-progress[data-progress="74"] .circle .mask.full, -.radial-progress[data-progress="74"] .circle .fill { - -webkit-transform: rotate(133.2deg); - -ms-transform: rotate(133.2deg); - transform: rotate(133.2deg); -} -.radial-progress[data-progress="74"] .circle .fill.fix { - -webkit-transform: rotate(266.4deg); - -ms-transform: rotate(266.4deg); - transform: rotate(266.4deg); -} -.radial-progress[data-progress="74"] .inset .percentage:before { - content: "74%"; -} -.radial-progress[data-progress="75"] .circle .mask.full, -.radial-progress[data-progress="75"] .circle .fill { - -webkit-transform: rotate(135deg); - -ms-transform: rotate(135deg); - transform: rotate(135deg); -} -.radial-progress[data-progress="75"] .circle .fill.fix { - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.radial-progress[data-progress="75"] .inset .percentage:before { - content: "75%"; -} -.radial-progress[data-progress="76"] .circle .mask.full, -.radial-progress[data-progress="76"] .circle .fill { - -webkit-transform: rotate(136.8deg); - -ms-transform: rotate(136.8deg); - transform: rotate(136.8deg); -} -.radial-progress[data-progress="76"] .circle .fill.fix { - -webkit-transform: rotate(273.6deg); - -ms-transform: rotate(273.6deg); - transform: rotate(273.6deg); -} -.radial-progress[data-progress="76"] .inset .percentage:before { - content: "76%"; -} -.radial-progress[data-progress="77"] .circle .mask.full, -.radial-progress[data-progress="77"] .circle .fill { - -webkit-transform: rotate(138.6deg); - -ms-transform: rotate(138.6deg); - transform: rotate(138.6deg); -} -.radial-progress[data-progress="77"] .circle .fill.fix { - -webkit-transform: rotate(277.2deg); - -ms-transform: rotate(277.2deg); - transform: rotate(277.2deg); -} -.radial-progress[data-progress="77"] .inset .percentage:before { - content: "77%"; -} -.radial-progress[data-progress="78"] .circle .mask.full, -.radial-progress[data-progress="78"] .circle .fill { - -webkit-transform: rotate(140.4deg); - -ms-transform: rotate(140.4deg); - transform: rotate(140.4deg); -} -.radial-progress[data-progress="78"] .circle .fill.fix { - -webkit-transform: rotate(280.8deg); - -ms-transform: rotate(280.8deg); - transform: rotate(280.8deg); -} -.radial-progress[data-progress="78"] .inset .percentage:before { - content: "78%"; -} -.radial-progress[data-progress="79"] .circle .mask.full, -.radial-progress[data-progress="79"] .circle .fill { - -webkit-transform: rotate(142.2deg); - -ms-transform: rotate(142.2deg); - transform: rotate(142.2deg); -} -.radial-progress[data-progress="79"] .circle .fill.fix { - -webkit-transform: rotate(284.4deg); - -ms-transform: rotate(284.4deg); - transform: rotate(284.4deg); -} -.radial-progress[data-progress="79"] .inset .percentage:before { - content: "79%"; -} -.radial-progress[data-progress="80"] .circle .mask.full, -.radial-progress[data-progress="80"] .circle .fill { - -webkit-transform: rotate(144deg); - -ms-transform: rotate(144deg); - transform: rotate(144deg); -} -.radial-progress[data-progress="80"] .circle .fill.fix { - -webkit-transform: rotate(288deg); - -ms-transform: rotate(288deg); - transform: rotate(288deg); -} -.radial-progress[data-progress="80"] .inset .percentage:before { - content: "80%"; -} -.radial-progress[data-progress="81"] .circle .mask.full, -.radial-progress[data-progress="81"] .circle .fill { - -webkit-transform: rotate(145.8deg); - -ms-transform: rotate(145.8deg); - transform: rotate(145.8deg); -} -.radial-progress[data-progress="81"] .circle .fill.fix { - -webkit-transform: rotate(291.6deg); - -ms-transform: rotate(291.6deg); - transform: rotate(291.6deg); -} -.radial-progress[data-progress="81"] .inset .percentage:before { - content: "81%"; -} -.radial-progress[data-progress="82"] .circle .mask.full, -.radial-progress[data-progress="82"] .circle .fill { - -webkit-transform: rotate(147.6deg); - -ms-transform: rotate(147.6deg); - transform: rotate(147.6deg); -} -.radial-progress[data-progress="82"] .circle .fill.fix { - -webkit-transform: rotate(295.2deg); - -ms-transform: rotate(295.2deg); - transform: rotate(295.2deg); -} -.radial-progress[data-progress="82"] .inset .percentage:before { - content: "82%"; -} -.radial-progress[data-progress="83"] .circle .mask.full, -.radial-progress[data-progress="83"] .circle .fill { - -webkit-transform: rotate(149.4deg); - -ms-transform: rotate(149.4deg); - transform: rotate(149.4deg); -} -.radial-progress[data-progress="83"] .circle .fill.fix { - -webkit-transform: rotate(298.8deg); - -ms-transform: rotate(298.8deg); - transform: rotate(298.8deg); -} -.radial-progress[data-progress="83"] .inset .percentage:before { - content: "83%"; -} -.radial-progress[data-progress="84"] .circle .mask.full, -.radial-progress[data-progress="84"] .circle .fill { - -webkit-transform: rotate(151.2deg); - -ms-transform: rotate(151.2deg); - transform: rotate(151.2deg); -} -.radial-progress[data-progress="84"] .circle .fill.fix { - -webkit-transform: rotate(302.4deg); - -ms-transform: rotate(302.4deg); - transform: rotate(302.4deg); -} -.radial-progress[data-progress="84"] .inset .percentage:before { - content: "84%"; -} -.radial-progress[data-progress="85"] .circle .mask.full, -.radial-progress[data-progress="85"] .circle .fill { - -webkit-transform: rotate(153deg); - -ms-transform: rotate(153deg); - transform: rotate(153deg); -} -.radial-progress[data-progress="85"] .circle .fill.fix { - -webkit-transform: rotate(306deg); - -ms-transform: rotate(306deg); - transform: rotate(306deg); -} -.radial-progress[data-progress="85"] .inset .percentage:before { - content: "85%"; -} -.radial-progress[data-progress="86"] .circle .mask.full, -.radial-progress[data-progress="86"] .circle .fill { - -webkit-transform: rotate(154.8deg); - -ms-transform: rotate(154.8deg); - transform: rotate(154.8deg); -} -.radial-progress[data-progress="86"] .circle .fill.fix { - -webkit-transform: rotate(309.6deg); - -ms-transform: rotate(309.6deg); - transform: rotate(309.6deg); -} -.radial-progress[data-progress="86"] .inset .percentage:before { - content: "86%"; -} -.radial-progress[data-progress="87"] .circle .mask.full, -.radial-progress[data-progress="87"] .circle .fill { - -webkit-transform: rotate(156.6deg); - -ms-transform: rotate(156.6deg); - transform: rotate(156.6deg); -} -.radial-progress[data-progress="87"] .circle .fill.fix { - -webkit-transform: rotate(313.2deg); - -ms-transform: rotate(313.2deg); - transform: rotate(313.2deg); -} -.radial-progress[data-progress="87"] .inset .percentage:before { - content: "87%"; -} -.radial-progress[data-progress="88"] .circle .mask.full, -.radial-progress[data-progress="88"] .circle .fill { - -webkit-transform: rotate(158.4deg); - -ms-transform: rotate(158.4deg); - transform: rotate(158.4deg); -} -.radial-progress[data-progress="88"] .circle .fill.fix { - -webkit-transform: rotate(316.8deg); - -ms-transform: rotate(316.8deg); - transform: rotate(316.8deg); -} -.radial-progress[data-progress="88"] .inset .percentage:before { - content: "88%"; -} -.radial-progress[data-progress="89"] .circle .mask.full, -.radial-progress[data-progress="89"] .circle .fill { - -webkit-transform: rotate(160.2deg); - -ms-transform: rotate(160.2deg); - transform: rotate(160.2deg); -} -.radial-progress[data-progress="89"] .circle .fill.fix { - -webkit-transform: rotate(320.4deg); - -ms-transform: rotate(320.4deg); - transform: rotate(320.4deg); -} -.radial-progress[data-progress="89"] .inset .percentage:before { - content: "89%"; -} -.radial-progress[data-progress="90"] .circle .mask.full, -.radial-progress[data-progress="90"] .circle .fill { - -webkit-transform: rotate(162deg); - -ms-transform: rotate(162deg); - transform: rotate(162deg); -} -.radial-progress[data-progress="90"] .circle .fill.fix { - -webkit-transform: rotate(324deg); - -ms-transform: rotate(324deg); - transform: rotate(324deg); -} -.radial-progress[data-progress="90"] .inset .percentage:before { - content: "90%"; -} -.radial-progress[data-progress="91"] .circle .mask.full, -.radial-progress[data-progress="91"] .circle .fill { - -webkit-transform: rotate(163.8deg); - -ms-transform: rotate(163.8deg); - transform: rotate(163.8deg); -} -.radial-progress[data-progress="91"] .circle .fill.fix { - -webkit-transform: rotate(327.6deg); - -ms-transform: rotate(327.6deg); - transform: rotate(327.6deg); -} -.radial-progress[data-progress="91"] .inset .percentage:before { - content: "91%"; -} -.radial-progress[data-progress="92"] .circle .mask.full, -.radial-progress[data-progress="92"] .circle .fill { - -webkit-transform: rotate(165.6deg); - -ms-transform: rotate(165.6deg); - transform: rotate(165.6deg); -} -.radial-progress[data-progress="92"] .circle .fill.fix { - -webkit-transform: rotate(331.2deg); - -ms-transform: rotate(331.2deg); - transform: rotate(331.2deg); -} -.radial-progress[data-progress="92"] .inset .percentage:before { - content: "92%"; -} -.radial-progress[data-progress="93"] .circle .mask.full, -.radial-progress[data-progress="93"] .circle .fill { - -webkit-transform: rotate(167.4deg); - -ms-transform: rotate(167.4deg); - transform: rotate(167.4deg); -} -.radial-progress[data-progress="93"] .circle .fill.fix { - -webkit-transform: rotate(334.8deg); - -ms-transform: rotate(334.8deg); - transform: rotate(334.8deg); -} -.radial-progress[data-progress="93"] .inset .percentage:before { - content: "93%"; -} -.radial-progress[data-progress="94"] .circle .mask.full, -.radial-progress[data-progress="94"] .circle .fill { - -webkit-transform: rotate(169.2deg); - -ms-transform: rotate(169.2deg); - transform: rotate(169.2deg); -} -.radial-progress[data-progress="94"] .circle .fill.fix { - -webkit-transform: rotate(338.4deg); - -ms-transform: rotate(338.4deg); - transform: rotate(338.4deg); -} -.radial-progress[data-progress="94"] .inset .percentage:before { - content: "94%"; -} -.radial-progress[data-progress="95"] .circle .mask.full, -.radial-progress[data-progress="95"] .circle .fill { - -webkit-transform: rotate(171deg); - -ms-transform: rotate(171deg); - transform: rotate(171deg); -} -.radial-progress[data-progress="95"] .circle .fill.fix { - -webkit-transform: rotate(342deg); - -ms-transform: rotate(342deg); - transform: rotate(342deg); -} -.radial-progress[data-progress="95"] .inset .percentage:before { - content: "95%"; -} -.radial-progress[data-progress="96"] .circle .mask.full, -.radial-progress[data-progress="96"] .circle .fill { - -webkit-transform: rotate(172.8deg); - -ms-transform: rotate(172.8deg); - transform: rotate(172.8deg); -} -.radial-progress[data-progress="96"] .circle .fill.fix { - -webkit-transform: rotate(345.6deg); - -ms-transform: rotate(345.6deg); - transform: rotate(345.6deg); -} -.radial-progress[data-progress="96"] .inset .percentage:before { - content: "96%"; -} -.radial-progress[data-progress="97"] .circle .mask.full, -.radial-progress[data-progress="97"] .circle .fill { - -webkit-transform: rotate(174.6deg); - -ms-transform: rotate(174.6deg); - transform: rotate(174.6deg); -} -.radial-progress[data-progress="97"] .circle .fill.fix { - -webkit-transform: rotate(349.2deg); - -ms-transform: rotate(349.2deg); - transform: rotate(349.2deg); -} -.radial-progress[data-progress="97"] .inset .percentage:before { - content: "97%"; -} -.radial-progress[data-progress="98"] .circle .mask.full, -.radial-progress[data-progress="98"] .circle .fill { - -webkit-transform: rotate(176.4deg); - -ms-transform: rotate(176.4deg); - transform: rotate(176.4deg); -} -.radial-progress[data-progress="98"] .circle .fill.fix { - -webkit-transform: rotate(352.8deg); - -ms-transform: rotate(352.8deg); - transform: rotate(352.8deg); -} -.radial-progress[data-progress="98"] .inset .percentage:before { - content: "98%"; -} -.radial-progress[data-progress="99"] .circle .mask.full, -.radial-progress[data-progress="99"] .circle .fill { - -webkit-transform: rotate(178.2deg); - -ms-transform: rotate(178.2deg); - transform: rotate(178.2deg); -} -.radial-progress[data-progress="99"] .circle .fill.fix { - -webkit-transform: rotate(356.4deg); - -ms-transform: rotate(356.4deg); - transform: rotate(356.4deg); -} -.radial-progress[data-progress="99"] .inset .percentage:before { - content: "99%"; -} -.radial-progress[data-progress="100"] .circle .mask.full, -.radial-progress[data-progress="100"] .circle .fill { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.radial-progress[data-progress="100"] .circle .fill.fix { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg); -} -.radial-progress[data-progress="100"] .inset .percentage:before { - content: "100%"; -} -.preferences { - flex: 1 auto; - display: flex; - align-items: flex-start; - justify-content: center; -} -.preferences .preferences-content { - flex: 1 auto; - margin-top: 20px; - padding: 50px; - max-width: 640px; - display: flex; - flex-direction: column; -} -.preferences .preferences-content .title { - margin-top: 40px; - border-bottom: 1px solid #eee; - text-align: left; - font-size: 18px; - font-weight: 400; - color: #394c51; -} -.preferences .preferences-content .option { - display: flex; - flex-direction: row; - margin-top: 14px; -} -.preferences .preferences-content .option .option-name { - flex: 0 auto; - color: #777777; -} -.preferences .preferences-content .option .option-value { - flex: 1 auto; - text-align: right; -} -.header { - min-width: 100%; - flex: 0; - min-height: 50px; - -webkit-app-region: drag; - -webkit-user-select: none; -} -.header.no-drag { - -webkit-app-region: no-drag; -} -.header .buttons { - display: inline-block; - position: relative; - top: 16px; - left: 20px; -} -.header .buttons:hover .button-minimize.enabled { - background-image: url('minimize.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .header .buttons:hover .button-minimize.enabled { - background-image: url("minimize@2x.png"); - background-size: 10px 10px; - } -} -.header .buttons:hover .button-close.enabled { - background-image: url('close.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .header .buttons:hover .button-close.enabled { - background-image: url("close@2x.png"); - background-size: 10px 10px; - } -} -.header .buttons:hover .button-fullscreen.enabled { - background-image: url('fullscreen.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .header .buttons:hover .button-fullscreen.enabled { - background-image: url("fullscreen@2x.png"); - background-size: 10px 10px; - } -} -.header .buttons:hover .button-fullscreenclose.enabled { - background-image: url('fullscreenclose.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .header .buttons:hover .button-fullscreenclose.enabled { - background-image: url("fullscreenclose@2x.png"); - background-size: 10px 10px; - } -} -.header .buttons .button { - box-sizing: border-box; - display: inline-block; - background: white; - margin-right: 9px; - height: 12px; - width: 12px; - border: 1px solid #CCD3D5; - border-radius: 6px; - box-shadow: 0px 1px 1px 0px rgba(234, 234, 234, 0.5); - -webkit-app-region: no-drag; -} -.header .buttons .button.disabled { - border: 1px solid #E8EEEF; -} -.header .buttons .button.enabled:hover { - box-shadow: 0px 1px 1px 0px rgba(195, 198, 201, 0.5); -} -.header .buttons .button.enabled:hover:active { - cursor: default; - -webkit-filter: brightness(92%); -} -.popover.popover-view { - min-width: 290px; -} -.popover.popover-volume { - min-width: 400px; -} -.popover .popover-content { - display: flex; - flex-direction: column; - padding: 14px 14px 20px; -} -.popover .popover-content .table { - margin-bottom: 0; -} -.popover .popover-content .table .icon-arrow-right { - color: #aaa; - margin: 2px 9px 0; - flex: 0 auto; - min-width: 13px; -} -.popover .popover-content .table .btn { - min-width: 22px; - margin-left: 10px; -} -.popover .popover-content .table .table-labels { - flex: 1 auto; - display: flex; - font-size: 12px; - color: #c7d7d7; -} -.popover .popover-content .table .table-labels .label-left { - flex: 0 auto; - min-width: 80px; - margin-right: 30px; - text-align: right; -} -.popover .popover-content .table .table-labels .label-right { - flex: 1 auto; - display: inline-block; - width: 40%; -} -.popover .popover-content .table .table-values { - flex: 1 auto; - display: flex; - flex-direction: row; - margin: 8px 0; -} -.popover .popover-content .table .table-values .value-left { - text-align: right; - min-width: 80px; - flex: 0 auto; -} -.popover .popover-content .table .table-values .value-right { - flex: 1 auto; - -webkit-user-select: text; - width: 154px; -} -.popover .popover-content .table .table-new { - margin-top: 10px; - flex: 1 auto; - display: flex; -} -.popover .popover-content .table .table-new input { - padding: 0; - font-weight: 400; -} -.popover .popover-content .table .table-new input.new-left { - flex: 0 auto; - text-align: right; - min-width: 80px; - max-width: 80px; -} -.popover .popover-content .table .table-new .new-right-wrapper { - position: relative; - display: flex; - flex: 1 auto; -} -.popover .popover-content .table .table-new .new-right-wrapper .new-right-placeholder { - position: absolute; - top: 3px; - left: 0; - font-weight: 400; -} -.popover .popover-content .table .table-new .new-right-wrapper input.new-right { - flex: 1 auto; - height: 24px; - position: relative; - padding-left: 107px; -} -.popover .popover-content .table.volumes .label-left { - min-width: 120px; -} -.popover .popover-content .table.volumes .value-left { - min-width: 120px; -} -.popover .popover-content .table.volumes .icon { - color: #aaa; - margin: 2px 9px 0; -} -.popover .popover-content .question { - margin: 12px 6px 6px; -} -.containers { - box-sizing: border-box; - height: 100%; - display: flex; - flex-direction: column; -} -.containers .containers-body { - flex: 1; - display: flex; - flex-direction: row; -} -.containers .containers-body .sidebar { - display: flex; - flex-direction: column; - min-width: 280px; - margin: 0; - box-sizing: border-box; - border-right: 1px solid #eee; -} -.containers .containers-body .sidebar .sidebar-header { - flex: 0 auto; - min-width: 240px; - min-height: 42px; - display: flex; - border-bottom: 1px solid transparent; - transition: border-bottom 0.25s; - padding: 0px 10px 0px 10px; -} -.containers .containers-body .sidebar .sidebar-header.sep { - border-bottom: 1px solid #eee; - box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.03); -} -.containers .containers-body .sidebar .sidebar-header h4 { - align-self: flex-start; - padding: 0 24px; - margin: 14px 0 0; - display: inline-block; - font-size: 14px; - position: relative; -} -.containers .containers-body .sidebar .sidebar-header .create { - flex: 1 auto; - text-align: right; - /*.btn { - margin-top: 4px; - padding: 4px 7px; - font-size: 16px; - position: relative; - .icon { - position: relative; - top: 3px; - left: 1px; - } - }*/ -} -.containers .containers-body .sidebar .sidebar-containers { - position: relative; - flex: 1 auto; - overflow-y: scroll; - overflow-x: hidden; - box-sizing: border-box; - max-width: 280px; -} -.containers .containers-body .sidebar .sidebar-containers.sep { - border-top: 1px solid #eee; -} -.containers .containers-body .sidebar .sidebar-containers ul { - margin: 0; - min-width: 240px; - padding: 0; - margin-top: 4px; - display: flex; - flex-direction: column; -} -.containers .containers-body .sidebar .sidebar-containers ul a { - color: inherit; - flex-shrink: 0; - cursor: default; - margin: 0px 3px 0px 8px; - outline: none; - padding: 4px 5px; -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li { - border-bottom: none; - border-radius: 40px; - background: #24b8eb; -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li .name { - color: white; -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li .image { - color: white; - opacity: 0.9; -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running { - background-image: url('running-white.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running { - background-image: url("running-white@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running .runningwave { - background-image: url('runningwave-white.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-running .runningwave { - background-image: url("runningwave-white@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-stopped { - background-image: url('stopped-white.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-stopped { - background-image: url("stopped-white@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading { - background-image: url('downloading-white.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading { - background-image: url("downloading-white@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading .downloading-arrow { - background-image: url('downloading-arrow-white.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul a.active li .state-downloading .downloading-arrow { - background-image: url("downloading-arrow-white@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul a:hover { - text-decoration: none; - cursor: default; -} -.containers .containers-body .sidebar .sidebar-containers ul a:focus { - text-decoration: none; -} -.containers .containers-body .sidebar .sidebar-containers ul li { - vertical-align: middle; - padding: 10px 16px 10px 16px; - display: flex; - flex-direction: row; -} -.containers .containers-body .sidebar .sidebar-containers ul li .info { - font-size: 13px; - margin-left: 16px; -} -.containers .containers-body .sidebar .sidebar-containers ul li .info .name { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - font-size: 14px; - font-weight: 400; - color: #253237; -} -.containers .containers-body .sidebar .sidebar-containers ul li .info .image { - color: #7a9999; - font-size: 12px; - font-weight: 400; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.containers .containers-body .sidebar .sidebar-containers ul li .state { - margin-top: 9px; - display: inline-block; - position: relative; - min-width: 20px; - height: 20px; -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-error { - background-image: url('error.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-error { - background-image: url("error@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-stopped { - background-image: url('stopped.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-stopped { - background-image: url("stopped@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-paused { - background-image: url('paused.png'); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-paused { - background-image: url("paused@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-downloading { - background-image: url('downloading.png'); - overflow: hidden; -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-downloading { - background-image: url("downloading@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-downloading .downloading-arrow { - width: 20px; - height: 20px; - background-image: url('downloading-arrow.png'); - position: absolute; - -webkit-animation-name: translatedownload; - -webkit-animation-duration: 1.8s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-downloading .downloading-arrow { - background-image: url("downloading-arrow@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-running { - background-image: url('running.png'); - overflow: hidden; -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-running { - background-image: url("running@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-running .runningwave { - position: absolute; - width: 40px; - height: 20px; - left: -20px; - background-image: url('runningwave.png'); - -webkit-animation-name: translatewave; - -webkit-animation-duration: 8.0s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-running .runningwave { - background-image: url("runningwave@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .sidebar .sidebar-containers ul li .state-restarting { - display: inline-block; - width: 20px; - height: 20px; - background-image: url('restarting.png'); - background-repeat: repeat-x; - -webkit-animation-delay: -1s; - -webkit-animation-name: rotate; - -webkit-animation-duration: 3.0s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx) { - .containers .containers-body .sidebar .sidebar-containers ul li .state-restarting { - background-image: url("restarting@2x.png"); - background-size: 20px 20px; - } -} -.containers .containers-body .no-containers { - flex: 1 auto; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - position: relative; -} -.containers .containers-body .no-containers h3 { - position: relative; - top: -44px; - font-size: 18px; - color: #C7D7D7; -} -.containers .containers-body .details { - margin: 0; - padding: 0; - box-sizing: border-box; - flex: 1; - display: flex; - flex-direction: column; -} -.containers .containers-body .details .details-header { - flex: 0 auto; - display: flex; - flex-direction: column; - padding: 4px 40px 10px 40px; - position: relative; - border-bottom: 1px solid #eee; -} -.containers .containers-body .details .details-header .details-header-actions { - flex: 0 auto; - display: flex; - flex-direction: row; - margin-top: 24px; - margin-bottom: 6px; - position: relative; - border-bottom: 1px solid transparent; - transition: border-bottom 0.25s; -} -.containers .containers-body .details .details-header .details-header-actions .action { - flex: 0 auto; - margin-right: 24px; -} -.containers .containers-body .details .details-header .details-header-actions .details-header-actions-rhs { - flex: 1 auto; - display: flex; - align-items: right; - justify-content: flex-end; -} -.containers .containers-body .details .details-header .details-header-actions .details-header-actions-rhs a.btn { - z-index: 0; -} -.containers .containers-body .details .details-header .details-header-info { - display: flex; - flex-direction: row; -} -.containers .containers-body .details .details-header .details-header-info a { - position: absolute; - right: 30px; - top: -4px; -} -.containers .containers-body .details .details-header .details-header-info h1 { - font-size: 20px; - margin: 0; - color: #253237; -} -.containers .containers-body .details .details-header .details-header-info h2.status { - margin: 8px 0px 0px 16px; - text-transform: uppercase; - font-weight: bold; - font-size: 10px; -} -.containers .containers-body .details .details-header .details-header-info h2.status.running { - color: #65e100; -} -.containers .containers-body .details .details-header .details-header-info h2.image-label { - margin: 8px 0px 0px 30px; - font-size: 10px; - color: #7a9999; -} -.containers .containers-body .details .details-header .details-header-info h2.image { - margin: 5px 0px 0px 16px; - font-size: 14px; - color: #546c70; -} -.containers .containers-body .details .details-progress { - margin: 26% auto 0; - width: 300px; -} -.containers .containers-body .details .details-panel { - flex: 1; - overflow: auto; -} -.containers .containers-body .details .details-panel .logs { - -webkit-user-select: text; - font-family: Menlo; - font-size: 12px; - padding: 18px 35px; - color: #617d81; - white-space: pre-wrap; -} -.containers .containers-body .details .details-panel .logs p { - margin: 0 6px; -} -.containers .containers-body .details .details-panel .settings { - padding: 18px 35px; -} -.containers .containers-body .details .container-name { - margin-bottom: 20px; -} -.containers .containers-body .details .container-name input { - width: 20%; -} -.containers .containers-body .details .env-vars-labels { - width: 100%; - font-size: 12px; - color: #c7d7d7; - margin-left: 5px; - margin-bottom: 5px; -} -.containers .containers-body .details .env-vars-labels .label-key { - display: inline-block; - margin-right: 30px; - width: 20%; -} -.containers .containers-body .details .env-vars-labels .label-val { - display: inline-block; - width: 40%; -} -.containers .containers-body .details .env-vars { - margin-bottom: 20px; -} -.containers .containers-body .details .env-vars .keyval-row { - margin-bottom: 5px; -} -.containers .containers-body .details .env-vars input { - margin-right: 30px; -} -.containers .containers-body .details .env-vars input.key { - width: 20%; -} -.containers .containers-body .details .env-vars input.val { - width: 40%; -} -.create-modal .modal-dialog { - margin-top: 80px; - width: calc(468px); -} -.create-modal .modal-content { - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); - border: none; - height: 610px; - display: flex; -} -.create-modal .modal-body { - flex: 1 auto; - display: flex; - flex-direction: row; - padding: 32px 32px; -} -.create-modal .modal-body .popover { - width: 180px; - text-align: center; -} -.create-modal .modal-body .popover .popover-content { - max-height: 160px; - padding: 0; - overflow: auto; -} -.create-modal .modal-body .popover ul { - padding: 0; - list-style: none; - margin: 0; -} -.create-modal .modal-body .popover ul li { - padding: 8px 0; - border-bottom: 1px solid #eee; -} -.create-modal .modal-body .popover ul li:hover { - color: white; - background: #24b8eb; -} -.create-modal .modal-body .popover .tags-loading { - margin: 14px auto; - text-align: center; - -webkit-animation-name: spin; - -webkit-animation-duration: 1.8s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} -.create-modal .modal-body section.search { - min-width: 404px; -} -.create-modal .modal-body section.search .question { - text-align: right; -} -.create-modal .modal-body section.search .search-bar { - position: relative; -} -.create-modal .modal-body section.search .search-bar .loading { - position: absolute; - left: 13px; - top: 10px; - width: 20px; - height: 20px; - -webkit-animation-name: spin; - -webkit-animation-duration: 1.8s; - -webkit-animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; -} -.create-modal .modal-body section.search .search-bar .search-icon { - font-size: 20px; - color: #7a9999; - position: absolute; - top: 9px; - left: 14px; -} -.create-modal .modal-body section.search .search-bar input { - border-radius: 20px; - font-size: 13px; - height: 38px; - padding: 8px 16px 8px 40px; - color: #253237; - margin-bottom: 3px; - border-color: #c7d7d7; - box-shadow: none; -} -.create-modal .modal-body section.search .search-bar input:focus { - box-shadow: none; - border-color: #7a9999; -} -.create-modal .modal-body section.search .search-bar input::-webkit-input-placeholder { - color: #ddd; - font-weight: 300; -} -.create-modal .modal-body section.search .results { - overflow: auto; - padding-bottom: 80px; -} -.create-modal .modal-body section.search .results .no-results { - text-align: center; -} -.create-modal .modal-body section.search .results .no-results h3 { - color: #ABC0C0; - font-size: 16px; - margin-top: 160px; -} -.create-modal .modal-body section.search .results .title { - flex: 0 auto; - margin-top: 16px; -} -.create-modal .modal-body section.search .results ul { - margin-top: 10px; - list-style: none; - padding: 0; -} -.create-modal .modal-body section.search .results ul li { - display: flex; - flex-direction: row; - padding: 8px 14px 5px 14px; - border-bottom: 1px solid #eee; -} -.create-modal .modal-body section.search .results ul li:hover { - background-color: #fbfcfc; -} -.create-modal .modal-body section.search .results ul li:last-child { - border-bottom: 0; -} -.create-modal .modal-body section.search .results ul li .info { - flex: 0 auto; -} -.create-modal .modal-body section.search .results ul li .info .name { - color: #253237; - max-width: 278px; - font-size: 16px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.create-modal .modal-body section.search .results ul li .info .name img { - margin-right: 6px; - margin-left: 2px; -} -.create-modal .modal-body section.search .results ul li .info .properties { - color: #7a9999; - margin-top: 2px; -} -.create-modal .modal-body section.search .results ul li .info .properties .star-count { - font-size: 10px; - display: inline-block; - position: relative; - top: -3px; - left: 1px; - height: 17px; -} -.create-modal .modal-body section.search .results ul li .info .properties .icon { - overflow: hidden; - display: inline-block; - font-size: 15px; - height: 15px; -} -.create-modal .modal-body section.search .results ul li .action { - position: relative; - top: 5px; - text-align: right; - flex: 1 auto; -} -.create-modal .modal-body section.search .results ul li .action ul { - text-align: center; -} -.create-modal .modal-body section.search .results ul li .action ul ul { - overflow: auto; - max-height: 300px; -} -.create-modal .modal-body section.search .results ul li .action .icon { - position: relative; - top: 2px; - font-size: 11px; -} -.modal-backdrop.in { - background: rgba(227, 230, 230, 0.95); - opacity: 1; - height: 100%; -} -html, -body { - height: 100%; - width: 100%; - overflow: hidden; - -webkit-font-smoothing: antialiased; - -webkit-user-select: none; - font-family: 'Clear Sans', sans-serif; - cursor: default; -} -html img, -body img { - pointer-events: none; -} -::-webkit-scrollbar { - width: 13px; -} -::-webkit-scrollbar-track { - margin: 3px; - -webkit-border-radius: 5px; - border-radius: 5px; - background: none; -} -::-webkit-scrollbar-thumb { - border: 3px solid rgba(0, 0, 0, 0); - background-clip: padding-box; - width: 7px; - border-radius: 8px; - background-color: rgba(0, 0, 0, 0.2); -} -::-webkit-scrollbar-thumb:hover { - background-color: rgba(0, 0, 0, 0.25); -} -.question { - color: #c7d7d7; - font-size: 10px; -} -.popover { - font-family: 'Clear Sans', sans-serif; - color: #546c70; - font-weight: 400; - font-size: 13px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); - border: 1px solid #ddd; -} -@-webkit-keyframes spin { - from { - -webkit-transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - } -} -@-webkit-keyframes translatewave { - from { - -webkit-transform: translateX(0px); - } - to { - -webkit-transform: translateX(20px); - } -} -@-webkit-keyframes translatedownload { - 0% { - -webkit-transform: translateY(6px); - opacity: 0; - } - 25% { - opacity: 1; - -webkit-transform: translateY(6px); - } - 50% { - opacity: 1; - -webkit-transform: translateY(20px); - } - 100% { - opacity: 1; - -webkit-transform: translateY(20px); - } -} -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy9pY29ucy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9ub3JtYWxpemUubGVzcyIsInN0eWxlcy9ib290c3RyYXAvcHJpbnQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvZ2x5cGhpY29ucy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9zY2FmZm9sZGluZy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdmVuZG9yLXByZWZpeGVzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3ZhcmlhYmxlcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdGFiLWZvY3VzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3RodW1ibmFpbHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvY2Fyb3VzZWwubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2ltYWdlLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3R5cGUubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL3RleHQtZW1waGFzaXMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2JhY2tncm91bmQtdmFyaWFudC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdGV4dC1vdmVyZmxvdy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9jb2RlLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2dyaWQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2dyaWQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL2dyaWQtZnJhbWV3b3JrLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3RhYmxlcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvdGFibGUtcm93Lmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2Zvcm1zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9mb3Jtcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9idXR0b25zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9idXR0b25zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9vcGFjaXR5Lmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2J1dHRvbi1ncm91cHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvY29tcG9uZW50LWFuaW1hdGlvbnMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvZHJvcGRvd25zLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9uYXYtZGl2aWRlci5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvcmVzZXQtZmlsdGVyLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9ib3JkZXItcmFkaXVzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2lucHV0LWdyb3Vwcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9uYXZzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL25hdmJhci5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvbmF2LXZlcnRpY2FsLWFsaWduLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3V0aWxpdGllcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9icmVhZGNydW1icy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9wYWdpbmF0aW9uLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9wYWdpbmF0aW9uLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3BhZ2VyLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2xhYmVscy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvbGFiZWxzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2JhZGdlcy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9qdW1ib3Ryb24ubGVzcyIsInN0eWxlcy9ib290c3RyYXAvYWxlcnRzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9hbGVydHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvcHJvZ3Jlc3MtYmFycy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvZ3JhZGllbnRzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9wcm9ncmVzcy1iYXIubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWVkaWEubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbGlzdC1ncm91cC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvbGlzdC1ncm91cC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9wYW5lbHMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL3BhbmVscy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9yZXNwb25zaXZlLWVtYmVkLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3dlbGxzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL2Nsb3NlLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21vZGFscy5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC90b29sdGlwLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL3BvcG92ZXJzLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9jbGVhcmZpeC5sZXNzIiwic3R5bGVzL2Jvb3RzdHJhcC9taXhpbnMvY2VudGVyLWJsb2NrLmxlc3MiLCJzdHlsZXMvYm9vdHN0cmFwL21peGlucy9oaWRlLXRleHQubGVzcyIsInN0eWxlcy9ib290c3RyYXAvcmVzcG9uc2l2ZS11dGlsaXRpZXMubGVzcyIsInN0eWxlcy9ib290c3RyYXAvbWl4aW5zL3Jlc3BvbnNpdmUtdmlzaWJpbGl0eS5sZXNzIiwic3R5bGVzL2NsZWFyc2Fucy5sZXNzIiwic3R5bGVzL3RoZW1lLmxlc3MiLCJzdHlsZXMvc2V0dXAubGVzcyIsInN0eWxlcy9yYWRpYWwubGVzcyIsInN0eWxlcy9wcmVmZXJlbmNlcy5sZXNzIiwic3R5bGVzL2hlYWRlci5sZXNzIiwic3R5bGVzL3JldGluYS5sZXNzIiwic3R5bGVzL2NvbnRhaW5lcnMubGVzcyIsInN0eWxlcy9jb250YWluZXItbW9kYWwubGVzcyIsIi4vc3R5bGVzL21haW4ubGVzcyJdLCJuYW1lcyI6W10s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QUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsMkJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZUFBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxlQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsMEJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsNEJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsY0FBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxtQkFBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxlQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHNCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHNCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHFCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGtCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDZCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDRCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDBCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLDRCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGdCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGdCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHFCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLG9CQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLHNCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsY0FBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxjQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsMkJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsK0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsNEJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsNkJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUNBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZUFBQztFQUFVLFNBQVMsT0FBVDs7QUFDWCxlQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGdCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGlCQUFDO0VBQVUsU0FBUyxPQUFUOztBQUNYLGVBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsd0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsa0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsaUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gscUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsZ0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsbUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsdUJBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsc0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FBQ1gsb0JBQUM7RUFBVSxTQUFTLE9BQVQ7O0FB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SixtQkFuQzhDO0VBRzVDLGlCQUNFO0VBREYsaUJBRUU7RUFGRixpQkFHRTtFQUhGLGlCQUlFO0lBQ0UsV0FBQTtJQUNBLFlBQUE7SUFDQSxpQkFBQTtJQUNBLGVBQUE7O0VBUkosaUJBVUU7RUFWRixpQkFXRTtJQUNFLGtCQUFBOztFQVpKLGlCQWNFO0VBZEYsaUJBZUU7SUFDRSxtQkFBQTs7RUFLSjtJQUNFLFNBQUE7SUFDQSxVQUFBO0lBQ0Esb0JBQUE7O0VBSUY7SUFDRSxZQUFBOzs7QW9EM1BGLFNBQUM7QUFDRCxTQUFDO0FsRGtNSCxjQUNFLEdrRHBNQztBbERtTUgsY0FDRSxHa0RuTUM7QTdDTEgsVTZDSUc7QTdDSkgsVTZDS0c7QTdDZUgsZ0I2Q2hCRztBN0NnQkgsZ0I2Q2ZHO0E3Q3dCSCxJNkN6Qkc7QTdDeUJILEk2Q3hCRztBeENzZEgsZ0JBcUJFLFl3QzVlQztBeEN1ZEgsZ0JBcUJFLFl3QzNlQztBbkNvQkgsWW1DckJHO0FuQ3FCSCxZbUNwQkc7QW5DZ0lILG1CQVdFLGFtQzVJQztBbkNpSUgsbUJBV0UsYW1DM0lDO0E1Qk5ILEk0QktHO0E1QkxILEk0Qk1HO0EzQkpILE8yQkdHO0EzQkhILE8yQklHO0EzQmdCSCxjMkJqQkc7QTNCaUJILGMyQmhCRztBM0JtQ0gsZ0IyQnBDRztBM0JvQ0gsZ0IyQm5DRztBckJUSCxNcUJRRztBckJSSCxNcUJTRztBUkNILFdRRkc7QVJFSCxXUURHO0FIc0ZILGFHdkZHO0FIdUZILGFHdEZHO0VBQ0MsU0FBUyxHQUFUO0VBQ0EsY0FBQTs7QUFFRixTQUFDO0FsRDhMSCxjQUNFLEdrRC9MQztBN0NUSCxVNkNTRztBN0NXSCxnQjZDWEc7QTdDb0JILEk2Q3BCRztBeENrZEgsZ0JBcUJFLFl3Q3ZlQztBbkNnQkgsWW1DaEJHO0FuQzRISCxtQkFXRSxhbUN2SUM7QTVCVkgsSTRCVUc7QTNCUkgsTzJCUUc7QTNCWUgsYzJCWkc7QTNCK0JILGdCMkIvQkc7QXJCYkgsTXFCYUc7QVJISCxXUUdHO0FIa0ZILGFHbEZHO0VBQ0MsV0FBQTs7QXpCUko7RTBCUkUs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O0VBQ1AsU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixlQUFlO0VBQ2IsU0FBUyxPQUFUOztBQUVGLGVBQWU7RUFDYixTQUFTLE9BQVQ7O0FBRUYsYUFBYTtFQUNYLFNBQVMsT0FBVDs7QUFFRixhQUFhO0VBQ1gsU0FBUyxPQUFUOztBQUVGLGFBQWE7RUFDWCxTQUFTLE9BQVQ7O0FBRUYsYUFBYTtFQUNYLFNBQVMsT0FBVDs7QUFFRixhQUFhO0VBQ1gsU0FBUyxPQUFUOztBQUVGLGFBQWE7RUFDWCxTQUFTLE9BQVQ7O0FBRUYsYUFBYTtFQUNYLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixjQUFjO0VBQ1osU0FBUyxPQUFUOztBQUVGLGNBQWM7RUFDWixTQUFTLE9BQVQ7O0FBRUYsY0FBYztFQUNaLFNBQVMsT0FBVDs7QUFFRixvQkFBb0I7RUFDbEIsU0FBUyxPQUFUOztBQUVGLG9CQUFvQjtFQUNsQixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixvQkFBb0I7RUFDbEIsU0FBUyxPQUFUOztBQUVGLG9CQUFvQjtFQUNsQixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixvQkFBb0I7RUFDbEIsU0FBUyxPQUFUOztBQUVGLG9CQUFvQjtFQUNsQixTQUFTLE9BQVQ7O0FBRUYsb0JBQW9CO0VBQ2xCLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FBRUYscUJBQXFCO0VBQ25CLFNBQVMsT0FBVDs7QUFFRixxQkFBcUI7RUFDbkIsU0FBUyxPQUFUOztBQUVGLHFCQUFxQjtFQUNuQixTQUFTLE9BQVQ7O0FB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 */ \ No newline at end of file From 4cb248a684eb77a1f91dbb8f17a1973a890aba02 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 30 Jan 2015 16:05:42 -0500 Subject: [PATCH 05/12] Rename router.js to Router.js --- src/{router.js => Router.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{router.js => Router.js} (100%) diff --git a/src/router.js b/src/Router.js similarity index 100% rename from src/router.js rename to src/Router.js From 39c3c8241bd4ab448760306a60eae65ff7818bda Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 30 Jan 2015 16:05:49 -0500 Subject: [PATCH 06/12] Rename virtualbox.js to Virtualbox.js --- src/{virtualbox.js => Virtualbox.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{virtualbox.js => Virtualbox.js} (100%) diff --git a/src/virtualbox.js b/src/Virtualbox.js similarity index 100% rename from src/virtualbox.js rename to src/Virtualbox.js From 289549c4951c58eb5ff81e14204a92f3d9fc4eb5 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 30 Jan 2015 23:05:08 -0500 Subject: [PATCH 07/12] Adding jasmine unit tests --- browser/main.js | 62 +- index.html | 1 - package.json | 14 +- specs/ContainerStore-spec.js | 8 + specs/jasmine-2.1.3/boot.js | 120 + specs/jasmine-2.1.3/console.js | 190 ++ specs/jasmine-2.1.3/jasmine-html.js | 404 ++++ specs/jasmine-2.1.3/jasmine.css | 62 + specs/jasmine-2.1.3/jasmine.js | 2908 +++++++++++++++++++++++ specs/jasmine-2.1.3/jasmine_favicon.png | Bin 0 -> 1486 bytes specs/specs.html | 9 + specs/specs.js | 16 + src/Main.js | 17 +- 13 files changed, 3769 insertions(+), 42 deletions(-) create mode 100755 specs/ContainerStore-spec.js create mode 100755 specs/jasmine-2.1.3/boot.js create mode 100755 specs/jasmine-2.1.3/console.js create mode 100755 specs/jasmine-2.1.3/jasmine-html.js create mode 100755 specs/jasmine-2.1.3/jasmine.css create mode 100755 specs/jasmine-2.1.3/jasmine.js create mode 100755 specs/jasmine-2.1.3/jasmine_favicon.png create mode 100755 specs/specs.html create mode 100644 specs/specs.js diff --git a/browser/main.js b/browser/main.js index 5e86638a0b..ea7c222378 100644 --- a/browser/main.js +++ b/browser/main.js @@ -10,6 +10,8 @@ var app = require('app'); var BrowserWindow = require('browser-window'); var ipc = require('ipc'); +var argv = require('minimist')(process.argv); + process.env.NODE_PATH = __dirname + '/../node_modules'; process.chdir(path.join(__dirname, '..')); @@ -32,7 +34,11 @@ app.on('ready', function() { mainWindow = new BrowserWindow(windowOptions); mainWindow.hide(); - mainWindow.loadUrl('file://' + __dirname + '/../build/index.html'); + if (argv.test) { + mainWindow.loadUrl('file://' + __dirname + '/../specs/specs.html'); + } else { + mainWindow.loadUrl('file://' + __dirname + '/../build/index.html'); + } process.on('uncaughtException', app.quit); @@ -54,38 +60,40 @@ app.on('ready', function() { mainWindow.setTitle(''); // Auto Updates - autoUpdater.setFeedUrl('https://updates.kitematic.com/releases/latest?version=' + app.getVersion()); + if (process.env.NODE_ENV !== 'dev' && process.env.NODE_ENV !== 'test') { + autoUpdater.setFeedUrl('https://updates.kitematic.com/releases/latest?version=' + app.getVersion()); - autoUpdater.on('checking-for-update', function (e) { - console.log('Checking for update...'); - }); + autoUpdater.on('checking-for-update', function (e) { + console.log('Checking for update...'); + }); - autoUpdater.on('update-available', function (e) { - console.log('Update available.'); - console.log(e); - }); + autoUpdater.on('update-available', function (e) { + console.log('Update available.'); + console.log(e); + }); - autoUpdater.on('update-not-available', function (e) { - console.log('Update not available.'); - }); + autoUpdater.on('update-not-available', function (e) { + console.log('Update not available.'); + }); - autoUpdater.on('update-downloaded', function (e, releaseNotes, releaseName, releaseDate, updateURL) { - console.log('Update downloaded.'); - mainWindow.webContents.send('notify', 'window:update-available'); - }); + autoUpdater.on('update-downloaded', function (e, releaseNotes, releaseName, releaseDate, updateURL) { + console.log('Update downloaded.'); + mainWindow.webContents.send('notify', 'window:update-available'); + }); - autoUpdater.on('error', function (e) { - console.log('An error occured while checking for updates.'); - console.log(e); - }); + autoUpdater.on('error', function (e) { + console.log('An error occured while checking for updates.'); + console.log(e); + }); - ipc.on('command', function (event, arg) { - console.log('Command: ' + arg); - if (arg === 'application:quit-install') { - saveVMOnQuit = false; - autoUpdater.quitAndInstall(); - } - }); + ipc.on('command', function (event, arg) { + console.log('Command: ' + arg); + if (arg === 'application:quit-install') { + saveVMOnQuit = false; + autoUpdater.quitAndInstall(); + } + }); + } ipc.on('vm', function (event, arg) { saveVMOnQuit = arg; diff --git a/index.html b/index.html index 94d57f9b1e..86d233b8db 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,5 @@ - diff --git a/package.json b/package.json index 3618b083e5..34b3d9816d 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,9 @@ }, "bugs": "https://github.com/kitematic/kitematic/issues", "scripts": { - "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & ./cache/Atom.app/Contents/MacOS/Atom . && kill $(pgrep node)", + "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & NODE_ENV=development ./cache/Atom.app/Contents/MacOS/Atom . && kill $(pgrep node)", "preinstall": "./deps", - "test": "jest", + "test": "jsx src build/ && rsync ./images/* ./build && wess -m -i ./styles/main.less -o ./build/main.css & NODE_ENV=test ./cache/Atom.app/Contents/MacOS/Atom . --test", "release": "./release" }, "licenses": [ @@ -23,9 +23,10 @@ } ], "jest": { - "scriptPreprocessor": "spec/support/preprocessor.js", "unmockedModulePathPatterns": [ - "node_modules/react" + "dockerode", + "react", + "debug" ] }, "boot2docker-version": "1.3.2", @@ -37,6 +38,7 @@ "dockerode": "2.0.4", "exec": "0.1.2", "gulp-react": "^2.0.0", + "jest-cli": "^0.2.1", "jquery": "^2.1.3", "minimist": "^1.1.0", "node-uuid": "1.4.1", @@ -56,8 +58,10 @@ "glob": "^4.0.6", "jasmine-reporters": "^1.0.1", "jasmine-tagged": "^1.1.2", + "jasmine-terminal-reporter": "^0.9.1", "react-tools": "^0.12.2", "wess": "^0.2.2", - "wiper": "^1.0.2" + "wiper": "^1.0.2", + "zombie": "^2.5.1" } } diff --git a/specs/ContainerStore-spec.js b/specs/ContainerStore-spec.js new file mode 100755 index 0000000000..5c8edb3a4c --- /dev/null +++ b/specs/ContainerStore-spec.js @@ -0,0 +1,8 @@ +var ContainerStore = require('../build/ContainerStore'); +var TestUtils = require('react/addons').TestUtils; + +describe('ContainerStore', function() { + it('returns an empty array initially', function() { + expect(ContainerStore.containers()).toEqual({}); + }); +}); diff --git a/specs/jasmine-2.1.3/boot.js b/specs/jasmine-2.1.3/boot.js new file mode 100755 index 0000000000..164f068b09 --- /dev/null +++ b/specs/jasmine-2.1.3/boot.js @@ -0,0 +1,120 @@ +/** + Starting with version 2.0, this file "boots" Jasmine, performing all of the necessary initialization before executing the loaded environment and all of a project's specs. This file should be loaded after `jasmine.js` and `jasmine_html.js`, but before any project source files or spec files are loaded. Thus this file can also be used to customize Jasmine for a project. + + If a project is using Jasmine via the standalone distribution, this file can be customized directly. If a project is using Jasmine via the [Ruby gem][jasmine-gem], this file can be copied into the support directory via `jasmine copy_boot_js`. Other environments (e.g., Python) will have different mechanisms. + + The location of `boot.js` can be specified and/or overridden in `jasmine.yml`. + + [jasmine-gem]: http://github.com/pivotal/jasmine-gem + */ + +(function() { + + /** + * ## Require & Instantiate + * + * Require Jasmine's core files. Specifically, this requires and attaches all of Jasmine's code to the `jasmine` reference. + */ + window.jasmine = jasmineRequire.core(jasmineRequire); + + /** + * Since this is being run in a browser and the results should populate to an HTML page, require the HTML-specific Jasmine code, injecting the same reference. + */ + jasmineRequire.html(jasmine); + + /** + * Create the Jasmine environment. This is used to run all specs in a project. + */ + var env = jasmine.getEnv(); + + /** + * ## The Global Interface + * + * Build up the functions that will be exposed as the Jasmine public interface. A project can customize, rename or alias any of these functions as desired, provided the implementation remains unchanged. + */ + var jasmineInterface = jasmineRequire.interface(jasmine, env); + + /** + * Add all of the Jasmine global/public interface to the proper global, so a project can use the public interface directly. For example, calling `describe` in specs instead of `jasmine.getEnv().describe`. + */ + if (typeof window == "undefined" && typeof exports == "object") { + extend(exports, jasmineInterface); + } else { + extend(window, jasmineInterface); + } + + /** + * ## Runner Parameters + * + * More browser specific code - wrap the query string in an object and to allow for getting/setting parameters from the runner user interface. + */ + + var queryString = new jasmine.QueryString({ + getWindowLocation: function() { return window.location; } + }); + + var catchingExceptions = queryString.getParam("catch"); + env.catchExceptions(typeof catchingExceptions === "undefined" ? true : catchingExceptions); + + /** + * ## Reporters + * The `HtmlReporter` builds all of the HTML UI for the runner page. This reporter paints the dots, stars, and x's for specs, as well as all spec names and all failures (if any). + */ + var htmlReporter = new jasmine.HtmlReporter({ + env: env, + onRaiseExceptionsClick: function() { queryString.setParam("catch", !env.catchingExceptions()); }, + getContainer: function() { return document.body; }, + createElement: function() { return document.createElement.apply(document, arguments); }, + createTextNode: function() { return document.createTextNode.apply(document, arguments); }, + timer: new jasmine.Timer() + }); + + /** + * The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript. + */ + env.addReporter(jasmineInterface.jsApiReporter); + env.addReporter(htmlReporter); + + /** + * Filter which specs will be run by matching the start of the full name against the `spec` query param. + */ + var specFilter = new jasmine.HtmlSpecFilter({ + filterString: function() { return queryString.getParam("spec"); } + }); + + env.specFilter = function(spec) { + return specFilter.matches(spec.getFullName()); + }; + + /** + * Setting up timing functions to be able to be overridden. Certain browsers (Safari, IE 8, phantomjs) require this hack. + */ + window.setTimeout = window.setTimeout; + window.setInterval = window.setInterval; + window.clearTimeout = window.clearTimeout; + window.clearInterval = window.clearInterval; + + /** + * ## Execution + * + * Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded. + */ + var currentWindowOnload = window.onload; + + window.onload = function() { + if (currentWindowOnload) { + currentWindowOnload(); + } + htmlReporter.initialize(); + env.execute(); + }; + + /** + * Helper function for readability above. + */ + function extend(destination, source) { + for (var property in source) destination[property] = source[property]; + return destination; + } + +}()); diff --git a/specs/jasmine-2.1.3/console.js b/specs/jasmine-2.1.3/console.js new file mode 100755 index 0000000000..a65876e911 --- /dev/null +++ b/specs/jasmine-2.1.3/console.js @@ -0,0 +1,190 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +function getJasmineRequireObj() { + if (typeof module !== 'undefined' && module.exports) { + return exports; + } else { + window.jasmineRequire = window.jasmineRequire || {}; + return window.jasmineRequire; + } +} + +getJasmineRequireObj().console = function(jRequire, j$) { + j$.ConsoleReporter = jRequire.ConsoleReporter(); +}; + +getJasmineRequireObj().ConsoleReporter = function() { + + var noopTimer = { + start: function(){}, + elapsed: function(){ return 0; } + }; + + function ConsoleReporter(options) { + var print = options.print, + showColors = options.showColors || false, + onComplete = options.onComplete || function() {}, + timer = options.timer || noopTimer, + specCount, + failureCount, + failedSpecs = [], + pendingCount, + ansi = { + green: '\x1B[32m', + red: '\x1B[31m', + yellow: '\x1B[33m', + none: '\x1B[0m' + }, + failedSuites = []; + + print('ConsoleReporter is deprecated and will be removed in a future version.'); + + this.jasmineStarted = function() { + specCount = 0; + failureCount = 0; + pendingCount = 0; + print('Started'); + printNewline(); + timer.start(); + }; + + this.jasmineDone = function() { + printNewline(); + for (var i = 0; i < failedSpecs.length; i++) { + specFailureDetails(failedSpecs[i]); + } + + if(specCount > 0) { + printNewline(); + + var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' + + failureCount + ' ' + plural('failure', failureCount); + + if (pendingCount) { + specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount); + } + + print(specCounts); + } else { + print('No specs found'); + } + + printNewline(); + var seconds = timer.elapsed() / 1000; + print('Finished in ' + seconds + ' ' + plural('second', seconds)); + printNewline(); + + for(i = 0; i < failedSuites.length; i++) { + suiteFailureDetails(failedSuites[i]); + } + + onComplete(failureCount === 0); + }; + + this.specDone = function(result) { + specCount++; + + if (result.status == 'pending') { + pendingCount++; + print(colored('yellow', '*')); + return; + } + + if (result.status == 'passed') { + print(colored('green', '.')); + return; + } + + if (result.status == 'failed') { + failureCount++; + failedSpecs.push(result); + print(colored('red', 'F')); + } + }; + + this.suiteDone = function(result) { + if (result.failedExpectations && result.failedExpectations.length > 0) { + failureCount++; + failedSuites.push(result); + } + }; + + return this; + + function printNewline() { + print('\n'); + } + + function colored(color, str) { + return showColors ? (ansi[color] + str + ansi.none) : str; + } + + function plural(str, count) { + return count == 1 ? str : str + 's'; + } + + function repeat(thing, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(thing); + } + return arr; + } + + function indent(str, spaces) { + var lines = (str || '').split('\n'); + var newArr = []; + for (var i = 0; i < lines.length; i++) { + newArr.push(repeat(' ', spaces).join('') + lines[i]); + } + return newArr.join('\n'); + } + + function specFailureDetails(result) { + printNewline(); + print(result.fullName); + + for (var i = 0; i < result.failedExpectations.length; i++) { + var failedExpectation = result.failedExpectations[i]; + printNewline(); + print(indent(failedExpectation.message, 2)); + print(indent(failedExpectation.stack, 2)); + } + + printNewline(); + } + + function suiteFailureDetails(result) { + for (var i = 0; i < result.failedExpectations.length; i++) { + printNewline(); + print(colored('red', 'An error was thrown in an afterAll')); + printNewline(); + print(colored('red', 'AfterAll ' + result.failedExpectations[i].message)); + + } + printNewline(); + } + } + + return ConsoleReporter; +}; diff --git a/specs/jasmine-2.1.3/jasmine-html.js b/specs/jasmine-2.1.3/jasmine-html.js new file mode 100755 index 0000000000..898108b77d --- /dev/null +++ b/specs/jasmine-2.1.3/jasmine-html.js @@ -0,0 +1,404 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +jasmineRequire.html = function(j$) { + j$.ResultsNode = jasmineRequire.ResultsNode(); + j$.HtmlReporter = jasmineRequire.HtmlReporter(j$); + j$.QueryString = jasmineRequire.QueryString(); + j$.HtmlSpecFilter = jasmineRequire.HtmlSpecFilter(); +}; + +jasmineRequire.HtmlReporter = function(j$) { + + var noopTimer = { + start: function() {}, + elapsed: function() { return 0; } + }; + + function HtmlReporter(options) { + var env = options.env || {}, + getContainer = options.getContainer, + createElement = options.createElement, + createTextNode = options.createTextNode, + onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {}, + timer = options.timer || noopTimer, + results = [], + specsExecuted = 0, + failureCount = 0, + pendingSpecCount = 0, + htmlReporterMain, + symbols, + failedSuites = []; + + this.initialize = function() { + clearPrior(); + htmlReporterMain = createDom('div', {className: 'jasmine_html-reporter'}, + createDom('div', {className: 'banner'}, + createDom('a', {className: 'title', href: 'http://jasmine.github.io/', target: '_blank'}), + createDom('span', {className: 'version'}, j$.version) + ), + createDom('ul', {className: 'symbol-summary'}), + createDom('div', {className: 'alert'}), + createDom('div', {className: 'results'}, + createDom('div', {className: 'failures'}) + ) + ); + getContainer().appendChild(htmlReporterMain); + + symbols = find('.symbol-summary'); + }; + + var totalSpecsDefined; + this.jasmineStarted = function(options) { + totalSpecsDefined = options.totalSpecsDefined || 0; + timer.start(); + }; + + var summary = createDom('div', {className: 'summary'}); + + var topResults = new j$.ResultsNode({}, '', null), + currentParent = topResults; + + this.suiteStarted = function(result) { + currentParent.addChild(result, 'suite'); + currentParent = currentParent.last(); + }; + + this.suiteDone = function(result) { + if (result.status == 'failed') { + failedSuites.push(result); + } + + if (currentParent == topResults) { + return; + } + + currentParent = currentParent.parent; + }; + + this.specStarted = function(result) { + currentParent.addChild(result, 'spec'); + }; + + var failures = []; + this.specDone = function(result) { + if(noExpectations(result) && typeof console !== 'undefined' && typeof console.error !== 'undefined') { + console.error('Spec \'' + result.fullName + '\' has no expectations.'); + } + + if (result.status != 'disabled') { + specsExecuted++; + } + + symbols.appendChild(createDom('li', { + className: noExpectations(result) ? 'empty' : result.status, + id: 'spec_' + result.id, + title: result.fullName + } + )); + + if (result.status == 'failed') { + failureCount++; + + var failure = + createDom('div', {className: 'spec-detail failed'}, + createDom('div', {className: 'description'}, + createDom('a', {title: result.fullName, href: specHref(result)}, result.fullName) + ), + createDom('div', {className: 'messages'}) + ); + var messages = failure.childNodes[1]; + + for (var i = 0; i < result.failedExpectations.length; i++) { + var expectation = result.failedExpectations[i]; + messages.appendChild(createDom('div', {className: 'result-message'}, expectation.message)); + messages.appendChild(createDom('div', {className: 'stack-trace'}, expectation.stack)); + } + + failures.push(failure); + } + + if (result.status == 'pending') { + pendingSpecCount++; + } + }; + + this.jasmineDone = function() { + var banner = find('.banner'); + banner.appendChild(createDom('span', {className: 'duration'}, 'finished in ' + timer.elapsed() / 1000 + 's')); + + var alert = find('.alert'); + + alert.appendChild(createDom('span', { className: 'exceptions' }, + createDom('label', { className: 'label', 'for': 'raise-exceptions' }, 'raise exceptions'), + createDom('input', { + className: 'raise', + id: 'raise-exceptions', + type: 'checkbox' + }) + )); + var checkbox = find('#raise-exceptions'); + + checkbox.checked = !env.catchingExceptions(); + checkbox.onclick = onRaiseExceptionsClick; + + if (specsExecuted < totalSpecsDefined) { + var skippedMessage = 'Ran ' + specsExecuted + ' of ' + totalSpecsDefined + ' specs - run all'; + alert.appendChild( + createDom('span', {className: 'bar skipped'}, + createDom('a', {href: '?', title: 'Run all specs'}, skippedMessage) + ) + ); + } + var statusBarMessage = ''; + var statusBarClassName = 'bar '; + + if (totalSpecsDefined > 0) { + statusBarMessage += pluralize('spec', specsExecuted) + ', ' + pluralize('failure', failureCount); + if (pendingSpecCount) { statusBarMessage += ', ' + pluralize('pending spec', pendingSpecCount); } + statusBarClassName += (failureCount > 0) ? 'failed' : 'passed'; + } else { + statusBarClassName += 'skipped'; + statusBarMessage += 'No specs found'; + } + + alert.appendChild(createDom('span', {className: statusBarClassName}, statusBarMessage)); + + for(i = 0; i < failedSuites.length; i++) { + var failedSuite = failedSuites[i]; + for(var j = 0; j < failedSuite.failedExpectations.length; j++) { + var errorBarMessage = 'AfterAll ' + failedSuite.failedExpectations[j].message; + var errorBarClassName = 'bar errored'; + alert.appendChild(createDom('span', {className: errorBarClassName}, errorBarMessage)); + } + } + + var results = find('.results'); + results.appendChild(summary); + + summaryList(topResults, summary); + + function summaryList(resultsTree, domParent) { + var specListNode; + for (var i = 0; i < resultsTree.children.length; i++) { + var resultNode = resultsTree.children[i]; + if (resultNode.type == 'suite') { + var suiteListNode = createDom('ul', {className: 'suite', id: 'suite-' + resultNode.result.id}, + createDom('li', {className: 'suite-detail'}, + createDom('a', {href: specHref(resultNode.result)}, resultNode.result.description) + ) + ); + + summaryList(resultNode, suiteListNode); + domParent.appendChild(suiteListNode); + } + if (resultNode.type == 'spec') { + if (domParent.getAttribute('class') != 'specs') { + specListNode = createDom('ul', {className: 'specs'}); + domParent.appendChild(specListNode); + } + var specDescription = resultNode.result.description; + if(noExpectations(resultNode.result)) { + specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription; + } + specListNode.appendChild( + createDom('li', { + className: resultNode.result.status, + id: 'spec-' + resultNode.result.id + }, + createDom('a', {href: specHref(resultNode.result)}, specDescription) + ) + ); + } + } + } + + if (failures.length) { + alert.appendChild( + createDom('span', {className: 'menu bar spec-list'}, + createDom('span', {}, 'Spec List | '), + createDom('a', {className: 'failures-menu', href: '#'}, 'Failures'))); + alert.appendChild( + createDom('span', {className: 'menu bar failure-list'}, + createDom('a', {className: 'spec-list-menu', href: '#'}, 'Spec List'), + createDom('span', {}, ' | Failures '))); + + find('.failures-menu').onclick = function() { + setMenuModeTo('failure-list'); + }; + find('.spec-list-menu').onclick = function() { + setMenuModeTo('spec-list'); + }; + + setMenuModeTo('failure-list'); + + var failureNode = find('.failures'); + for (var i = 0; i < failures.length; i++) { + failureNode.appendChild(failures[i]); + } + } + }; + + return this; + + function find(selector) { + return getContainer().querySelector('.jasmine_html-reporter ' + selector); + } + + function clearPrior() { + // return the reporter + var oldReporter = find(''); + + if(oldReporter) { + getContainer().removeChild(oldReporter); + } + } + + function createDom(type, attrs, childrenVarArgs) { + var el = createElement(type); + + for (var i = 2; i < arguments.length; i++) { + var child = arguments[i]; + + if (typeof child === 'string') { + el.appendChild(createTextNode(child)); + } else { + if (child) { + el.appendChild(child); + } + } + } + + for (var attr in attrs) { + if (attr == 'className') { + el[attr] = attrs[attr]; + } else { + el.setAttribute(attr, attrs[attr]); + } + } + + return el; + } + + function pluralize(singular, count) { + var word = (count == 1 ? singular : singular + 's'); + + return '' + count + ' ' + word; + } + + function specHref(result) { + return '?spec=' + encodeURIComponent(result.fullName); + } + + function setMenuModeTo(mode) { + htmlReporterMain.setAttribute('class', 'jasmine_html-reporter ' + mode); + } + + function noExpectations(result) { + return (result.failedExpectations.length + result.passedExpectations.length) === 0 && + result.status === 'passed'; + } + } + + return HtmlReporter; +}; + +jasmineRequire.HtmlSpecFilter = function() { + function HtmlSpecFilter(options) { + var filterString = options && options.filterString() && options.filterString().replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); + var filterPattern = new RegExp(filterString); + + this.matches = function(specName) { + return filterPattern.test(specName); + }; + } + + return HtmlSpecFilter; +}; + +jasmineRequire.ResultsNode = function() { + function ResultsNode(result, type, parent) { + this.result = result; + this.type = type; + this.parent = parent; + + this.children = []; + + this.addChild = function(result, type) { + this.children.push(new ResultsNode(result, type, this)); + }; + + this.last = function() { + return this.children[this.children.length - 1]; + }; + } + + return ResultsNode; +}; + +jasmineRequire.QueryString = function() { + function QueryString(options) { + + this.setParam = function(key, value) { + var paramMap = queryStringToParamMap(); + paramMap[key] = value; + options.getWindowLocation().search = toQueryString(paramMap); + }; + + this.getParam = function(key) { + return queryStringToParamMap()[key]; + }; + + return this; + + function toQueryString(paramMap) { + var qStrPairs = []; + for (var prop in paramMap) { + qStrPairs.push(encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop])); + } + return '?' + qStrPairs.join('&'); + } + + function queryStringToParamMap() { + var paramStr = options.getWindowLocation().search.substring(1), + params = [], + paramMap = {}; + + if (paramStr.length > 0) { + params = paramStr.split('&'); + for (var i = 0; i < params.length; i++) { + var p = params[i].split('='); + var value = decodeURIComponent(p[1]); + if (value === 'true' || value === 'false') { + value = JSON.parse(value); + } + paramMap[decodeURIComponent(p[0])] = value; + } + } + + return paramMap; + } + + } + + return QueryString; +}; diff --git a/specs/jasmine-2.1.3/jasmine.css b/specs/jasmine-2.1.3/jasmine.css new file mode 100755 index 0000000000..7ae5834879 --- /dev/null +++ b/specs/jasmine-2.1.3/jasmine.css @@ -0,0 +1,62 @@ +body { overflow-y: scroll; } + +.jasmine_html-reporter { background-color: #eeeeee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; } +.jasmine_html-reporter a { text-decoration: none; } +.jasmine_html-reporter a:hover { text-decoration: underline; } +.jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; } +.jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; } +.jasmine_html-reporter .banner { position: relative; } +.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=') no-repeat, none; -webkit-background-size: 100%; -moz-background-size: 100%; -o-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; } +.jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; } +.jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; } +.jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; } +.jasmine_html-reporter .version { color: #aaaaaa; } +.jasmine_html-reporter .banner { margin-top: 14px; } +.jasmine_html-reporter .duration { color: #aaaaaa; float: right; } +.jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; } +.jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; } +.jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.passed:before { color: #007069; content: "\02022"; } +.jasmine_html-reporter .symbol-summary li.failed { line-height: 9px; } +.jasmine_html-reporter .symbol-summary li.failed:before { color: #ca3a11; content: "\d7"; font-weight: bold; margin-left: -1px; } +.jasmine_html-reporter .symbol-summary li.disabled { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.disabled:before { color: #bababa; content: "\02022"; } +.jasmine_html-reporter .symbol-summary li.pending { line-height: 17px; } +.jasmine_html-reporter .symbol-summary li.pending:before { color: #ba9d37; content: "*"; } +.jasmine_html-reporter .symbol-summary li.empty { font-size: 14px; } +.jasmine_html-reporter .symbol-summary li.empty:before { color: #ba9d37; content: "\02022"; } +.jasmine_html-reporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; } +.jasmine_html-reporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; } +.jasmine_html-reporter .bar.failed { background-color: #ca3a11; } +.jasmine_html-reporter .bar.passed { background-color: #007069; } +.jasmine_html-reporter .bar.skipped { background-color: #bababa; } +.jasmine_html-reporter .bar.errored { background-color: #ca3a11; } +.jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaaaaa; } +.jasmine_html-reporter .bar.menu a { color: #333333; } +.jasmine_html-reporter .bar a { color: white; } +.jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; } +.jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; } +.jasmine_html-reporter .running-alert { background-color: #666666; } +.jasmine_html-reporter .results { margin-top: 14px; } +.jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; } +.jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; } +.jasmine_html-reporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; } +.jasmine_html-reporter.showDetails .summary { display: none; } +.jasmine_html-reporter.showDetails #details { display: block; } +.jasmine_html-reporter .summaryMenuItem { font-weight: bold; text-decoration: underline; } +.jasmine_html-reporter .summary { margin-top: 14px; } +.jasmine_html-reporter .summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; } +.jasmine_html-reporter .summary ul.suite { margin-top: 7px; margin-bottom: 7px; } +.jasmine_html-reporter .summary li.passed a { color: #007069; } +.jasmine_html-reporter .summary li.failed a { color: #ca3a11; } +.jasmine_html-reporter .summary li.empty a { color: #ba9d37; } +.jasmine_html-reporter .summary li.pending a { color: #ba9d37; } +.jasmine_html-reporter .description + .suite { margin-top: 0; } +.jasmine_html-reporter .suite { margin-top: 14px; } +.jasmine_html-reporter .suite a { color: #333333; } +.jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; } +.jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; } +.jasmine_html-reporter .failures .spec-detail .description a { color: white; } +.jasmine_html-reporter .result-message { padding-top: 14px; color: #333333; white-space: pre; } +.jasmine_html-reporter .result-message span.result { display: block; } +.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; } diff --git a/specs/jasmine-2.1.3/jasmine.js b/specs/jasmine-2.1.3/jasmine.js new file mode 100755 index 0000000000..1ccb640964 --- /dev/null +++ b/specs/jasmine-2.1.3/jasmine.js @@ -0,0 +1,2908 @@ +/* +Copyright (c) 2008-2014 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +getJasmineRequireObj = (function (jasmineGlobal) { + var jasmineRequire; + + if (typeof module !== 'undefined' && module.exports) { + jasmineGlobal = global; + jasmineRequire = exports; + } else { + jasmineRequire = jasmineGlobal.jasmineRequire = jasmineGlobal.jasmineRequire || {}; + } + + function getJasmineRequire() { + return jasmineRequire; + } + + getJasmineRequire().core = function(jRequire) { + var j$ = {}; + + jRequire.base(j$, jasmineGlobal); + j$.util = jRequire.util(); + j$.Any = jRequire.Any(); + j$.CallTracker = jRequire.CallTracker(); + j$.MockDate = jRequire.MockDate(); + j$.Clock = jRequire.Clock(); + j$.DelayedFunctionScheduler = jRequire.DelayedFunctionScheduler(); + j$.Env = jRequire.Env(j$); + j$.ExceptionFormatter = jRequire.ExceptionFormatter(); + j$.Expectation = jRequire.Expectation(); + j$.buildExpectationResult = jRequire.buildExpectationResult(); + j$.JsApiReporter = jRequire.JsApiReporter(); + j$.matchersUtil = jRequire.matchersUtil(j$); + j$.ObjectContaining = jRequire.ObjectContaining(j$); + j$.pp = jRequire.pp(j$); + j$.QueueRunner = jRequire.QueueRunner(j$); + j$.ReportDispatcher = jRequire.ReportDispatcher(); + j$.Spec = jRequire.Spec(j$); + j$.SpyRegistry = jRequire.SpyRegistry(j$); + j$.SpyStrategy = jRequire.SpyStrategy(); + j$.Suite = jRequire.Suite(); + j$.Timer = jRequire.Timer(); + j$.version = jRequire.version(); + + j$.matchers = jRequire.requireMatchers(jRequire, j$); + + return j$; + }; + + return getJasmineRequire; +})(this); + +getJasmineRequireObj().requireMatchers = function(jRequire, j$) { + var availableMatchers = [ + 'toBe', + 'toBeCloseTo', + 'toBeDefined', + 'toBeFalsy', + 'toBeGreaterThan', + 'toBeLessThan', + 'toBeNaN', + 'toBeNull', + 'toBeTruthy', + 'toBeUndefined', + 'toContain', + 'toEqual', + 'toHaveBeenCalled', + 'toHaveBeenCalledWith', + 'toMatch', + 'toThrow', + 'toThrowError' + ], + matchers = {}; + + for (var i = 0; i < availableMatchers.length; i++) { + var name = availableMatchers[i]; + matchers[name] = jRequire[name](j$); + } + + return matchers; +}; + +getJasmineRequireObj().base = function(j$, jasmineGlobal) { + j$.unimplementedMethod_ = function() { + throw new Error('unimplemented method'); + }; + + j$.MAX_PRETTY_PRINT_DEPTH = 40; + j$.MAX_PRETTY_PRINT_ARRAY_LENGTH = 100; + j$.DEFAULT_TIMEOUT_INTERVAL = 5000; + + j$.getGlobal = function() { + return jasmineGlobal; + }; + + j$.getEnv = function(options) { + var env = j$.currentEnv_ = j$.currentEnv_ || new j$.Env(options); + //jasmine. singletons in here (setTimeout blah blah). + return env; + }; + + j$.isArray_ = function(value) { + return j$.isA_('Array', value); + }; + + j$.isString_ = function(value) { + return j$.isA_('String', value); + }; + + j$.isNumber_ = function(value) { + return j$.isA_('Number', value); + }; + + j$.isA_ = function(typeName, value) { + return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; + }; + + j$.isDomNode = function(obj) { + return obj.nodeType > 0; + }; + + j$.any = function(clazz) { + return new j$.Any(clazz); + }; + + j$.objectContaining = function(sample) { + return new j$.ObjectContaining(sample); + }; + + j$.createSpy = function(name, originalFn) { + + var spyStrategy = new j$.SpyStrategy({ + name: name, + fn: originalFn, + getSpy: function() { return spy; } + }), + callTracker = new j$.CallTracker(), + spy = function() { + var callData = { + object: this, + args: Array.prototype.slice.apply(arguments) + }; + + callTracker.track(callData); + var returnValue = spyStrategy.exec.apply(this, arguments); + callData.returnValue = returnValue; + + return returnValue; + }; + + for (var prop in originalFn) { + if (prop === 'and' || prop === 'calls') { + throw new Error('Jasmine spies would overwrite the \'and\' and \'calls\' properties on the object being spied upon'); + } + + spy[prop] = originalFn[prop]; + } + + spy.and = spyStrategy; + spy.calls = callTracker; + + return spy; + }; + + j$.isSpy = function(putativeSpy) { + if (!putativeSpy) { + return false; + } + return putativeSpy.and instanceof j$.SpyStrategy && + putativeSpy.calls instanceof j$.CallTracker; + }; + + j$.createSpyObj = function(baseName, methodNames) { + if (!j$.isArray_(methodNames) || methodNames.length === 0) { + throw 'createSpyObj requires a non-empty array of method names to create spies for'; + } + var obj = {}; + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = j$.createSpy(baseName + '.' + methodNames[i]); + } + return obj; + }; +}; + +getJasmineRequireObj().util = function() { + + var util = {}; + + util.inherit = function(childClass, parentClass) { + var Subclass = function() { + }; + Subclass.prototype = parentClass.prototype; + childClass.prototype = new Subclass(); + }; + + util.htmlEscape = function(str) { + if (!str) { + return str; + } + return str.replace(/&/g, '&') + .replace(//g, '>'); + }; + + util.argsToArray = function(args) { + var arrayOfArgs = []; + for (var i = 0; i < args.length; i++) { + arrayOfArgs.push(args[i]); + } + return arrayOfArgs; + }; + + util.isUndefined = function(obj) { + return obj === void 0; + }; + + util.arrayContains = function(array, search) { + var i = array.length; + while (i--) { + if (array[i] === search) { + return true; + } + } + return false; + }; + + util.clone = function(obj) { + if (Object.prototype.toString.apply(obj) === '[object Array]') { + return obj.slice(); + } + + var cloned = {}; + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + cloned[prop] = obj[prop]; + } + } + + return cloned; + }; + + return util; +}; + +getJasmineRequireObj().Spec = function(j$) { + function Spec(attrs) { + this.expectationFactory = attrs.expectationFactory; + this.resultCallback = attrs.resultCallback || function() {}; + this.id = attrs.id; + this.description = attrs.description || ''; + this.queueableFn = attrs.queueableFn; + this.beforeAndAfterFns = attrs.beforeAndAfterFns || function() { return {befores: [], afters: []}; }; + this.userContext = attrs.userContext || function() { return {}; }; + this.onStart = attrs.onStart || function() {}; + this.getSpecName = attrs.getSpecName || function() { return ''; }; + this.expectationResultFactory = attrs.expectationResultFactory || function() { }; + this.queueRunnerFactory = attrs.queueRunnerFactory || function() {}; + this.catchingExceptions = attrs.catchingExceptions || function() { return true; }; + + if (!this.queueableFn.fn) { + this.pend(); + } + + this.result = { + id: this.id, + description: this.description, + fullName: this.getFullName(), + failedExpectations: [], + passedExpectations: [] + }; + } + + Spec.prototype.addExpectationResult = function(passed, data) { + var expectationResult = this.expectationResultFactory(data); + if (passed) { + this.result.passedExpectations.push(expectationResult); + } else { + this.result.failedExpectations.push(expectationResult); + } + }; + + Spec.prototype.expect = function(actual) { + return this.expectationFactory(actual, this); + }; + + Spec.prototype.execute = function(onComplete) { + var self = this; + + this.onStart(this); + + if (this.markedPending || this.disabled) { + complete(); + return; + } + + var fns = this.beforeAndAfterFns(); + var allFns = fns.befores.concat(this.queueableFn).concat(fns.afters); + + this.queueRunnerFactory({ + queueableFns: allFns, + onException: function() { self.onException.apply(self, arguments); }, + onComplete: complete, + userContext: this.userContext() + }); + + function complete() { + self.result.status = self.status(); + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + }; + + Spec.prototype.onException = function onException(e) { + if (Spec.isPendingSpecException(e)) { + this.pend(); + return; + } + + this.addExpectationResult(false, { + matcherName: '', + passed: false, + expected: '', + actual: '', + error: e + }); + }; + + Spec.prototype.disable = function() { + this.disabled = true; + }; + + Spec.prototype.pend = function() { + this.markedPending = true; + }; + + Spec.prototype.status = function() { + if (this.disabled) { + return 'disabled'; + } + + if (this.markedPending) { + return 'pending'; + } + + if (this.result.failedExpectations.length > 0) { + return 'failed'; + } else { + return 'passed'; + } + }; + + Spec.prototype.isExecutable = function() { + return !this.disabled && !this.markedPending; + }; + + Spec.prototype.getFullName = function() { + return this.getSpecName(this); + }; + + Spec.pendingSpecExceptionMessage = '=> marked Pending'; + + Spec.isPendingSpecException = function(e) { + return !!(e && e.toString && e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1); + }; + + return Spec; +}; + +if (typeof window == void 0 && typeof exports == 'object') { + exports.Spec = jasmineRequire.Spec; +} + +getJasmineRequireObj().Env = function(j$) { + function Env(options) { + options = options || {}; + + var self = this; + var global = options.global || j$.getGlobal(); + + var totalSpecsDefined = 0; + + var catchExceptions = true; + + var realSetTimeout = j$.getGlobal().setTimeout; + var realClearTimeout = j$.getGlobal().clearTimeout; + this.clock = new j$.Clock(global, new j$.DelayedFunctionScheduler(), new j$.MockDate(global)); + + var runnableLookupTable = {}; + var runnableResources = {}; + + var currentSpec = null; + var currentlyExecutingSuites = []; + var currentDeclarationSuite = null; + + var currentSuite = function() { + return currentlyExecutingSuites[currentlyExecutingSuites.length - 1]; + }; + + var currentRunnable = function() { + return currentSpec || currentSuite(); + }; + + var reporter = new j$.ReportDispatcher([ + 'jasmineStarted', + 'jasmineDone', + 'suiteStarted', + 'suiteDone', + 'specStarted', + 'specDone' + ]); + + this.specFilter = function() { + return true; + }; + + this.addCustomEqualityTester = function(tester) { + if(!currentRunnable()) { + throw new Error('Custom Equalities must be added in a before function or a spec'); + } + runnableResources[currentRunnable().id].customEqualityTesters.push(tester); + }; + + this.addMatchers = function(matchersToAdd) { + if(!currentRunnable()) { + throw new Error('Matchers must be added in a before function or a spec'); + } + var customMatchers = runnableResources[currentRunnable().id].customMatchers; + for (var matcherName in matchersToAdd) { + customMatchers[matcherName] = matchersToAdd[matcherName]; + } + }; + + j$.Expectation.addCoreMatchers(j$.matchers); + + var nextSpecId = 0; + var getNextSpecId = function() { + return 'spec' + nextSpecId++; + }; + + var nextSuiteId = 0; + var getNextSuiteId = function() { + return 'suite' + nextSuiteId++; + }; + + var expectationFactory = function(actual, spec) { + return j$.Expectation.Factory({ + util: j$.matchersUtil, + customEqualityTesters: runnableResources[spec.id].customEqualityTesters, + customMatchers: runnableResources[spec.id].customMatchers, + actual: actual, + addExpectationResult: addExpectationResult + }); + + function addExpectationResult(passed, result) { + return spec.addExpectationResult(passed, result); + } + }; + + var defaultResourcesForRunnable = function(id, parentRunnableId) { + var resources = {spies: [], customEqualityTesters: [], customMatchers: {}}; + + if(runnableResources[parentRunnableId]){ + resources.customEqualityTesters = j$.util.clone(runnableResources[parentRunnableId].customEqualityTesters); + resources.customMatchers = j$.util.clone(runnableResources[parentRunnableId].customMatchers); + } + + runnableResources[id] = resources; + }; + + var clearResourcesForRunnable = function(id) { + spyRegistry.clearSpies(); + delete runnableResources[id]; + }; + + var beforeAndAfterFns = function(suite, runnablesExplictlySet) { + return function() { + var befores = [], + afters = [], + beforeAlls = [], + afterAlls = []; + + while(suite) { + befores = befores.concat(suite.beforeFns); + afters = afters.concat(suite.afterFns); + + if (runnablesExplictlySet()) { + beforeAlls = beforeAlls.concat(suite.beforeAllFns); + afterAlls = afterAlls.concat(suite.afterAllFns); + } + + suite = suite.parentSuite; + } + return { + befores: beforeAlls.reverse().concat(befores.reverse()), + afters: afters.concat(afterAlls) + }; + }; + }; + + var getSpecName = function(spec, suite) { + return suite.getFullName() + ' ' + spec.description; + }; + + // TODO: we may just be able to pass in the fn instead of wrapping here + var buildExpectationResult = j$.buildExpectationResult, + exceptionFormatter = new j$.ExceptionFormatter(), + expectationResultFactory = function(attrs) { + attrs.messageFormatter = exceptionFormatter.message; + attrs.stackFormatter = exceptionFormatter.stack; + + return buildExpectationResult(attrs); + }; + + // TODO: fix this naming, and here's where the value comes in + this.catchExceptions = function(value) { + catchExceptions = !!value; + return catchExceptions; + }; + + this.catchingExceptions = function() { + return catchExceptions; + }; + + var maximumSpecCallbackDepth = 20; + var currentSpecCallbackDepth = 0; + + function clearStack(fn) { + currentSpecCallbackDepth++; + if (currentSpecCallbackDepth >= maximumSpecCallbackDepth) { + currentSpecCallbackDepth = 0; + realSetTimeout(fn, 0); + } else { + fn(); + } + } + + var catchException = function(e) { + return j$.Spec.isPendingSpecException(e) || catchExceptions; + }; + + var queueRunnerFactory = function(options) { + options.catchException = catchException; + options.clearStack = options.clearStack || clearStack; + options.timer = {setTimeout: realSetTimeout, clearTimeout: realClearTimeout}; + options.fail = self.fail; + + new j$.QueueRunner(options).execute(); + }; + + var topSuite = new j$.Suite({ + env: this, + id: getNextSuiteId(), + description: 'Jasmine__TopLevel__Suite', + queueRunner: queueRunnerFactory + }); + runnableLookupTable[topSuite.id] = topSuite; + defaultResourcesForRunnable(topSuite.id); + currentDeclarationSuite = topSuite; + + this.topSuite = function() { + return topSuite; + }; + + this.execute = function(runnablesToRun) { + if(runnablesToRun) { + runnablesExplictlySet = true; + } else if (focusedRunnables.length) { + runnablesExplictlySet = true; + runnablesToRun = focusedRunnables; + } else { + runnablesToRun = [topSuite.id]; + } + + var allFns = []; + for(var i = 0; i < runnablesToRun.length; i++) { + var runnable = runnableLookupTable[runnablesToRun[i]]; + allFns.push((function(runnable) { return { fn: function(done) { runnable.execute(done); } }; })(runnable)); + } + + reporter.jasmineStarted({ + totalSpecsDefined: totalSpecsDefined + }); + + queueRunnerFactory({queueableFns: allFns, onComplete: reporter.jasmineDone}); + }; + + this.addReporter = function(reporterToAdd) { + reporter.addReporter(reporterToAdd); + }; + + var spyRegistry = new j$.SpyRegistry({currentSpies: function() { + if(!currentRunnable()) { + throw new Error('Spies must be created in a before function or a spec'); + } + return runnableResources[currentRunnable().id].spies; + }}); + + this.spyOn = function() { + return spyRegistry.spyOn.apply(spyRegistry, arguments); + }; + + var suiteFactory = function(description) { + var suite = new j$.Suite({ + env: self, + id: getNextSuiteId(), + description: description, + parentSuite: currentDeclarationSuite, + queueRunner: queueRunnerFactory, + onStart: suiteStarted, + expectationFactory: expectationFactory, + expectationResultFactory: expectationResultFactory, + resultCallback: function(attrs) { + if (!suite.disabled) { + clearResourcesForRunnable(suite.id); + currentlyExecutingSuites.pop(); + } + reporter.suiteDone(attrs); + } + }); + + runnableLookupTable[suite.id] = suite; + return suite; + + function suiteStarted(suite) { + currentlyExecutingSuites.push(suite); + defaultResourcesForRunnable(suite.id, suite.parentSuite.id); + reporter.suiteStarted(suite.result); + } + }; + + this.describe = function(description, specDefinitions) { + var suite = suiteFactory(description); + addSpecsToSuite(suite, specDefinitions); + return suite; + }; + + this.xdescribe = function(description, specDefinitions) { + var suite = this.describe(description, specDefinitions); + suite.disable(); + return suite; + }; + + var focusedRunnables = []; + + this.fdescribe = function(description, specDefinitions) { + var suite = suiteFactory(description); + suite.isFocused = true; + + focusedRunnables.push(suite.id); + unfocusAncestor(); + addSpecsToSuite(suite, specDefinitions); + + return suite; + }; + + function addSpecsToSuite(suite, specDefinitions) { + var parentSuite = currentDeclarationSuite; + parentSuite.addChild(suite); + currentDeclarationSuite = suite; + + var declarationError = null; + try { + specDefinitions.call(suite); + } catch (e) { + declarationError = e; + } + + if (declarationError) { + self.it('encountered a declaration exception', function() { + throw declarationError; + }); + } + + currentDeclarationSuite = parentSuite; + } + + function findFocusedAncestor(suite) { + while (suite) { + if (suite.isFocused) { + return suite.id; + } + suite = suite.parentSuite; + } + + return null; + } + + function unfocusAncestor() { + var focusedAncestor = findFocusedAncestor(currentDeclarationSuite); + if (focusedAncestor) { + for (var i = 0; i < focusedRunnables.length; i++) { + if (focusedRunnables[i] === focusedAncestor) { + focusedRunnables.splice(i, 1); + break; + } + } + } + } + + var runnablesExplictlySet = false; + + var runnablesExplictlySetGetter = function(){ + return runnablesExplictlySet; + }; + + var specFactory = function(description, fn, suite, timeout) { + totalSpecsDefined++; + var spec = new j$.Spec({ + id: getNextSpecId(), + beforeAndAfterFns: beforeAndAfterFns(suite, runnablesExplictlySetGetter), + expectationFactory: expectationFactory, + resultCallback: specResultCallback, + getSpecName: function(spec) { + return getSpecName(spec, suite); + }, + onStart: specStarted, + description: description, + expectationResultFactory: expectationResultFactory, + queueRunnerFactory: queueRunnerFactory, + userContext: function() { return suite.clonedSharedUserContext(); }, + queueableFn: { + fn: fn, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + } + }); + + runnableLookupTable[spec.id] = spec; + + if (!self.specFilter(spec)) { + spec.disable(); + } + + return spec; + + function specResultCallback(result) { + clearResourcesForRunnable(spec.id); + currentSpec = null; + reporter.specDone(result); + } + + function specStarted(spec) { + currentSpec = spec; + defaultResourcesForRunnable(spec.id, suite.id); + reporter.specStarted(spec.result); + } + }; + + this.it = function(description, fn, timeout) { + var spec = specFactory(description, fn, currentDeclarationSuite, timeout); + currentDeclarationSuite.addChild(spec); + return spec; + }; + + this.xit = function() { + var spec = this.it.apply(this, arguments); + spec.pend(); + return spec; + }; + + this.fit = function(){ + var spec = this.it.apply(this, arguments); + + focusedRunnables.push(spec.id); + unfocusAncestor(); + return spec; + }; + + this.expect = function(actual) { + if (!currentRunnable()) { + throw new Error('\'expect\' was used when there was no current spec, this could be because an asynchronous test timed out'); + } + + return currentRunnable().expect(actual); + }; + + this.beforeEach = function(beforeEachFunction, timeout) { + currentDeclarationSuite.beforeEach({ + fn: beforeEachFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.beforeAll = function(beforeAllFunction, timeout) { + currentDeclarationSuite.beforeAll({ + fn: beforeAllFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.afterEach = function(afterEachFunction, timeout) { + currentDeclarationSuite.afterEach({ + fn: afterEachFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.afterAll = function(afterAllFunction, timeout) { + currentDeclarationSuite.afterAll({ + fn: afterAllFunction, + timeout: function() { return timeout || j$.DEFAULT_TIMEOUT_INTERVAL; } + }); + }; + + this.pending = function() { + throw j$.Spec.pendingSpecExceptionMessage; + }; + + this.fail = function(error) { + var message = 'Failed'; + if (error) { + message += ': '; + message += error.message || error; + } + + currentRunnable().addExpectationResult(false, { + matcherName: '', + passed: false, + expected: '', + actual: '', + message: message + }); + }; + } + + return Env; +}; + +getJasmineRequireObj().JsApiReporter = function() { + + var noopTimer = { + start: function(){}, + elapsed: function(){ return 0; } + }; + + function JsApiReporter(options) { + var timer = options.timer || noopTimer, + status = 'loaded'; + + this.started = false; + this.finished = false; + + this.jasmineStarted = function() { + this.started = true; + status = 'started'; + timer.start(); + }; + + var executionTime; + + this.jasmineDone = function() { + this.finished = true; + executionTime = timer.elapsed(); + status = 'done'; + }; + + this.status = function() { + return status; + }; + + var suites = [], + suites_hash = {}; + + this.suiteStarted = function(result) { + suites_hash[result.id] = result; + }; + + this.suiteDone = function(result) { + storeSuite(result); + }; + + this.suiteResults = function(index, length) { + return suites.slice(index, index + length); + }; + + function storeSuite(result) { + suites.push(result); + suites_hash[result.id] = result; + } + + this.suites = function() { + return suites_hash; + }; + + var specs = []; + + this.specDone = function(result) { + specs.push(result); + }; + + this.specResults = function(index, length) { + return specs.slice(index, index + length); + }; + + this.specs = function() { + return specs; + }; + + this.executionTime = function() { + return executionTime; + }; + + } + + return JsApiReporter; +}; + +getJasmineRequireObj().Any = function() { + + function Any(expectedObject) { + this.expectedObject = expectedObject; + } + + Any.prototype.jasmineMatches = function(other) { + if (this.expectedObject == String) { + return typeof other == 'string' || other instanceof String; + } + + if (this.expectedObject == Number) { + return typeof other == 'number' || other instanceof Number; + } + + if (this.expectedObject == Function) { + return typeof other == 'function' || other instanceof Function; + } + + if (this.expectedObject == Object) { + return typeof other == 'object'; + } + + if (this.expectedObject == Boolean) { + return typeof other == 'boolean'; + } + + return other instanceof this.expectedObject; + }; + + Any.prototype.jasmineToString = function() { + return ''; + }; + + return Any; +}; + +getJasmineRequireObj().CallTracker = function() { + + function CallTracker() { + var calls = []; + + this.track = function(context) { + calls.push(context); + }; + + this.any = function() { + return !!calls.length; + }; + + this.count = function() { + return calls.length; + }; + + this.argsFor = function(index) { + var call = calls[index]; + return call ? call.args : []; + }; + + this.all = function() { + return calls; + }; + + this.allArgs = function() { + var callArgs = []; + for(var i = 0; i < calls.length; i++){ + callArgs.push(calls[i].args); + } + + return callArgs; + }; + + this.first = function() { + return calls[0]; + }; + + this.mostRecent = function() { + return calls[calls.length - 1]; + }; + + this.reset = function() { + calls = []; + }; + } + + return CallTracker; +}; + +getJasmineRequireObj().Clock = function() { + function Clock(global, delayedFunctionScheduler, mockDate) { + var self = this, + realTimingFunctions = { + setTimeout: global.setTimeout, + clearTimeout: global.clearTimeout, + setInterval: global.setInterval, + clearInterval: global.clearInterval + }, + fakeTimingFunctions = { + setTimeout: setTimeout, + clearTimeout: clearTimeout, + setInterval: setInterval, + clearInterval: clearInterval + }, + installed = false, + timer; + + + self.install = function() { + replace(global, fakeTimingFunctions); + timer = fakeTimingFunctions; + installed = true; + + return self; + }; + + self.uninstall = function() { + delayedFunctionScheduler.reset(); + mockDate.uninstall(); + replace(global, realTimingFunctions); + + timer = realTimingFunctions; + installed = false; + }; + + self.mockDate = function(initialDate) { + mockDate.install(initialDate); + }; + + self.setTimeout = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error('IE < 9 cannot support extra params to setTimeout without a polyfill'); + } + return timer.setTimeout(fn, delay); + } + return Function.prototype.apply.apply(timer.setTimeout, [global, arguments]); + }; + + self.setInterval = function(fn, delay, params) { + if (legacyIE()) { + if (arguments.length > 2) { + throw new Error('IE < 9 cannot support extra params to setInterval without a polyfill'); + } + return timer.setInterval(fn, delay); + } + return Function.prototype.apply.apply(timer.setInterval, [global, arguments]); + }; + + self.clearTimeout = function(id) { + return Function.prototype.call.apply(timer.clearTimeout, [global, id]); + }; + + self.clearInterval = function(id) { + return Function.prototype.call.apply(timer.clearInterval, [global, id]); + }; + + self.tick = function(millis) { + if (installed) { + mockDate.tick(millis); + delayedFunctionScheduler.tick(millis); + } else { + throw new Error('Mock clock is not installed, use jasmine.clock().install()'); + } + }; + + return self; + + function legacyIE() { + //if these methods are polyfilled, apply will be present + return !(realTimingFunctions.setTimeout || realTimingFunctions.setInterval).apply; + } + + function replace(dest, source) { + for (var prop in source) { + dest[prop] = source[prop]; + } + } + + function setTimeout(fn, delay) { + return delayedFunctionScheduler.scheduleFunction(fn, delay, argSlice(arguments, 2)); + } + + function clearTimeout(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function setInterval(fn, interval) { + return delayedFunctionScheduler.scheduleFunction(fn, interval, argSlice(arguments, 2), true); + } + + function clearInterval(id) { + return delayedFunctionScheduler.removeFunctionWithId(id); + } + + function argSlice(argsObj, n) { + return Array.prototype.slice.call(argsObj, n); + } + } + + return Clock; +}; + +getJasmineRequireObj().DelayedFunctionScheduler = function() { + function DelayedFunctionScheduler() { + var self = this; + var scheduledLookup = []; + var scheduledFunctions = {}; + var currentTime = 0; + var delayedFnCount = 0; + + self.tick = function(millis) { + millis = millis || 0; + var endTime = currentTime + millis; + + runScheduledFunctions(endTime); + currentTime = endTime; + }; + + self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) { + var f; + if (typeof(funcToCall) === 'string') { + /* jshint evil: true */ + f = function() { return eval(funcToCall); }; + /* jshint evil: false */ + } else { + f = funcToCall; + } + + millis = millis || 0; + timeoutKey = timeoutKey || ++delayedFnCount; + runAtMillis = runAtMillis || (currentTime + millis); + + var funcToSchedule = { + runAtMillis: runAtMillis, + funcToCall: f, + recurring: recurring, + params: params, + timeoutKey: timeoutKey, + millis: millis + }; + + if (runAtMillis in scheduledFunctions) { + scheduledFunctions[runAtMillis].push(funcToSchedule); + } else { + scheduledFunctions[runAtMillis] = [funcToSchedule]; + scheduledLookup.push(runAtMillis); + scheduledLookup.sort(function (a, b) { + return a - b; + }); + } + + return timeoutKey; + }; + + self.removeFunctionWithId = function(timeoutKey) { + for (var runAtMillis in scheduledFunctions) { + var funcs = scheduledFunctions[runAtMillis]; + var i = indexOfFirstToPass(funcs, function (func) { + return func.timeoutKey === timeoutKey; + }); + + if (i > -1) { + if (funcs.length === 1) { + delete scheduledFunctions[runAtMillis]; + deleteFromLookup(runAtMillis); + } else { + funcs.splice(i, 1); + } + + // intervals get rescheduled when executed, so there's never more + // than a single scheduled function with a given timeoutKey + break; + } + } + }; + + self.reset = function() { + currentTime = 0; + scheduledLookup = []; + scheduledFunctions = {}; + delayedFnCount = 0; + }; + + return self; + + function indexOfFirstToPass(array, testFn) { + var index = -1; + + for (var i = 0; i < array.length; ++i) { + if (testFn(array[i])) { + index = i; + break; + } + } + + return index; + } + + function deleteFromLookup(key) { + var value = Number(key); + var i = indexOfFirstToPass(scheduledLookup, function (millis) { + return millis === value; + }); + + if (i > -1) { + scheduledLookup.splice(i, 1); + } + } + + function reschedule(scheduledFn) { + self.scheduleFunction(scheduledFn.funcToCall, + scheduledFn.millis, + scheduledFn.params, + true, + scheduledFn.timeoutKey, + scheduledFn.runAtMillis + scheduledFn.millis); + } + + function runScheduledFunctions(endTime) { + if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) { + return; + } + + do { + currentTime = scheduledLookup.shift(); + + var funcsToRun = scheduledFunctions[currentTime]; + delete scheduledFunctions[currentTime]; + + for (var i = 0; i < funcsToRun.length; ++i) { + var funcToRun = funcsToRun[i]; + + if (funcToRun.recurring) { + reschedule(funcToRun); + } + + funcToRun.funcToCall.apply(null, funcToRun.params || []); + } + } while (scheduledLookup.length > 0 && + // checking first if we're out of time prevents setTimeout(0) + // scheduled in a funcToRun from forcing an extra iteration + currentTime !== endTime && + scheduledLookup[0] <= endTime); + } + } + + return DelayedFunctionScheduler; +}; + +getJasmineRequireObj().ExceptionFormatter = function() { + function ExceptionFormatter() { + this.message = function(error) { + var message = ''; + + if (error.name && error.message) { + message += error.name + ': ' + error.message; + } else { + message += error.toString() + ' thrown'; + } + + if (error.fileName || error.sourceURL) { + message += ' in ' + (error.fileName || error.sourceURL); + } + + if (error.line || error.lineNumber) { + message += ' (line ' + (error.line || error.lineNumber) + ')'; + } + + return message; + }; + + this.stack = function(error) { + return error ? error.stack : null; + }; + } + + return ExceptionFormatter; +}; + +getJasmineRequireObj().Expectation = function() { + + function Expectation(options) { + this.util = options.util || { buildFailureMessage: function() {} }; + this.customEqualityTesters = options.customEqualityTesters || []; + this.actual = options.actual; + this.addExpectationResult = options.addExpectationResult || function(){}; + this.isNot = options.isNot; + + var customMatchers = options.customMatchers || {}; + for (var matcherName in customMatchers) { + this[matcherName] = Expectation.prototype.wrapCompare(matcherName, customMatchers[matcherName]); + } + } + + Expectation.prototype.wrapCompare = function(name, matcherFactory) { + return function() { + var args = Array.prototype.slice.call(arguments, 0), + expected = args.slice(0), + message = ''; + + args.unshift(this.actual); + + var matcher = matcherFactory(this.util, this.customEqualityTesters), + matcherCompare = matcher.compare; + + function defaultNegativeCompare() { + var result = matcher.compare.apply(null, args); + result.pass = !result.pass; + return result; + } + + if (this.isNot) { + matcherCompare = matcher.negativeCompare || defaultNegativeCompare; + } + + var result = matcherCompare.apply(null, args); + + if (!result.pass) { + if (!result.message) { + args.unshift(this.isNot); + args.unshift(name); + message = this.util.buildFailureMessage.apply(null, args); + } else { + if (Object.prototype.toString.apply(result.message) === '[object Function]') { + message = result.message(); + } else { + message = result.message; + } + } + } + + if (expected.length == 1) { + expected = expected[0]; + } + + // TODO: how many of these params are needed? + this.addExpectationResult( + result.pass, + { + matcherName: name, + passed: result.pass, + message: message, + actual: this.actual, + expected: expected // TODO: this may need to be arrayified/sliced + } + ); + }; + }; + + Expectation.addCoreMatchers = function(matchers) { + var prototype = Expectation.prototype; + for (var matcherName in matchers) { + var matcher = matchers[matcherName]; + prototype[matcherName] = prototype.wrapCompare(matcherName, matcher); + } + }; + + Expectation.Factory = function(options) { + options = options || {}; + + var expect = new Expectation(options); + + // TODO: this would be nice as its own Object - NegativeExpectation + // TODO: copy instead of mutate options + options.isNot = true; + expect.not = new Expectation(options); + + return expect; + }; + + return Expectation; +}; + +//TODO: expectation result may make more sense as a presentation of an expectation. +getJasmineRequireObj().buildExpectationResult = function() { + function buildExpectationResult(options) { + var messageFormatter = options.messageFormatter || function() {}, + stackFormatter = options.stackFormatter || function() {}; + + var result = { + matcherName: options.matcherName, + message: message(), + stack: stack(), + passed: options.passed + }; + + if(!result.passed) { + result.expected = options.expected; + result.actual = options.actual; + } + + return result; + + function message() { + if (options.passed) { + return 'Passed.'; + } else if (options.message) { + return options.message; + } else if (options.error) { + return messageFormatter(options.error); + } + return ''; + } + + function stack() { + if (options.passed) { + return ''; + } + + var error = options.error; + if (!error) { + try { + throw new Error(message()); + } catch (e) { + error = e; + } + } + return stackFormatter(error); + } + } + + return buildExpectationResult; +}; + +getJasmineRequireObj().MockDate = function() { + function MockDate(global) { + var self = this; + var currentTime = 0; + + if (!global || !global.Date) { + self.install = function() {}; + self.tick = function() {}; + self.uninstall = function() {}; + return self; + } + + var GlobalDate = global.Date; + + self.install = function(mockDate) { + if (mockDate instanceof GlobalDate) { + currentTime = mockDate.getTime(); + } else { + currentTime = new GlobalDate().getTime(); + } + + global.Date = FakeDate; + }; + + self.tick = function(millis) { + millis = millis || 0; + currentTime = currentTime + millis; + }; + + self.uninstall = function() { + currentTime = 0; + global.Date = GlobalDate; + }; + + createDateProperties(); + + return self; + + function FakeDate() { + switch(arguments.length) { + case 0: + return new GlobalDate(currentTime); + case 1: + return new GlobalDate(arguments[0]); + case 2: + return new GlobalDate(arguments[0], arguments[1]); + case 3: + return new GlobalDate(arguments[0], arguments[1], arguments[2]); + case 4: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3]); + case 5: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], + arguments[4]); + case 6: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], + arguments[4], arguments[5]); + case 7: + return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3], + arguments[4], arguments[5], arguments[6]); + } + } + + function createDateProperties() { + FakeDate.prototype = GlobalDate.prototype; + + FakeDate.now = function() { + if (GlobalDate.now) { + return currentTime; + } else { + throw new Error('Browser does not support Date.now()'); + } + }; + + FakeDate.toSource = GlobalDate.toSource; + FakeDate.toString = GlobalDate.toString; + FakeDate.parse = GlobalDate.parse; + FakeDate.UTC = GlobalDate.UTC; + } + } + + return MockDate; +}; + +getJasmineRequireObj().ObjectContaining = function(j$) { + + function ObjectContaining(sample) { + this.sample = sample; + } + + ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) { + if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); } + + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + var hasKey = function(obj, keyName) { + return obj !== null && !j$.util.isUndefined(obj[keyName]); + }; + + for (var property in this.sample) { + if (!hasKey(other, property) && hasKey(this.sample, property)) { + mismatchKeys.push('expected has key \'' + property + '\', but missing from actual.'); + } + else if (!j$.matchersUtil.equals(other[property], this.sample[property])) { + mismatchValues.push('\'' + property + '\' was \'' + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + '\' in actual, but was \'' + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + '\' in expected.'); + } + } + + return (mismatchKeys.length === 0 && mismatchValues.length === 0); + }; + + ObjectContaining.prototype.jasmineToString = function() { + return ''; + }; + + return ObjectContaining; +}; + +getJasmineRequireObj().pp = function(j$) { + + function PrettyPrinter() { + this.ppNestLevel_ = 0; + this.seen = []; + } + + PrettyPrinter.prototype.format = function(value) { + this.ppNestLevel_++; + try { + if (j$.util.isUndefined(value)) { + this.emitScalar('undefined'); + } else if (value === null) { + this.emitScalar('null'); + } else if (value === 0 && 1/value === -Infinity) { + this.emitScalar('-0'); + } else if (value === j$.getGlobal()) { + this.emitScalar(''); + } else if (value.jasmineToString) { + this.emitScalar(value.jasmineToString()); + } else if (typeof value === 'string') { + this.emitString(value); + } else if (j$.isSpy(value)) { + this.emitScalar('spy on ' + value.and.identity()); + } else if (value instanceof RegExp) { + this.emitScalar(value.toString()); + } else if (typeof value === 'function') { + this.emitScalar('Function'); + } else if (typeof value.nodeType === 'number') { + this.emitScalar('HTMLNode'); + } else if (value instanceof Date) { + this.emitScalar('Date(' + value + ')'); + } else if (j$.util.arrayContains(this.seen, value)) { + this.emitScalar(''); + } else if (j$.isArray_(value) || j$.isA_('Object', value)) { + this.seen.push(value); + if (j$.isArray_(value)) { + this.emitArray(value); + } else { + this.emitObject(value); + } + this.seen.pop(); + } else { + this.emitScalar(value.toString()); + } + } finally { + this.ppNestLevel_--; + } + }; + + PrettyPrinter.prototype.iterateObject = function(obj, fn) { + for (var property in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, property)) { continue; } + fn(property, obj.__lookupGetter__ ? (!j$.util.isUndefined(obj.__lookupGetter__(property)) && + obj.__lookupGetter__(property) !== null) : false); + } + }; + + PrettyPrinter.prototype.emitArray = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitObject = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitScalar = j$.unimplementedMethod_; + PrettyPrinter.prototype.emitString = j$.unimplementedMethod_; + + function StringPrettyPrinter() { + PrettyPrinter.call(this); + + this.string = ''; + } + + j$.util.inherit(StringPrettyPrinter, PrettyPrinter); + + StringPrettyPrinter.prototype.emitScalar = function(value) { + this.append(value); + }; + + StringPrettyPrinter.prototype.emitString = function(value) { + this.append('\'' + value + '\''); + }; + + StringPrettyPrinter.prototype.emitArray = function(array) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append('Array'); + return; + } + var length = Math.min(array.length, j$.MAX_PRETTY_PRINT_ARRAY_LENGTH); + this.append('[ '); + for (var i = 0; i < length; i++) { + if (i > 0) { + this.append(', '); + } + this.format(array[i]); + } + if(array.length > length){ + this.append(', ...'); + } + this.append(' ]'); + }; + + StringPrettyPrinter.prototype.emitObject = function(obj) { + if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) { + this.append('Object'); + return; + } + + var self = this; + this.append('{ '); + var first = true; + + this.iterateObject(obj, function(property, isGetter) { + if (first) { + first = false; + } else { + self.append(', '); + } + + self.append(property); + self.append(': '); + if (isGetter) { + self.append(''); + } else { + self.format(obj[property]); + } + }); + + this.append(' }'); + }; + + StringPrettyPrinter.prototype.append = function(value) { + this.string += value; + }; + + return function(value) { + var stringPrettyPrinter = new StringPrettyPrinter(); + stringPrettyPrinter.format(value); + return stringPrettyPrinter.string; + }; +}; + +getJasmineRequireObj().QueueRunner = function(j$) { + + function once(fn) { + var called = false; + return function() { + if (!called) { + called = true; + fn(); + } + }; + } + + function QueueRunner(attrs) { + this.queueableFns = attrs.queueableFns || []; + this.onComplete = attrs.onComplete || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + this.onException = attrs.onException || function() {}; + this.catchException = attrs.catchException || function() { return true; }; + this.userContext = attrs.userContext || {}; + this.timer = attrs.timeout || {setTimeout: setTimeout, clearTimeout: clearTimeout}; + this.fail = attrs.fail || function() {}; + } + + QueueRunner.prototype.execute = function() { + this.run(this.queueableFns, 0); + }; + + QueueRunner.prototype.run = function(queueableFns, recursiveIndex) { + var length = queueableFns.length, + self = this, + iterativeIndex; + + + for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) { + var queueableFn = queueableFns[iterativeIndex]; + if (queueableFn.fn.length > 0) { + return attemptAsync(queueableFn); + } else { + attemptSync(queueableFn); + } + } + + var runnerDone = iterativeIndex >= length; + + if (runnerDone) { + this.clearStack(this.onComplete); + } + + function attemptSync(queueableFn) { + try { + queueableFn.fn.call(self.userContext); + } catch (e) { + handleException(e, queueableFn); + } + } + + function attemptAsync(queueableFn) { + var clearTimeout = function () { + Function.prototype.apply.apply(self.timer.clearTimeout, [j$.getGlobal(), [timeoutId]]); + }, + next = once(function () { + clearTimeout(timeoutId); + self.run(queueableFns, iterativeIndex + 1); + }), + timeoutId; + + next.fail = function() { + self.fail.apply(null, arguments); + next(); + }; + + if (queueableFn.timeout) { + timeoutId = Function.prototype.apply.apply(self.timer.setTimeout, [j$.getGlobal(), [function() { + var error = new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.'); + onException(error, queueableFn); + next(); + }, queueableFn.timeout()]]); + } + + try { + queueableFn.fn.call(self.userContext, next); + } catch (e) { + handleException(e, queueableFn); + next(); + } + } + + function onException(e, queueableFn) { + self.onException(e); + } + + function handleException(e, queueableFn) { + onException(e, queueableFn); + if (!self.catchException(e)) { + //TODO: set a var when we catch an exception and + //use a finally block to close the loop in a nice way.. + throw e; + } + } + }; + + return QueueRunner; +}; + +getJasmineRequireObj().ReportDispatcher = function() { + function ReportDispatcher(methods) { + + var dispatchedMethods = methods || []; + + for (var i = 0; i < dispatchedMethods.length; i++) { + var method = dispatchedMethods[i]; + this[method] = (function(m) { + return function() { + dispatch(m, arguments); + }; + }(method)); + } + + var reporters = []; + + this.addReporter = function(reporter) { + reporters.push(reporter); + }; + + return this; + + function dispatch(method, args) { + for (var i = 0; i < reporters.length; i++) { + var reporter = reporters[i]; + if (reporter[method]) { + reporter[method].apply(reporter, args); + } + } + } + } + + return ReportDispatcher; +}; + + +getJasmineRequireObj().SpyRegistry = function(j$) { + + function SpyRegistry(options) { + options = options || {}; + var currentSpies = options.currentSpies || function() { return []; }; + + this.spyOn = function(obj, methodName) { + if (j$.util.isUndefined(obj)) { + throw new Error('spyOn could not find an object to spy upon for ' + methodName + '()'); + } + + if (j$.util.isUndefined(obj[methodName])) { + throw new Error(methodName + '() method does not exist'); + } + + if (obj[methodName] && j$.isSpy(obj[methodName])) { + //TODO?: should this return the current spy? Downside: may cause user confusion about spy state + throw new Error(methodName + ' has already been spied upon'); + } + + var spy = j$.createSpy(methodName, obj[methodName]); + + currentSpies().push({ + spy: spy, + baseObj: obj, + methodName: methodName, + originalValue: obj[methodName] + }); + + obj[methodName] = spy; + + return spy; + }; + + this.clearSpies = function() { + var spies = currentSpies(); + for (var i = 0; i < spies.length; i++) { + var spyEntry = spies[i]; + spyEntry.baseObj[spyEntry.methodName] = spyEntry.originalValue; + } + }; + } + + return SpyRegistry; +}; + +getJasmineRequireObj().SpyStrategy = function() { + + function SpyStrategy(options) { + options = options || {}; + + var identity = options.name || 'unknown', + originalFn = options.fn || function() {}, + getSpy = options.getSpy || function() {}, + plan = function() {}; + + this.identity = function() { + return identity; + }; + + this.exec = function() { + return plan.apply(this, arguments); + }; + + this.callThrough = function() { + plan = originalFn; + return getSpy(); + }; + + this.returnValue = function(value) { + plan = function() { + return value; + }; + return getSpy(); + }; + + this.returnValues = function() { + var values = Array.prototype.slice.call(arguments); + plan = function () { + return values.shift(); + }; + return getSpy(); + }; + + this.throwError = function(something) { + var error = (something instanceof Error) ? something : new Error(something); + plan = function() { + throw error; + }; + return getSpy(); + }; + + this.callFake = function(fn) { + plan = fn; + return getSpy(); + }; + + this.stub = function(fn) { + plan = function() {}; + return getSpy(); + }; + } + + return SpyStrategy; +}; + +getJasmineRequireObj().Suite = function() { + function Suite(attrs) { + this.env = attrs.env; + this.id = attrs.id; + this.parentSuite = attrs.parentSuite; + this.description = attrs.description; + this.onStart = attrs.onStart || function() {}; + this.resultCallback = attrs.resultCallback || function() {}; + this.clearStack = attrs.clearStack || function(fn) {fn();}; + this.expectationFactory = attrs.expectationFactory; + this.expectationResultFactory = attrs.expectationResultFactory; + + this.beforeFns = []; + this.afterFns = []; + this.beforeAllFns = []; + this.afterAllFns = []; + this.queueRunner = attrs.queueRunner || function() {}; + this.disabled = false; + + this.children = []; + + this.result = { + id: this.id, + description: this.description, + fullName: this.getFullName(), + failedExpectations: [] + }; + } + + Suite.prototype.expect = function(actual) { + return this.expectationFactory(actual, this); + }; + + Suite.prototype.getFullName = function() { + var fullName = this.description; + for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { + if (parentSuite.parentSuite) { + fullName = parentSuite.description + ' ' + fullName; + } + } + return fullName; + }; + + Suite.prototype.disable = function() { + this.disabled = true; + }; + + Suite.prototype.beforeEach = function(fn) { + this.beforeFns.unshift(fn); + }; + + Suite.prototype.beforeAll = function(fn) { + this.beforeAllFns.push(fn); + }; + + Suite.prototype.afterEach = function(fn) { + this.afterFns.unshift(fn); + }; + + Suite.prototype.afterAll = function(fn) { + this.afterAllFns.push(fn); + }; + + Suite.prototype.addChild = function(child) { + this.children.push(child); + }; + + Suite.prototype.status = function() { + if (this.disabled) { + return 'disabled'; + } + + if (this.result.failedExpectations.length > 0) { + return 'failed'; + } else { + return 'finished'; + } + }; + + Suite.prototype.execute = function(onComplete) { + var self = this; + + this.onStart(this); + + if (this.disabled) { + complete(); + return; + } + + var allFns = []; + + for (var i = 0; i < this.children.length; i++) { + allFns.push(wrapChildAsAsync(this.children[i])); + } + + if (this.isExecutable()) { + allFns = this.beforeAllFns.concat(allFns); + allFns = allFns.concat(this.afterAllFns); + } + + this.queueRunner({ + queueableFns: allFns, + onComplete: complete, + userContext: this.sharedUserContext(), + onException: function() { self.onException.apply(self, arguments); } + }); + + function complete() { + self.result.status = self.status(); + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + + function wrapChildAsAsync(child) { + return { fn: function(done) { child.execute(done); } }; + } + }; + + Suite.prototype.isExecutable = function() { + var foundActive = false; + for(var i = 0; i < this.children.length; i++) { + if(this.children[i].isExecutable()) { + foundActive = true; + break; + } + } + return foundActive; + }; + + Suite.prototype.sharedUserContext = function() { + if (!this.sharedContext) { + this.sharedContext = this.parentSuite ? clone(this.parentSuite.sharedUserContext()) : {}; + } + + return this.sharedContext; + }; + + Suite.prototype.clonedSharedUserContext = function() { + return clone(this.sharedUserContext()); + }; + + Suite.prototype.onException = function() { + if(isAfterAll(this.children)) { + var data = { + matcherName: '', + passed: false, + expected: '', + actual: '', + error: arguments[0] + }; + this.result.failedExpectations.push(this.expectationResultFactory(data)); + } else { + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + child.onException.apply(child, arguments); + } + } + }; + + Suite.prototype.addExpectationResult = function () { + if(isAfterAll(this.children) && isFailure(arguments)){ + var data = arguments[1]; + this.result.failedExpectations.push(this.expectationResultFactory(data)); + } else { + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + child.addExpectationResult.apply(child, arguments); + } + } + }; + + function isAfterAll(children) { + return children && children[0].result.status; + } + + function isFailure(args) { + return !args[0]; + } + + function clone(obj) { + var clonedObj = {}; + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + clonedObj[prop] = obj[prop]; + } + } + + return clonedObj; + } + + return Suite; +}; + +if (typeof window == void 0 && typeof exports == 'object') { + exports.Suite = jasmineRequire.Suite; +} + +getJasmineRequireObj().Timer = function() { + var defaultNow = (function(Date) { + return function() { return new Date().getTime(); }; + })(Date); + + function Timer(options) { + options = options || {}; + + var now = options.now || defaultNow, + startTime; + + this.start = function() { + startTime = now(); + }; + + this.elapsed = function() { + return now() - startTime; + }; + } + + return Timer; +}; + +getJasmineRequireObj().matchersUtil = function(j$) { + // TODO: what to do about jasmine.pp not being inject? move to JSON.stringify? gut PrettyPrinter? + + return { + equals: function(a, b, customTesters) { + customTesters = customTesters || []; + + return eq(a, b, [], [], customTesters); + }, + + contains: function(haystack, needle, customTesters) { + customTesters = customTesters || []; + + if ((Object.prototype.toString.apply(haystack) === '[object Array]') || + (!!haystack && !haystack.indexOf)) + { + for (var i = 0; i < haystack.length; i++) { + if (eq(haystack[i], needle, [], [], customTesters)) { + return true; + } + } + return false; + } + + return !!haystack && haystack.indexOf(needle) >= 0; + }, + + buildFailureMessage: function() { + var args = Array.prototype.slice.call(arguments, 0), + matcherName = args[0], + isNot = args[1], + actual = args[2], + expected = args.slice(3), + englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); + + var message = 'Expected ' + + j$.pp(actual) + + (isNot ? ' not ' : ' ') + + englishyPredicate; + + if (expected.length > 0) { + for (var i = 0; i < expected.length; i++) { + if (i > 0) { + message += ','; + } + message += ' ' + j$.pp(expected[i]); + } + } + + return message + '.'; + } + }; + + // Equality function lovingly adapted from isEqual in + // [Underscore](http://underscorejs.org) + function eq(a, b, aStack, bStack, customTesters) { + var result = true; + + for (var i = 0; i < customTesters.length; i++) { + var customTesterResult = customTesters[i](a, b); + if (!j$.util.isUndefined(customTesterResult)) { + return customTesterResult; + } + } + + if (a instanceof j$.Any) { + result = a.jasmineMatches(b); + if (result) { + return true; + } + } + + if (b instanceof j$.Any) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (b instanceof j$.ObjectContaining) { + result = b.jasmineMatches(a); + if (result) { + return true; + } + } + + if (a instanceof Error && b instanceof Error) { + return a.message == b.message; + } + + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) { return a !== 0 || 1 / a == 1 / b; } + // A strict comparison is necessary because `null == undefined`. + if (a === null || b === null) { return a === b; } + var className = Object.prototype.toString.call(a); + if (className != Object.prototype.toString.call(b)) { return false; } + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a === 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') { return false; } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) { return bStack[length] == b; } + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack, customTesters))) { break; } + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction(aCtor) && (aCtor instanceof aCtor) && + isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = has(b, key) && eq(a[key], b[key], aStack, bStack, customTesters))) { break; } + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (has(b, key) && !(size--)) { break; } + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + + return result; + + function has(obj, key) { + return obj.hasOwnProperty(key); + } + + function isFunction(obj) { + return typeof obj === 'function'; + } + } +}; + +getJasmineRequireObj().toBe = function() { + function toBe() { + return { + compare: function(actual, expected) { + return { + pass: actual === expected + }; + } + }; + } + + return toBe; +}; + +getJasmineRequireObj().toBeCloseTo = function() { + + function toBeCloseTo() { + return { + compare: function(actual, expected, precision) { + if (precision !== 0) { + precision = precision || 2; + } + + return { + pass: Math.abs(expected - actual) < (Math.pow(10, -precision) / 2) + }; + } + }; + } + + return toBeCloseTo; +}; + +getJasmineRequireObj().toBeDefined = function() { + function toBeDefined() { + return { + compare: function(actual) { + return { + pass: (void 0 !== actual) + }; + } + }; + } + + return toBeDefined; +}; + +getJasmineRequireObj().toBeFalsy = function() { + function toBeFalsy() { + return { + compare: function(actual) { + return { + pass: !!!actual + }; + } + }; + } + + return toBeFalsy; +}; + +getJasmineRequireObj().toBeGreaterThan = function() { + + function toBeGreaterThan() { + return { + compare: function(actual, expected) { + return { + pass: actual > expected + }; + } + }; + } + + return toBeGreaterThan; +}; + + +getJasmineRequireObj().toBeLessThan = function() { + function toBeLessThan() { + return { + + compare: function(actual, expected) { + return { + pass: actual < expected + }; + } + }; + } + + return toBeLessThan; +}; +getJasmineRequireObj().toBeNaN = function(j$) { + + function toBeNaN() { + return { + compare: function(actual) { + var result = { + pass: (actual !== actual) + }; + + if (result.pass) { + result.message = 'Expected actual not to be NaN.'; + } else { + result.message = function() { return 'Expected ' + j$.pp(actual) + ' to be NaN.'; }; + } + + return result; + } + }; + } + + return toBeNaN; +}; + +getJasmineRequireObj().toBeNull = function() { + + function toBeNull() { + return { + compare: function(actual) { + return { + pass: actual === null + }; + } + }; + } + + return toBeNull; +}; + +getJasmineRequireObj().toBeTruthy = function() { + + function toBeTruthy() { + return { + compare: function(actual) { + return { + pass: !!actual + }; + } + }; + } + + return toBeTruthy; +}; + +getJasmineRequireObj().toBeUndefined = function() { + + function toBeUndefined() { + return { + compare: function(actual) { + return { + pass: void 0 === actual + }; + } + }; + } + + return toBeUndefined; +}; + +getJasmineRequireObj().toContain = function() { + function toContain(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + + return { + pass: util.contains(actual, expected, customEqualityTesters) + }; + } + }; + } + + return toContain; +}; + +getJasmineRequireObj().toEqual = function() { + + function toEqual(util, customEqualityTesters) { + customEqualityTesters = customEqualityTesters || []; + + return { + compare: function(actual, expected) { + var result = { + pass: false + }; + + result.pass = util.equals(actual, expected, customEqualityTesters); + + return result; + } + }; + } + + return toEqual; +}; + +getJasmineRequireObj().toHaveBeenCalled = function(j$) { + + function toHaveBeenCalled() { + return { + compare: function(actual) { + var result = {}; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (arguments.length > 1) { + throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); + } + + result.pass = actual.calls.any(); + + result.message = result.pass ? + 'Expected spy ' + actual.and.identity() + ' not to have been called.' : + 'Expected spy ' + actual.and.identity() + ' to have been called.'; + + return result; + } + }; + } + + return toHaveBeenCalled; +}; + +getJasmineRequireObj().toHaveBeenCalledWith = function(j$) { + + function toHaveBeenCalledWith(util, customEqualityTesters) { + return { + compare: function() { + var args = Array.prototype.slice.call(arguments, 0), + actual = args[0], + expectedArgs = args.slice(1), + result = { pass: false }; + + if (!j$.isSpy(actual)) { + throw new Error('Expected a spy, but got ' + j$.pp(actual) + '.'); + } + + if (!actual.calls.any()) { + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but it was never called.'; }; + return result; + } + + if (util.contains(actual.calls.allArgs(), expectedArgs, customEqualityTesters)) { + result.pass = true; + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' not to have been called with ' + j$.pp(expectedArgs) + ' but it was.'; }; + } else { + result.message = function() { return 'Expected spy ' + actual.and.identity() + ' to have been called with ' + j$.pp(expectedArgs) + ' but actual calls were ' + j$.pp(actual.calls.allArgs()).replace(/^\[ | \]$/g, '') + '.'; }; + } + + return result; + } + }; + } + + return toHaveBeenCalledWith; +}; + +getJasmineRequireObj().toMatch = function() { + + function toMatch() { + return { + compare: function(actual, expected) { + var regexp = new RegExp(expected); + + return { + pass: regexp.test(actual) + }; + } + }; + } + + return toMatch; +}; + +getJasmineRequireObj().toThrow = function(j$) { + + function toThrow(util) { + return { + compare: function(actual, expected) { + var result = { pass: false }, + threw = false, + thrown; + + if (typeof actual != 'function') { + throw new Error('Actual is not a Function'); + } + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + result.message = 'Expected function to throw an exception.'; + return result; + } + + if (arguments.length == 1) { + result.pass = true; + result.message = function() { return 'Expected function not to throw, but it threw ' + j$.pp(thrown) + '.'; }; + + return result; + } + + if (util.equals(thrown, expected)) { + result.pass = true; + result.message = function() { return 'Expected function not to throw ' + j$.pp(expected) + '.'; }; + } else { + result.message = function() { return 'Expected function to throw ' + j$.pp(expected) + ', but it threw ' + j$.pp(thrown) + '.'; }; + } + + return result; + } + }; + } + + return toThrow; +}; + +getJasmineRequireObj().toThrowError = function(j$) { + function toThrowError (util) { + return { + compare: function(actual) { + var threw = false, + pass = {pass: true}, + fail = {pass: false}, + thrown; + + if (typeof actual != 'function') { + throw new Error('Actual is not a Function'); + } + + var errorMatcher = getMatcher.apply(null, arguments); + + try { + actual(); + } catch (e) { + threw = true; + thrown = e; + } + + if (!threw) { + fail.message = 'Expected function to throw an Error.'; + return fail; + } + + if (!(thrown instanceof Error)) { + fail.message = function() { return 'Expected function to throw an Error, but it threw ' + j$.pp(thrown) + '.'; }; + return fail; + } + + if (errorMatcher.hasNoSpecifics()) { + pass.message = 'Expected function not to throw an Error, but it threw ' + fnNameFor(thrown) + '.'; + return pass; + } + + if (errorMatcher.matches(thrown)) { + pass.message = function() { + return 'Expected function not to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + '.'; + }; + return pass; + } else { + fail.message = function() { + return 'Expected function to throw ' + errorMatcher.errorTypeDescription + errorMatcher.messageDescription() + + ', but it threw ' + errorMatcher.thrownDescription(thrown) + '.'; + }; + return fail; + } + } + }; + + function getMatcher() { + var expected = null, + errorType = null; + + if (arguments.length == 2) { + expected = arguments[1]; + if (isAnErrorType(expected)) { + errorType = expected; + expected = null; + } + } else if (arguments.length > 2) { + errorType = arguments[1]; + expected = arguments[2]; + if (!isAnErrorType(errorType)) { + throw new Error('Expected error type is not an Error.'); + } + } + + if (expected && !isStringOrRegExp(expected)) { + if (errorType) { + throw new Error('Expected error message is not a string or RegExp.'); + } else { + throw new Error('Expected is not an Error, string, or RegExp.'); + } + } + + function messageMatch(message) { + if (typeof expected == 'string') { + return expected == message; + } else { + return expected.test(message); + } + } + + return { + errorTypeDescription: errorType ? fnNameFor(errorType) : 'an exception', + thrownDescription: function(thrown) { + var thrownName = errorType ? fnNameFor(thrown.constructor) : 'an exception', + thrownMessage = ''; + + if (expected) { + thrownMessage = ' with message ' + j$.pp(thrown.message); + } + + return thrownName + thrownMessage; + }, + messageDescription: function() { + if (expected === null) { + return ''; + } else if (expected instanceof RegExp) { + return ' with a message matching ' + j$.pp(expected); + } else { + return ' with message ' + j$.pp(expected); + } + }, + hasNoSpecifics: function() { + return expected === null && errorType === null; + }, + matches: function(error) { + return (errorType === null || error.constructor === errorType) && + (expected === null || messageMatch(error.message)); + } + }; + } + + function fnNameFor(func) { + return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1]; + } + + function isStringOrRegExp(potential) { + return potential instanceof RegExp || (typeof potential == 'string'); + } + + function isAnErrorType(type) { + if (typeof type !== 'function') { + return false; + } + + var Surrogate = function() {}; + Surrogate.prototype = type.prototype; + return (new Surrogate()) instanceof Error; + } + } + + return toThrowError; +}; + +getJasmineRequireObj().interface = function(jasmine, env) { + var jasmineInterface = { + describe: function(description, specDefinitions) { + return env.describe(description, specDefinitions); + }, + + xdescribe: function(description, specDefinitions) { + return env.xdescribe(description, specDefinitions); + }, + + fdescribe: function(description, specDefinitions) { + return env.fdescribe(description, specDefinitions); + }, + + it: function(desc, func) { + return env.it(desc, func); + }, + + xit: function(desc, func) { + return env.xit(desc, func); + }, + + fit: function(desc, func) { + return env.fit(desc, func); + }, + + beforeEach: function(beforeEachFunction) { + return env.beforeEach(beforeEachFunction); + }, + + afterEach: function(afterEachFunction) { + return env.afterEach(afterEachFunction); + }, + + beforeAll: function(beforeAllFunction) { + return env.beforeAll(beforeAllFunction); + }, + + afterAll: function(afterAllFunction) { + return env.afterAll(afterAllFunction); + }, + + expect: function(actual) { + return env.expect(actual); + }, + + pending: function() { + return env.pending(); + }, + + fail: function() { + return env.fail.apply(env, arguments); + }, + + spyOn: function(obj, methodName) { + return env.spyOn(obj, methodName); + }, + + jsApiReporter: new jasmine.JsApiReporter({ + timer: new jasmine.Timer() + }), + + jasmine: jasmine + }; + + jasmine.addCustomEqualityTester = function(tester) { + env.addCustomEqualityTester(tester); + }; + + jasmine.addMatchers = function(matchers) { + return env.addMatchers(matchers); + }; + + jasmine.clock = function() { + return env.clock; + }; + + return jasmineInterface; +}; + +getJasmineRequireObj().version = function() { + return '2.1.3'; +}; diff --git a/specs/jasmine-2.1.3/jasmine_favicon.png b/specs/jasmine-2.1.3/jasmine_favicon.png new file mode 100755 index 0000000000000000000000000000000000000000..3b84583be4b9d5ae9cd5cae07b2dbaa5ebb0ad1c GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VDb;}332@o1PuQh8X8uGu4-^- zn3*=SA+%wV=cI;&hMB$%-Lc(MLmN8%IwwUpbcA;F2Q;)twND9bn-tpC9oR4-vb8I; zp+Bg#FSKP+P(yD-%f!%zo}iZgh=%Ua=KkP@iNVbiLYsSn8~VeW`+}P$1~&ACHcbd_ z=nZb_32o{NZkZ6&1k^hrxT!a&r8lIdAIJ@9nh?|iRMsET+#A%`AKKg-(%2K)*cZ|~ zA-J&*$PEUH08MM`4Q=iVY3vVfhN$TUscGs5sR8P31X|G_+SnTcv<0XVC=Rr!u|K4# zHyCJU6UYRR;%2BtKv^I=q#2|DECn_k@wXU|=@ zeD&J(8#iy=zH|5fgNKiwJbm`!<*V0k-oF3v@zdvTKYsrD^Y>rGdNDU(R>|^oaSW-5 z%f0Y2x+hSk{p0&HA;E60Oq1S3r7U;(X3MH#?W9nxXzk)srlC4P;cZYe&v*G}mgi%< ze(bTl{@&_)cX8b-kvX%ff9D22e*M~7edm|;|Jb8m2JBzkzKiSBKR0n*?XSyM6fxZY zJ4bb;vGKRiKP(ztq3sJx9iq$Re`-EEQU0KE$sdyqayzp6H-7x+oGKZ_6;hQ_Y|p&y z7o`N7g@ z8Yl1HKL;mFo4BdxljF1}KbfMR6nNdLyPnEap1MqBdI?{g$L58$P8+wftLX5R70)7n`#pwItnbma$w{%`M(`wpsu2rJ60rdGCc> z+~lm)viMYM`=uXwK_$`#_UtRZMO=2-IV)l2vc~)doyPvg-RmxtACQ#v{7}5$&isV+ zPws~n?@yNGy#H1=vTI?;CAl9~9#VgqJ+7`4y~R+Wyj0U+){?lm9r6mtf0gl_VmUW^ z%eje%?jM%^eLuUg#ybXaQM{yQy&8UgiQ`HQ+=iTpjfd0iJ@ ssyFi&dF4%9dEry;pNN)Q>$jg_dr3r;PHA*CFc&d+y85}Sb4q9e0J812W&i*H literal 0 HcmV?d00001 diff --git a/specs/specs.html b/specs/specs.html new file mode 100755 index 0000000000..42ce6850a8 --- /dev/null +++ b/specs/specs.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/specs/specs.js b/specs/specs.js new file mode 100644 index 0000000000..864ea67d96 --- /dev/null +++ b/specs/specs.js @@ -0,0 +1,16 @@ +window.jasmineRequire = require('./jasmine-2.1.3/jasmine'); +require('./jasmine-2.1.3/jasmine-html'); +require('./jasmine-2.1.3/boot'); + +var Reporter = require('jasmine-terminal-reporter'); +var reporter = new Reporter(); +jasmine.getEnv().addReporter(reporter); + +var fs = require('fs'); +var tests = fs.readdirSync('./specs').filter(function (f) { + return f.indexOf('-spec') !== -1; +}); + +tests.forEach(function (t) { + require('./' + t); +}); diff --git a/src/Main.js b/src/Main.js index 4c485a892b..ae2d5bc526 100644 --- a/src/Main.js +++ b/src/Main.js @@ -1,7 +1,3 @@ -var module = require('module'); -require.main.paths.splice(0, 0, process.env.NODE_PATH); - -var Bugsnag = require('bugsnag-js'); var React = require('react'); var Router = require('react-router'); var RetinaImage = require('react-retina-image'); @@ -22,11 +18,14 @@ var DefaultRoute = Router.DefaultRoute; var Link = Router.Link; var RouteHandler = Router.RouteHandler; -Bugsnag.apiKey = 'fc51aab02ce9dd1bb6ebc9fe2f4d43d7'; -Bugsnag.autoNotify = true; -Bugsnag.releaseStage = process.env.NODE_ENV === 'development' ? 'development' : 'production'; -Bugsnag.notifyReleaseStages = []; -Bugsnag.appVersion = app.getVersion(); + +if (process.env.NODE_ENV === 'development') { + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = 'http://localhost:35729/livereload.js'; + var head = document.getElementsByTagName('head')[0]; + head.appendChild(script); +} if (!window.location.hash.length || window.location.hash === '#/') { router.run(function (Handler) { From a8ba0b9527a9c76b9db1b6f593c31ee16130daa0 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Sat, 31 Jan 2015 01:01:06 -0500 Subject: [PATCH 08/12] Fixing tests --- browser/main.js | 5 ++--- deps | 16 ++++++++++++---- package.json | 10 +++++++--- specs/specs.js | 12 +++++++++--- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/browser/main.js b/browser/main.js index ea7c222378..8c31209cdd 100644 --- a/browser/main.js +++ b/browser/main.js @@ -54,13 +54,12 @@ app.on('ready', function() { }); mainWindow.webContents.on('did-finish-load', function() { - mainWindow.show(); + mainWindow.show(); mainWindow.focus(); - mainWindow.setTitle(''); // Auto Updates - if (process.env.NODE_ENV !== 'dev' && process.env.NODE_ENV !== 'test') { + if (process.env.NODE_ENV !== 'development' && !argv.test) { autoUpdater.setFeedUrl('https://updates.kitematic.com/releases/latest?version=' + app.getVersion()); autoUpdater.on('checking-for-update', function (e) { diff --git a/deps b/deps index 31d4569aa9..e01dfa4f77 100755 --- a/deps +++ b/deps @@ -1,17 +1,25 @@ #!/bin/bash BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PLATFORM='unknown' +unamestr=`uname` +if [[ "$unamestr" == 'Linux' ]]; then + PLATFORM='linux' +elif [[ "$unamestr" == 'Darwin' ]]; then + PLATFORM='darwin' +fi + export BOOT2DOCKER_CLI_VERSION=$(node -pe "JSON.parse(process.argv[1])['boot2docker-version']" "$(cat $BASE/package.json)") export BOOT2DOCKER_CLI_VERSION_FILE=boot2docker-$BOOT2DOCKER_CLI_VERSION export ATOM_SHELL_VERSION=$(node -pe "JSON.parse(process.argv[1])['atom-shell-version']" "$(cat $BASE/package.json)") -export ATOM_SHELL_VERSION_FILE=atom-shell-v$ATOM_SHELL_VERSION-darwin-x64.zip +export ATOM_SHELL_VERSION_FILE=atom-shell-v$ATOM_SHELL_VERSION-$PLATFORM-x64.zip -mkdir -p $BASE/cache -pushd $BASE/cache > /dev/null +mkdir -p $BASE/cache/$PLATFORM +pushd $BASE/cache/$PLATFORM > /dev/null if [ ! -f $ATOM_SHELL_VERSION_FILE ]; then echo "-----> Downloading atom-shell..." rm -rf atom-shell-* - curl -L -o $ATOM_SHELL_VERSION_FILE https://github.com/atom/atom-shell/releases/download/v$ATOM_SHELL_VERSION/atom-shell-v$ATOM_SHELL_VERSION-darwin-x64.zip + curl -L -o $ATOM_SHELL_VERSION_FILE https://github.com/atom/atom-shell/releases/download/v$ATOM_SHELL_VERSION/atom-shell-v$ATOM_SHELL_VERSION-$PLATFORM-x64.zip unzip $ATOM_SHELL_VERSION_FILE fi popd > /dev/null diff --git a/package.json b/package.json index 34b3d9816d..17791ce64c 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,12 @@ }, "bugs": "https://github.com/kitematic/kitematic/issues", "scripts": { - "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & NODE_ENV=development ./cache/Atom.app/Contents/MacOS/Atom . && kill $(pgrep node)", - "preinstall": "./deps", - "test": "jsx src build/ && rsync ./images/* ./build && wess -m -i ./styles/main.less -o ./build/main.css & NODE_ENV=test ./cache/Atom.app/Contents/MacOS/Atom . --test", + "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & npm run start:$(uname) && kill $(pgrep node)", + "start:Darwin": "NODE_ENV=development ./cache/darwin/Atom.app/Contents/MacOS/Atom .", + "start:Linux": "NODE_ENV=development ./cache/linux/atom .", + "test": "jsx --watch src build/ & rsync ./images/* ./build && wess -m -i ./styles/main.less -o ./build/main.css && npm run test:$(uname)", + "test:Darwin": "NODE_ENV=test ./cache/darwin/Atom.app/Contents/MacOS/Atom . --test", + "test:Linux": "NODE_ENV=test ./cache/darwin/atom .", "release": "./release" }, "licenses": [ @@ -56,6 +59,7 @@ "devDependencies": { "ecstatic": "^0.5.8", "glob": "^4.0.6", + "jasmine-node": "^1.14.5", "jasmine-reporters": "^1.0.1", "jasmine-tagged": "^1.1.2", "jasmine-terminal-reporter": "^0.9.1", diff --git a/specs/specs.js b/specs/specs.js index 864ea67d96..153e947977 100644 --- a/specs/specs.js +++ b/specs/specs.js @@ -1,10 +1,16 @@ window.jasmineRequire = require('./jasmine-2.1.3/jasmine'); require('./jasmine-2.1.3/jasmine-html'); require('./jasmine-2.1.3/boot'); +var consoleReporter = require('./jasmine-2.1.3/console'); -var Reporter = require('jasmine-terminal-reporter'); -var reporter = new Reporter(); -jasmine.getEnv().addReporter(reporter); +jasmine.getEnv().addReporter(new consoleReporter.ConsoleReporter()({ + showColors: true, + timer: new jasmine.Timer(), + print: function() { + console.log(arguments); + process.stdout.write.apply(process.stdout, arguments); + } + })); var fs = require('fs'); var tests = fs.readdirSync('./specs').filter(function (f) { From cfa6e962860ea7f6c2f538496bb4c231eb39fc9d Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Sat, 31 Jan 2015 01:22:41 -0500 Subject: [PATCH 09/12] Kill trailing spec processes --- package.json | 2 +- specs/specs.html | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 17791ce64c..de2dd005a1 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & npm run start:$(uname) && kill $(pgrep node)", "start:Darwin": "NODE_ENV=development ./cache/darwin/Atom.app/Contents/MacOS/Atom .", "start:Linux": "NODE_ENV=development ./cache/linux/atom .", - "test": "jsx --watch src build/ & rsync ./images/* ./build && wess -m -i ./styles/main.less -o ./build/main.css && npm run test:$(uname)", + "test": "jsx --watch src build/ & rsync ./images/* ./build && wess -m -i ./styles/main.less -o ./build/main.css && npm run test:$(uname) && kill $(pgrep node)", "test:Darwin": "NODE_ENV=test ./cache/darwin/Atom.app/Contents/MacOS/Atom . --test", "test:Linux": "NODE_ENV=test ./cache/darwin/atom .", "release": "./release" diff --git a/specs/specs.html b/specs/specs.html index 42ce6850a8..6cef94b504 100755 --- a/specs/specs.html +++ b/specs/specs.html @@ -5,5 +5,6 @@ + From c7d3bffc7f950554e2914f73cf3ecd7522933b5e Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Mon, 2 Feb 2015 00:33:36 -0500 Subject: [PATCH 10/12] WIP tests --- browser/main.js | 41 +-- deps | 31 +-- resources/virtualbox-4.3.18.pkg => gulp | 0 gulpfile.js | 170 ++++++++++++ package.json | 53 ++-- release | 35 --- resources/cocoasudo | Bin 0 -> 47704 bytes specs/ContainerStore-spec.js | 8 - specs/tests.js | 26 ++ src/Main.js | 15 +- src/Setup.react.js | 181 +------------ src/SetupStore.js | 201 ++++++++++++++ src/{Util.js => SetupUtil.js} | 44 +++- src/Virtualbox.js | 31 +-- tests/SetupStore-integration.js | 100 +++++++ tests/SetupUtil-integration.js | 10 + {specs => tests}/jasmine-2.1.3/boot.js | 0 {specs => tests}/jasmine-2.1.3/console.js | 2 - .../jasmine-2.1.3/jasmine-html.js | 0 {specs => tests}/jasmine-2.1.3/jasmine.css | 0 {specs => tests}/jasmine-2.1.3/jasmine.js | 0 .../jasmine-2.1.3/jasmine_favicon.png | Bin specs/specs.html => tests/tests.html | 3 +- specs/specs.js => tests/tests.js | 9 +- tests/util/vboxuninstall | 245 ++++++++++++++++++ 25 files changed, 888 insertions(+), 317 deletions(-) rename resources/virtualbox-4.3.18.pkg => gulp (100%) create mode 100644 gulpfile.js delete mode 100755 release create mode 100755 resources/cocoasudo delete mode 100755 specs/ContainerStore-spec.js create mode 100644 specs/tests.js create mode 100644 src/SetupStore.js rename src/{Util.js => SetupUtil.js} (66%) create mode 100644 tests/SetupStore-integration.js create mode 100644 tests/SetupUtil-integration.js rename {specs => tests}/jasmine-2.1.3/boot.js (100%) rename {specs => tests}/jasmine-2.1.3/console.js (98%) rename {specs => tests}/jasmine-2.1.3/jasmine-html.js (100%) rename {specs => tests}/jasmine-2.1.3/jasmine.css (100%) rename {specs => tests}/jasmine-2.1.3/jasmine.js (100%) rename {specs => tests}/jasmine-2.1.3/jasmine_favicon.png (100%) rename specs/specs.html => tests/tests.html (59%) rename specs/specs.js => tests/tests.js (69%) create mode 100755 tests/util/vboxuninstall diff --git a/browser/main.js b/browser/main.js index 8c31209cdd..ee51d8d578 100644 --- a/browser/main.js +++ b/browser/main.js @@ -11,10 +11,18 @@ var BrowserWindow = require('browser-window'); var ipc = require('ipc'); var argv = require('minimist')(process.argv); +var saveVMOnQuit = false; process.env.NODE_PATH = __dirname + '/../node_modules'; +process.env.RESOURCES_PATH = __dirname + '/../resources'; process.chdir(path.join(__dirname, '..')); +if (argv.integration) { + process.env.TEST_TYPE = 'integration'; +} else { + process.env.TEST_TYPE = 'test'; +} + app.on('activate-with-no-open-windows', function () { if (mainWindow) { mainWindow.show(); @@ -23,38 +31,35 @@ app.on('activate-with-no-open-windows', function () { }); app.on('ready', function() { - var windowOptions = { + mainWindow = new BrowserWindow({ width: 1000, height: 700, 'min-width': 1000, 'min-height': 700, resizable: true, - frame: false - }; + frame: false, + show: false + }); - mainWindow = new BrowserWindow(windowOptions); - mainWindow.hide(); if (argv.test) { - mainWindow.loadUrl('file://' + __dirname + '/../specs/specs.html'); + mainWindow.loadUrl('file://' + __dirname + '/../tests/tests.html'); } else { mainWindow.loadUrl('file://' + __dirname + '/../build/index.html'); + app.on('will-quit', function (e) { + if (saveVMOnQuit) { + exec('VBoxManage controlvm boot2docker-vm savestate', function (stderr, stdout, code) {}); + } + }); } - process.on('uncaughtException', app.quit); - - var saveVMOnQuit = false; - app.on('will-quit', function (e) { - if (saveVMOnQuit) { - exec('VBoxManage controlvm boot2docker-vm savestate', function (stderr, stdout, code) {}); - } - }); - mainWindow.webContents.on('new-window', function (e) { e.preventDefault(); }); mainWindow.webContents.on('did-finish-load', function() { - mainWindow.show(); + if (!argv.test) { + mainWindow.show(); + } mainWindow.focus(); mainWindow.setTitle(''); @@ -92,12 +97,12 @@ app.on('ready', function() { autoUpdater.quitAndInstall(); } }); + + autoUpdater.checkForUpdates(); } ipc.on('vm', function (event, arg) { saveVMOnQuit = arg; }); - - autoUpdater.checkForUpdates(); }); }); diff --git a/deps b/deps index e01dfa4f77..7e1cbc3cc2 100755 --- a/deps +++ b/deps @@ -1,36 +1,15 @@ #!/bin/bash - BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -PLATFORM='unknown' -unamestr=`uname` -if [[ "$unamestr" == 'Linux' ]]; then - PLATFORM='linux' -elif [[ "$unamestr" == 'Darwin' ]]; then - PLATFORM='darwin' -fi - -export BOOT2DOCKER_CLI_VERSION=$(node -pe "JSON.parse(process.argv[1])['boot2docker-version']" "$(cat $BASE/package.json)") -export BOOT2DOCKER_CLI_VERSION_FILE=boot2docker-$BOOT2DOCKER_CLI_VERSION -export ATOM_SHELL_VERSION=$(node -pe "JSON.parse(process.argv[1])['atom-shell-version']" "$(cat $BASE/package.json)") -export ATOM_SHELL_VERSION_FILE=atom-shell-v$ATOM_SHELL_VERSION-$PLATFORM-x64.zip - -mkdir -p $BASE/cache/$PLATFORM -pushd $BASE/cache/$PLATFORM > /dev/null -if [ ! -f $ATOM_SHELL_VERSION_FILE ]; then - echo "-----> Downloading atom-shell..." - rm -rf atom-shell-* - curl -L -o $ATOM_SHELL_VERSION_FILE https://github.com/atom/atom-shell/releases/download/v$ATOM_SHELL_VERSION/atom-shell-v$ATOM_SHELL_VERSION-$PLATFORM-x64.zip - unzip $ATOM_SHELL_VERSION_FILE -fi -popd > /dev/null +BOOT2DOCKER_CLI_VERSION=$(node -pe "JSON.parse(process.argv[1])['boot2docker-version']" "$(cat $BASE/package.json)") +BOOT2DOCKER_CLI_FILE=boot2docker-$BOOT2DOCKER_CLI_VERSION pushd $BASE/resources > /dev/null -if [ ! -f $BOOT2DOCKER_CLI_VERSION_FILE ]; then +if [ ! -f $BOOT2DOCKER_CLI_FILE ]; then echo "-----> Downloading Boot2docker CLI..." rm -rf boot2docker-* - curl -L -o $BOOT2DOCKER_CLI_VERSION_FILE https://github.com/boot2docker/boot2docker-cli/releases/download/v${BOOT2DOCKER_CLI_VERSION}/boot2docker-v${BOOT2DOCKER_CLI_VERSION}-darwin-amd64 - chmod +x $BOOT2DOCKER_CLI_VERSION_FILE + curl -L -o $BOOT2DOCKER_CLI_FILE https://github.com/boot2docker/boot2docker-cli/releases/download/v${BOOT2DOCKER_CLI_VERSION}/boot2docker-v${BOOT2DOCKER_CLI_VERSION}-darwin-amd64 + chmod +x $BOOT2DOCKER_CLI_FILE fi popd > /dev/null diff --git a/resources/virtualbox-4.3.18.pkg b/gulp similarity index 100% rename from resources/virtualbox-4.3.18.pkg rename to gulp diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000000..546108ce42 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,170 @@ +var concat = require('gulp-concat'); +var cssmin = require('gulp-cssmin'); +var downloadatomshell = require('gulp-download-atom-shell'); +var fs = require('fs'); +var gulp = require('gulp'); +var gulpif = require('gulp-if'); +var gutil = require('gulp-util'); +var http = require('http'); +var less = require('gulp-less'); +var livereload = require('gulp-livereload'); +var plumber = require('gulp-plumber'); +var react = require('gulp-react'); +var runSequence = require('run-sequence'); +var shell = require('gulp-shell'); +var sourcemaps = require('gulp-sourcemaps'); +var packagejson = require('./package.json'); + +var dependencies = Object.keys(packagejson.dependencies); +var devDependencies = Object.keys(packagejson.devDependencies); +var options = { + dev: process.argv.indexOf('release') === -1 && process.argv.indexOf('test') === -1, + test: process.argv.indexOf('test') !== -1, + integration: process.argv.indexOf('--integration') !== -1, + filename: 'Kitematic.app', + name: 'Kitematic' +}; + +gulp.task('js', function () { + gulp.src('src/**/*.js') + .pipe(plumber(function(error) { + gutil.log(gutil.colors.red('Error (' + error.plugin + '): ' + error.message)); + // emit the end event, to properly end the task + this.emit('end'); + })) + .pipe(react()) + .pipe(gulp.dest((options.dev || options.test) ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) + .pipe(gulpif(options.dev, livereload())); +}); + +gulp.task('images', function() { + return gulp.src('images/*') + .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) + .pipe(gulpif(options.dev, livereload())); +}); + +gulp.task('styles', function () { + return gulp.src('styles/main.less') + .pipe(plumber(function(error) { + gutil.log(gutil.colors.red('Error (' + error.plugin + '): ' + error.message)); + // emit the end event, to properly end the task + this.emit('end'); + })) + .pipe(gulpif(options.dev, sourcemaps.init())) + .pipe(less()) + .pipe(gulpif(options.dev, sourcemaps.write())) + .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) + .pipe(gulpif(!options.dev, cssmin())) + .pipe(concat('main.css')) + .pipe(gulpif(options.dev, livereload())); +}); + +gulp.task('download', function (cb) { + downloadatomshell({ + version: packagejson['atom-shell-version'], + outputDir: 'cache' + }, cb); +}); + +gulp.task('copy', function () { + gulp.src('index.html') + .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) + .pipe(gulpif(options.dev, livereload())); + + gulp.src('fonts/**') + .pipe(gulp.dest(options.dev ? './build' : './dist/osx/' + options.filename + '/Contents/Resources/app/build')) + .pipe(gulpif(options.dev, livereload())); +}); + +gulp.task('dist', function (cb) { + var stream = gulp.src('').pipe(shell([ + 'rm -Rf ./dist', + 'mkdir -p ./dist/osx', + 'cp -R ./cache/Atom.app ./dist/osx/<%= filename %>', + 'mv ./dist/osx/<%= filename %>/Contents/MacOS/Atom ./dist/osx/<%= filename %>/Contents/MacOS/<%= name %>', + 'mkdir -p ./dist/osx/<%= filename %>/Contents/Resources/app', + 'cp -R browser dist/osx/<%= filename %>/Contents/Resources/app', + 'cp package.json dist/osx/<%= filename %>/Contents/Resources/app/', + 'mkdir -p dist/osx/<%= filename %>/Contents/Resources/app/resources', + 'cp -v resources/* dist/osx/<%= filename %>/Contents/Resources/app/resources/ || :', + 'cp kitematic.icns dist/osx/<%= filename %>/Contents/Resources/atom.icns', + '/usr/libexec/PlistBuddy -c "Set :CFBundleVersion <%= version %>" dist/osx/<%= filename %>/Contents/Info.plist', + '/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName <%= name %>" dist/osx/<%= filename %>/Contents/Info.plist', + '/usr/libexec/PlistBuddy -c "Set :CFBundleName <%= name %>" dist/osx/<%= filename %>/Contents/Info.plist', + '/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier <%= bundle %>" dist/osx/<%= filename %>/Contents/Info.plist', + '/usr/libexec/PlistBuddy -c "Set :CFBundleExecutable <%= name %>" dist/osx/<%= filename %>/Contents/Info.plist' + ], { + templateData: { + filename: options.filename, + name: options.name, + version: packagejson.version, + bundle: 'com.kitematic.app' + } + })); + + dependencies.forEach(function (d) { + stream = stream.pipe(shell([ + 'cp -R node_modules/' + d + ' dist/osx/<%= filename %>/Contents/Resources/app/node_modules/' + ], { + templateData: { + filename: options.filename + } + })); + }); + + return stream; +}); + +gulp.task('sign', function () { + try { + var signing_identity = fs.readFileSync('./identity', 'utf8').trim(); + return gulp.src('').pipe(shell([ + 'codesign --deep --force --verbose --sign "' + signing_identity + '" ' + options.filename + ], { + cwd: './dist/osx/' + })); + } catch (error) { + gutil.log(gutil.colors.red('Error: ' + error.message)); + } +}); + +gulp.task('zip', function () { + return gulp.src('').pipe(shell([ + 'ditto -c -k --sequesterRsrc --keepParent ' + options.filename + ' ' + options.name + '-' + packagejson.version + '.zip' + ], { + cwd: './dist/osx/' + })); +}); + +gulp.task('release', function () { + runSequence('download', 'dist', ['copy', 'images', 'js', 'styles'], 'sign', 'zip'); +}); + +gulp.task('test', ['download', 'copy', 'js'], function () { + var env = process.env; + env.NODE_ENV = 'test'; + if (options.integration) { + gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom . --test --integration'], { + env: env + })); + } else { + gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom . --test'], { + env: env + })); + } +}); + +gulp.task('default', ['download', 'copy', 'js', 'images', 'styles'], function () { + gulp.watch('src/**/*.js', ['js']); + gulp.watch('index.html', ['copy']); + gulp.watch('styles/**/*.less', ['styles']); + gulp.watch('images/**', ['images']); + + livereload.listen(); + + var env = process.env; + env.NODE_ENV = 'development'; + gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom .'], { + env: env + })); +}); diff --git a/package.json b/package.json index de2dd005a1..a80e514676 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,12 @@ }, "bugs": "https://github.com/kitematic/kitematic/issues", "scripts": { - "start": "rsync ./index.html ./build/ && rsync ./fonts/* ./build/ && rsync ./images/* ./build && jsx --watch src/ build/ & wess -w -m -i ./styles/main.less -o ./build/main.css & wiper -w ./build/**/*.* & npm run start:$(uname) && kill $(pgrep node)", - "start:Darwin": "NODE_ENV=development ./cache/darwin/Atom.app/Contents/MacOS/Atom .", - "start:Linux": "NODE_ENV=development ./cache/linux/atom .", - "test": "jsx --watch src build/ & rsync ./images/* ./build && wess -m -i ./styles/main.less -o ./build/main.css && npm run test:$(uname) && kill $(pgrep node)", - "test:Darwin": "NODE_ENV=test ./cache/darwin/Atom.app/Contents/MacOS/Atom . --test", - "test:Linux": "NODE_ENV=test ./cache/darwin/atom .", - "release": "./release" + "start": "gulp", + "test": "gulp test --silent", + "integration-tests": "gulp test --silent --integration", + "all-tests": "npm test && npm run integration-tests", + "release": "gulp run release", + "preinstall": "./deps" }, "licenses": [ { @@ -32,15 +31,17 @@ "debug" ] }, - "boot2docker-version": "1.3.2", + "boot2docker-version": "1.4.1", "atom-shell-version": "0.21.0", + "virtualbox-version": "4.3.20", + "virtualbox-filename": "VirtualBox-4.3.20-96996-OSX.dmg", + "virtualbox-required-version": "4.3.18", "dependencies": { "ansi-to-html": "0.2.0", "async": "^0.9.0", - "bugsnag-js": "^2.4.6", + "bugsnag-js": "git+https://git@github.com/bugsnag/bugsnag-js", "dockerode": "2.0.4", "exec": "0.1.2", - "gulp-react": "^2.0.0", "jest-cli": "^0.2.1", "jquery": "^2.1.3", "minimist": "^1.1.0", @@ -57,15 +58,33 @@ "underscore": "^1.7.0" }, "devDependencies": { + "browserify": "^6.2.0", "ecstatic": "^0.5.8", "glob": "^4.0.6", - "jasmine-node": "^1.14.5", - "jasmine-reporters": "^1.0.1", - "jasmine-tagged": "^1.1.2", - "jasmine-terminal-reporter": "^0.9.1", - "react-tools": "^0.12.2", - "wess": "^0.2.2", - "wiper": "^1.0.2", + "gulp": "^3.8.10", + "gulp-atom": "0.0.5", + "gulp-concat": "^2.3.4", + "gulp-cssmin": "^0.1.6", + "gulp-download-atom-shell": "0.0.4", + "gulp-if": "^1.2.4", + "gulp-imagemin": "^2.0.0", + "gulp-less": "^2.0.1", + "gulp-livereload": "^2.1.1", + "gulp-notify": "^1.4.2", + "gulp-plumber": "^0.6.6", + "gulp-react": "^2.0.0", + "gulp-shell": "^0.2.11", + "gulp-sourcemaps": "^1.2.8", + "gulp-streamify": "0.0.5", + "gulp-uglify": "^0.3.1", + "gulp-uglifyjs": "^0.5.0", + "gulp-util": "^3.0.0", + "reactify": "^0.15.2", + "rimraf": "^2.2.8", + "run-sequence": "^1.0.2", + "time-require": "^0.1.2", + "vinyl-source-stream": "^0.1.1", + "watchify": "^2.1.1", "zombie": "^2.5.1" } } diff --git a/release b/release deleted file mode 100755 index 7aa58dac37..0000000000 --- a/release +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -BASE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -export NAME=$(node -pe "JSON.parse(process.argv[1])['name']" "$(cat $BASE/package.json)") -export VERSION=$(node -pe "JSON.parse(process.argv[1])['version']" "$(cat $BASE/package.json)") -export FILENAME=$NAME.app -export BUNDLE=com.kitematic.app - -rm -Rf ./dist -mkdir -p ./dist/osx -cp -R ./cache/Atom.app ./dist/osx/$FILENAME -mv ./dist/osx/$FILENAME/Contents/MacOS/Atom ./dist/osx/$FILENAME/Contents/MacOS/$NAME -mkdir -p ./dist/osx/$FILENAME/Contents/Resources/app -cp -R browser dist/osx/$FILENAME/Contents/Resources/app -cp package.json dist/osx/$FILENAME/Contents/Resources/app/ -mkdir -p dist/osx/$FILENAME/Contents/Resources/app/resources -mkdir -p dist/osx/$FILENAME/Contents/Resources/app/node_modules -cp -v resources/* dist/osx/$FILENAME/Contents/Resources/app/resources/ || : -cp kitematic.icns dist/osx/$FILENAME/Contents/Resources/atom.icns -/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $VERSION" dist/osx/$FILENAME/Contents/Info.plist -/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName $NAME" dist/osx/$FILENAME/Contents/Info.plist -/usr/libexec/PlistBuddy -c "Set :CFBundleName $NAME" dist/osx/$FILENAME/Contents/Info.plist -/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $BUNDLE" dist/osx/$FILENAME/Contents/Info.plist -/usr/libexec/PlistBuddy -c "Set :CFBundleExecutable $NAME" dist/osx/$FILENAME/Contents/Info.plist - -rsync ./index.html ./dist/osx/$FILENAME/Contents/Resources/app/build/ -rsync ./fonts/* ./dist/osx/$FILENAME/Contents/Resources/app/build/ -rsync ./images/* ./dist/osx/$FILENAME/Contents/Resources/app/build/ -jsx src/ ./dist/osx/$FILENAME/Contents/Resources/app/build/ -wess -m -i ./styles/main.less -o ./dist/osx/$FILENAME/Contents/Resources/app/build/main.css - -if [ -f $BASE/identity ]; then - codesign --deep --force --verbose --sign "$(cat $BASE/identity)" ./dist/osx/$FILENAME -fi - -ditto -c -k --sequesterRsrc --keepParent ./dist/osx/$FILENAME ./dist/osx/$NAME-$VERSION.zip diff --git a/resources/cocoasudo b/resources/cocoasudo new file mode 100755 index 0000000000000000000000000000000000000000..ccf0bf8aa1979901080b7b8378ee966848ffc510 GIT binary patch literal 47704 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, document.body); + SetupStore.run(function (err) { + boot2docker.ip(function (err, ip) { + docker.setHost(ip); + router.transitionTo('containers'); + ContainerStore.init(function () { + router.run(function (Handler) { + React.render(, document.body); + }); + }); + }); }); } else { boot2docker.ip(function (err, ip) { diff --git a/src/Setup.react.js b/src/Setup.react.js index 5a77893b5a..c86f389ed4 100644 --- a/src/Setup.react.js +++ b/src/Setup.react.js @@ -5,133 +5,9 @@ var async = require('async'); var assign = require('object-assign'); var fs = require('fs'); var path = require('path'); -var boot2docker = require('./Boot2Docker'); var virtualbox = require('./Virtualbox'); var util = require('./Util'); -var docker = require('./Docker'); -var ContainerStore = require('./ContainerStore'); - -var setupSteps = [ - { - run: function (callback, progressCallback) { - console.log(util.supportDir()); - var installed = virtualbox.installed(); - if (!installed) { - util.download('https://s3.amazonaws.com/kite-installer/' + virtualbox.INSTALLER_FILENAME, path.join(util.supportDir(), virtualbox.INSTALLER_FILENAME), virtualbox.INSTALLER_CHECKSUM, function (err) { - if (err) {callback(err); return;} - virtualbox.install(function (err) { - if (!virtualbox.installed()) { - callback('VirtualBox could not be installed. The installation either failed or was cancelled. Please try closing all VirtualBox instances and try again.'); - } else { - callback(err); - } - }); - }, function (progress) { - progressCallback(progress); - }); - } else { - virtualbox.version(function (err, installedVersion) { - if (err) {callback(err); return;} - if (util.compareVersions(installedVersion, virtualbox.REQUIRED_VERSION) < 0) { - // Download a newer version of Virtualbox - util.downloadFile(Setup.BASE_URL + virtualbox.INSTALLER_FILENAME, path.join(util.getResourceDir(), virtualbox.INSTALLER_FILENAME), virtualbox.INSTALLER_CHECKSUM, function (err) { - if (err) {callback(err); return;} - virtualbox.kill(function (err) { - if (err) {callback(err); return;} - virtualbox.install(function (err) { - if (err) {callback(err); return;} - virtualbox.version(function (err, installedVersion) { - if (err) {callback(err); return;} - if (util.compareVersions(installedVersion, virtualbox.REQUIRED_VERSION) < 0) { - callback('VirtualBox could not be installed. The installation either failed or was cancelled. Please try closing all VirtualBox instances and try again.'); - } else { - callback(err); - } - }); - }); - }); - }, function (progress) { - progressCallback(progress); - }); - } else { - callback(); - } - }); - } - }, - message: 'Downloading VirtualBox...' - }, - { - run: function (callback) { - virtualbox.deleteVM('kitematic-vm', function (err, removed) { - if (err) { - console.log(err); - } - callback(); - }); - }, - message: 'Cleaning up existing Docker VM...' - }, - - // Initialize Boot2Docker if necessary. - { - run: function (callback) { - boot2docker.exists(function (err, exists) { - if (err) { callback(err); return; } - if (!exists) { - boot2docker.init(function (err) { - callback(err); - }); - } else { - if (!boot2docker.sshKeyExists()) { - callback('Boot2Docker SSH key doesn\'t exist. Fix by removing the existing Boot2Docker VM and re-run the installer. This usually occurs because an old version of Boot2Docker is installed.'); - } else { - boot2docker.isoVersion(function (err, version) { - if (err || util.compareVersions(version, boot2docker.version()) < 0) { - boot2docker.stop(function(err) { - boot2docker.upgrade(function (err) { - callback(err); - }); - }); - } else { - callback(); - } - }); - } - } - }); - }, - message: 'Setting up the Docker VM...' - }, - { - run: function (callback) { - boot2docker.waitWhileStatus('saving', function (err) { - boot2docker.status(function (err, status) { - if (err) {callback(err); return;} - if (status !== 'running') { - boot2docker.start(function (err) { - callback(err); - }); - } else { - callback(); - } - }); - }); - }, - message: 'Starting the Docker VM...' - }, - { - run: function (callback) { - boot2docker.ip(function (err, ip) { - if (err) {callback(err); return;} - console.log('Setting host IP to: ' + ip); - docker.setHost(ip); - callback(err); - }); - }, - message: 'Detecting Docker VM...' - } -]; +var SetupStore = require('./SetupStore'); var Setup = React.createClass({ mixins: [ Router.Navigation ], @@ -140,6 +16,14 @@ var Setup = React.createClass({ message: '', progress: 0 }; + }, + componentWillMount: function () { + SetupStore.on(SetupStore.PROGRESS_EVENT, this.update); + }, + componentDidMount: function () { + }, + update: function () { + }, render: function () { var radial; @@ -165,53 +49,6 @@ var Setup = React.createClass({ ); } - }, - componentWillMount: function () { - this.setState({}); - }, - componentDidMount: function () { - var self = this; - this.setup(function (err) { - if (!err) { - boot2docker.ip(function (err, ip) { - docker.setHost(ip); - ContainerStore.init(function () { - self.transitionTo('containers'); - }); - }); - } - }); - }, - setup: function (callback) { - var self = this; - var currentStep = 0; - async.eachSeries(setupSteps, function (step, callback) { - console.log('Performing step ' + currentStep); - self.setState({progress: 0}); - self.setState({message: step.message}); - step.run(function (err) { - if (err) { - callback(err); - } else { - currentStep += 1; - callback(); - } - }, function (progress) { - self.setState({progress: progress}); - }); - }, function (err) { - if (err) { - // if any of the steps fail - console.log('Kitematic setup failed at step ' + currentStep); - console.log(err); - self.setState({error: err.message}); - callback(err); - } else { - // Setup Finished - console.log('Setup finished.'); - callback(); - } - }); } }); diff --git a/src/SetupStore.js b/src/SetupStore.js new file mode 100644 index 0000000000..3dcf5fbdb1 --- /dev/null +++ b/src/SetupStore.js @@ -0,0 +1,201 @@ +var EventEmitter = require('events').EventEmitter; +var assign = require('object-assign'); +var async = require('async'); +var fs = require('fs'); +var path = require('path'); +var exec = require('exec'); +var boot2docker = require('./Boot2Docker'); +var virtualbox = require('./Virtualbox'); +var setupUtil = require('./SetupUtil'); +var packagejson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')); + +var _currentStep = null; +var _error = null; +var _progress = null; + +var SetupStore = assign(EventEmitter.prototype, { + PROGRESS_EVENT: 'setup_progress', + STEP_EVENT: 'setup_step', + ERROR_EVENT: 'setup_error', + downloadVirtualboxStep: { + _download: function (callback, progressCallback) { + setupUtil.virtualboxSHA256(packagejson['virtualbox-version'], packagejson['virtualbox-filename'], function (err, checksum) { + if (err) { + callback(err); + return; + } + var url = 'http://download.virtualbox.org/virtualbox/' + packagejson['virtualbox-version'] + '/' + packagejson['virtualbox-filename']; + var downloadPath = path.join(setupUtil.supportDir(), packagejson['virtualbox-filename']); + setupUtil.download(url, downloadPath, checksum, function (err) { + callback(err); + }, function (progress) { + progressCallback(progress); + }); + }); + }, + run: function (callback, progressCallback) { + if (virtualbox.installed()) { + virtualbox.version(function (err, version) { + if (err) {callback(err); return;} + if (setupUtil.compareVersions(version, packagejson['virtualbox-required-version']) < 0) { + this._download(callback, progressCallback); + } else { + callback(); + } + }); + } else { + this._download(callback, progressCallback); + } + }, + name: 'downloading_virtualbox', + message: 'Downloading Virtualbox', + }, + installVirtualboxStep: { + _install: function (callback) { + exec(['hdiutil', 'attach', path.join(setupUtil.supportDir(), 'VirtualBox-4.3.20-96996-OSX.dmg')], function (stderr, stdout, code) { + if (code) { + callback(stderr); + return; + } + var iconPath = path.join(setupUtil.resourceDir(), 'kitematic.icns'); + setupUtil.isSudo(function (err, isSudo) { + sudoCmd = isSudo ? ['sudo'] : [path.join(setupUtil.resourceDir(), 'cocoasudo'), '--icon=' + iconPath, '--prompt=Kitematic requires administrative privileges to install VirtualBox and copy itself to the Applications folder.']; + sudoCmd.push.apply(sudoCmd, ['installer', '-pkg', '/Volumes/VirtualBox/VirtualBox.pkg', '-target', '/']); + exec(sudoCmd, function (stderr, stdout, code) { + if (code) { + console.log(stderr); + console.log(stdout); + callback('Could not install virtualbox.'); + } else { + exec(['hdiutil', 'detach', '/Volumes/VirtualBox'], function(stderr, stdout, code) { + if (code) { + callback(stderr); + } else { + callback(); + } + }); + } + }); + }); + }); + }, + run: function (callback) { + var self = this; + if (virtualbox.installed()) { + virtualbox.version(function (err, version) { + if (setupUtil.compareVersions(version, packagejson['virtualbox-required-version']) < 0) { + virtualbox.kill(function (err) { + if (err) {callback(err); return;} + self._install(function(err) { + callback(err); + }); + }); + } else { + callback(); + } + }); + } else { + self._install(function(err) { + callback(err); + }); + } + }, + name: 'installing_virtualbox', + message: 'Installing VirtualBox', + }, + cleanupKitematicStep: { + run: function (callback) { + virtualbox.vmdestroy('kitematic-vm', function (err, removed) { + if (err) { + console.log(err); + } + callback(); + }); + }, + name: 'cleanup_kitematic', + message: 'Cleaning up existing Kitematic install...' + }, + initBoot2DockerStep: { + run: function (callback) { + boot2docker.exists(function (err, exists) { + if (err) { callback(err); return; } + if (!exists) { + boot2docker.init(function (err) { + callback(err); + }); + } else { + if (!boot2docker.sshKeyExists()) { + callback('Boot2Docker SSH key doesn\'t exist. Fix by removing the existing Boot2Docker VM and re-run the installer. This usually occurs because an old version of Boot2Docker is installed.'); + } else { + boot2docker.isoVersion(function (err, version) { + if (err || setupUtil.compareVersions(version, boot2docker.version()) < 0) { + boot2docker.stop(function(err) { + boot2docker.upgrade(function (err) { + callback(err); + }); + }); + } else { + callback(); + } + }); + } + } + }); + }, + name: 'init_boot2docker', + message: 'Setting up the Docker VM...' + }, + startBoot2DockerStep: { + run: function (callback) { + boot2docker.waitWhileStatus('saving', function (err) { + boot2docker.status(function (err, status) { + if (err) {callback(err); return;} + if (status !== 'running') { + boot2docker.start(function (err) { + callback(err); + }); + } else { + callback(); + } + }); + }); + }, + name: 'start_boot2docker', + message: 'Starting the Docker VM...' + }, + step: function () { + return _currentStep; + }, + progress: function () { + return _progress; + }, + run: function (callback) { + var self = this; + var steps = [this.downloadVirtualboxStep, this.installVirtualboxStep, this.cleanupKitematicStep, this.initBoot2DockerStep, this.startBoot2DockerStep]; + async.eachSeries(steps, function (step, callback) { + console.log(step.name); + _currentStep = step; + _progress = null; + step.run(function (err) { + if (err) { + callback(err); + } else { + self.emit(self.STEP_EVENT); + callback(); + } + }, function (progress) { + self.emit(self.PROGRESS_EVENT, progress); + _progress = progress; + }); + }, function (err) { + if (err) { + self.emit(self.ERROR_EVENT, _error); + callback(err); + } else { + callback(); + } + }); + } +}); + +module.exports = SetupStore; diff --git a/src/Util.js b/src/SetupUtil.js similarity index 66% rename from src/Util.js rename to src/SetupUtil.js index 78a4c61035..d3b8d696e9 100644 --- a/src/Util.js +++ b/src/SetupUtil.js @@ -1,13 +1,13 @@ -var path = require('path'); -var fs = require('fs'); -var nodeCrypto = require('crypto'); var request = require('request'); var progress = require('request-progress'); +var path = require('path'); +var crypto = require('crypto'); +var fs = require('fs'); var exec = require('exec'); -var Util = { +var SetupUtil = { supportDir: function (callback) { - var dirs = ['Application\ Support', 'Kitematic']; + var dirs = ['Library', 'Application\ Support', 'Kitematic']; var acc = process.env.HOME; dirs.forEach(function (d) { acc = path.join(acc, d); @@ -17,6 +17,19 @@ var Util = { }); return acc; }, + resourceDir: function (callback) { + return process.env.RESOURCES_PATH; + }, + isSudo: function (callback) { + exec(['sudo', '-n', '-u', 'root', 'true'], function (stderr, stdout, code) { + if (code) { + callback(stderr); + } else { + var isSudo = stderr.indexOf('a password is required') === -1; + callback(null, isSudo); + } + }); + }, download: function (url, filename, checksum, callback, progressCallback) { var doDownload = function () { progress(request({ @@ -37,8 +50,7 @@ var Util = { // Compare checksum to see if it already exists first if (fs.existsSync(filename)) { - var existingChecksum = nodeCrypto.createHash('sha256').update(fs.readFileSync(filename), 'utf8').digest('hex'); - console.log(existingChecksum); + var existingChecksum = crypto.createHash('sha256').update(fs.readFileSync(filename), 'utf8').digest('hex'); if (existingChecksum !== checksum) { fs.unlinkSync(filename); doDownload(); @@ -49,6 +61,22 @@ var Util = { doDownload(); } }, + virtualboxSHA256: function (version, filename, callback) { + var checksumUrl = 'http://dlc-cdn.sun.com/virtualbox/' + version + '/SHA256SUMS'; + request(checksumUrl, function (error, response, body) { + if (error) { + callback(error); + return; + } + var checksums = body.split('\n').map(function (line) { + return line.split(' *'); + }).reduce(function (obj, pair) { + obj[pair[1]] = pair[0]; + return obj; + }, {}); + callback(null, checksums[filename]); + }); + }, compareVersions: function (v1, v2, options) { var lexicographical = options && options.lexicographical, zeroExtend = options && options.zeroExtend, @@ -100,4 +128,4 @@ var Util = { } }; -module.exports = Util; +module.exports = SetupUtil; diff --git a/src/Virtualbox.js b/src/Virtualbox.js index 503d4efad2..446537c461 100644 --- a/src/Virtualbox.js +++ b/src/Virtualbox.js @@ -5,32 +5,18 @@ var async = require('async'); var util = require('./Util'); var VirtualBox = { - REQUIRED_VERSION: '4.3.18', - INCLUDED_VERSION: '4.3.18', - INSTALLER_FILENAME: 'virtualbox-4.3.18.pkg', - INSTALLER_CHECKSUM: '5836c94481c460c648b9216386591a2915293ac86b9bb6c57746637796af6af2', command: function () { return '/usr/bin/VBoxManage'; }, installed: function () { return fs.existsSync('/usr/bin/VBoxManage') && fs.existsSync('/Applications/VirtualBox.app/Contents/MacOS/VirtualBox'); }, - install: function (callback) { - // -W waits for the process to close before finishing. - exec('open -W ' + path.join(util.supportDir(), this.INSTALLER_FILENAME).replace(' ', '\\ '), function (stderr, stdout, code) { - if (code) { - callback(stderr); - return; - } - callback(null); - }); - }, version: function (callback) { if (!this.installed()) { callback('VirtualBox not installed.'); return; } - exec('/usr/bin/VBoxManage -v', function (stderr, stdout, code) { + exec([this.command(), '-v'], function (stderr, stdout, code) { if (code) { callback(stderr); return; @@ -44,12 +30,12 @@ var VirtualBox = { callback(null, match[1]); }); }, - saveVMs: function (callback) { + poweroff: function (callback) { if (!this.installed()) { callback('VirtualBox not installed.'); return; } - exec('/usr/bin/VBoxManage list runningvms | sed -E \'s/.*\\{(.*)\\}/\\1/\' | xargs -L1 -I {} /usr/bin/VBoxManage controlvm {} savestate', function (stderr, stdout, code) { + exec(this.command() + ' list runningvms | sed -E \'s/.*\\{(.*)\\}/\\1/\' | xargs -L1 -I {} ' + this.command() + ' controlvm {} acpipowerbutton', function (stderr, stdout, code) { if (code) { callback(stderr); } else { @@ -58,7 +44,7 @@ var VirtualBox = { }); }, kill: function (callback) { - this.saveRunningVMs(function (err) { + this.poweroff(function (err) { if (err) {callback(err); return;} exec('pkill VirtualBox', function (stderr, stdout, code) { if (code) {callback(stderr); return;} @@ -69,7 +55,7 @@ var VirtualBox = { }); }); }, - vmState: function (name, callback) { + vmstate: function (name, callback) { exec(this.command() + ' showvminfo ' + name + ' --machinereadable', function (stderr, stdout, code) { if (code) { callback(stderr); return; } var match = stdout.match(/VMState="(\w+)"/); @@ -80,8 +66,9 @@ var VirtualBox = { callback(null, match[1]); }); }, - deleteVM:function (name, callback) { - VirtualBox.vmState(name, function (err, state) { + vmdestroy: function (name, callback) { + var self = this; + this.vmstate(name, function (err, state) { // No VM found if (err) { callback(null, false); return; } exec('/usr/bin/VBoxManage controlvm ' + name + ' acpipowerbutton', function (stderr, stdout, code) { @@ -91,7 +78,7 @@ var VirtualBox = { async.until(function () { return state === 'poweroff'; }, function (callback) { - VirtualBox.vmState(name, function (err, newState) { + self.vmstate(name, function (err, newState) { if (err) { callback(err); return; } state = newState; setTimeout(callback, 250); diff --git a/tests/SetupStore-integration.js b/tests/SetupStore-integration.js new file mode 100644 index 0000000000..4060a12812 --- /dev/null +++ b/tests/SetupStore-integration.js @@ -0,0 +1,100 @@ +var virtualbox = require('../build/Virtualbox'); +var SetupStore = require('../build/SetupStore'); +var setupUtil = require('../build/SetupUtil'); +var path = require('path'); +var fs = require('fs'); +var child_process = require('child_process'); +var exec = require('exec'); +var rimraf = require('rimraf'); +var packagejson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')); + +jasmine.DEFAULT_TIMEOUT_INTERVAL = 300000; // 5 minutes + +describe('Setup', function () { + describe('without virtualbox installed or downloaded', function () { + var virtualboxFile = path.join(setupUtil.supportDir(), packagejson['virtualbox-filename']); + beforeEach(function () { + if (fs.existsSync(virtualboxFile)) { + fs.unlinkSync(virtualboxFile); + } + spyOn(virtualbox, 'installed').andCallFake(function (callback) { + callback(false); + }); + }); + + it('downloads virtualbox', function (done) { + SetupStore.downloadVirtualboxStep.run(function (err) { + expect(err).toBeFalsy(); + expect(fs.existsSync(virtualboxFile)).toBe(true); + done(); + }, function (progress) { + + }); + }); + }); + + describe('with virtualbox downloaded but not installed', function () { + beforeEach(function (done) { + // 5 minute timeout per test + + SetupStore.downloadVirtualboxStep.run(function (err) { + if (virtualbox.installed()) { + virtualbox.kill(function (callback) { + done(); + }); + } else { + done(); + } + }, function (progress) {}); + }); + + it('does install virtualbox', function (done) { + SetupStore.installVirtualboxStep.run(function (err) { + expect(err).toBeFalsy(); + done(); + }); + }); + }); + + describe('with virtualbox installed', function () { + + // Before each teardown the boot2docker VM, keys and anything else + + describe('and with a kitematic vm', function () { + + }); + + describe('and without a boot2docker vm', function () { + + }); + + describe('and with an old boot2docker vm', function () { + + }); + + describe('and with a very old boot2docker vm', function () { + + }); + + describe('and with a boot2docker vm running', function () { + + }); + + describe('and with a boot2docker vm but with no ssh keys', function () { + + }); + + describe('and with a boot2docker vm being powered off', function () { + + }); + + describe('and with a boot2docker vm being removed', function () { + + }); + + describe('and with a boot2docker vm initialized but not running', function () { + + }); + }); + +}); diff --git a/tests/SetupUtil-integration.js b/tests/SetupUtil-integration.js new file mode 100644 index 0000000000..b56ef2e2e0 --- /dev/null +++ b/tests/SetupUtil-integration.js @@ -0,0 +1,10 @@ +var setupUtil = require('../build/SetupUtil'); + +describe('SetupUtils', function() { + it('returns live sha256 checksum for a given virtualbox version & filename', function (done) { + setupUtil.virtualboxSHA256('4.3.20', 'VirtualBox-4.3.20-96996-OSX.dmg', function (err, checksum) { + expect(checksum).toBe('744e77119a640a5974160213c9912568a3d88dbd06a2fc6b6970070941732705'); + done(); + }); + }); +}); diff --git a/specs/jasmine-2.1.3/boot.js b/tests/jasmine-2.1.3/boot.js similarity index 100% rename from specs/jasmine-2.1.3/boot.js rename to tests/jasmine-2.1.3/boot.js diff --git a/specs/jasmine-2.1.3/console.js b/tests/jasmine-2.1.3/console.js similarity index 98% rename from specs/jasmine-2.1.3/console.js rename to tests/jasmine-2.1.3/console.js index a65876e911..96026ab63a 100755 --- a/specs/jasmine-2.1.3/console.js +++ b/tests/jasmine-2.1.3/console.js @@ -57,8 +57,6 @@ getJasmineRequireObj().ConsoleReporter = function() { }, failedSuites = []; - print('ConsoleReporter is deprecated and will be removed in a future version.'); - this.jasmineStarted = function() { specCount = 0; failureCount = 0; diff --git a/specs/jasmine-2.1.3/jasmine-html.js b/tests/jasmine-2.1.3/jasmine-html.js similarity index 100% rename from specs/jasmine-2.1.3/jasmine-html.js rename to tests/jasmine-2.1.3/jasmine-html.js diff --git a/specs/jasmine-2.1.3/jasmine.css b/tests/jasmine-2.1.3/jasmine.css similarity index 100% rename from specs/jasmine-2.1.3/jasmine.css rename to tests/jasmine-2.1.3/jasmine.css diff --git a/specs/jasmine-2.1.3/jasmine.js b/tests/jasmine-2.1.3/jasmine.js similarity index 100% rename from specs/jasmine-2.1.3/jasmine.js rename to tests/jasmine-2.1.3/jasmine.js diff --git a/specs/jasmine-2.1.3/jasmine_favicon.png b/tests/jasmine-2.1.3/jasmine_favicon.png similarity index 100% rename from specs/jasmine-2.1.3/jasmine_favicon.png rename to tests/jasmine-2.1.3/jasmine_favicon.png diff --git a/specs/specs.html b/tests/tests.html similarity index 59% rename from specs/specs.html rename to tests/tests.html index 6cef94b504..0d298c493c 100755 --- a/specs/specs.html +++ b/tests/tests.html @@ -4,7 +4,6 @@ - - + diff --git a/specs/specs.js b/tests/tests.js similarity index 69% rename from specs/specs.js rename to tests/tests.js index 153e947977..e21261d882 100644 --- a/specs/specs.js +++ b/tests/tests.js @@ -2,19 +2,22 @@ window.jasmineRequire = require('./jasmine-2.1.3/jasmine'); require('./jasmine-2.1.3/jasmine-html'); require('./jasmine-2.1.3/boot'); var consoleReporter = require('./jasmine-2.1.3/console'); +var app = require('remote').require('app'); jasmine.getEnv().addReporter(new consoleReporter.ConsoleReporter()({ showColors: true, timer: new jasmine.Timer(), print: function() { - console.log(arguments); process.stdout.write.apply(process.stdout, arguments); + }, + onComplete: function () { + app.quit(); } })); var fs = require('fs'); -var tests = fs.readdirSync('./specs').filter(function (f) { - return f.indexOf('-spec') !== -1; +var tests = fs.readdirSync('./tests').filter(function (f) { + return f.indexOf('-' + process.env.TEST_TYPE) !== -1; }); tests.forEach(function (t) { diff --git a/tests/util/vboxuninstall b/tests/util/vboxuninstall new file mode 100755 index 0000000000..becb743bc6 --- /dev/null +++ b/tests/util/vboxuninstall @@ -0,0 +1,245 @@ +#!/bin/bash +# $Id: VirtualBox_Uninstall.tool 89624 2013-10-07 16:13:23Z bird $ +## @file +# VirtualBox Uninstaller Script. +# + +# +# Copyright (C) 2007-2013 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# Override any funny stuff from the user. +export PATH="/bin:/usr/bin:/sbin:/usr/sbin:$PATH" + +# +# Display a simple welcome message first. +# +echo "" +echo "Welcome to the VirtualBox uninstaller script." +echo "" + +# +# Check for arguments and display +# +my_default_prompt=0 +if test "$#" != "0"; then + if test "$#" != "1" -o "$1" != "--unattended"; then + echo "Error: Unknown argument(s): $*" + echo "" + echo "Usage: uninstall.sh [--unattended]" + echo "" + echo "If the '--unattended' option is not given, you will be prompted" + echo "for a Yes/No before doing the actual uninstallation." + echo "" + exit 4; + fi + my_default_prompt="Yes" +fi + +# +# Collect directories and files to remove. +# Note: Do NOT attempt adding directories or filenames with spaces! +# +declare -a my_directories +declare -a my_files + +# Users files first +test -f "${HOME}/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist" && my_files+=("${HOME}/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist") + +test -d /Library/StartupItems/VirtualBox/ && my_directories+=("/Library/StartupItems/VirtualBox/") +test -d /Library/Receipts/VBoxStartupItems.pkg/ && my_directories+=("/Library/Receipts/VBoxStartupItems.pkg/") + +test -d "/Library/Application Support/VirtualBox/LaunchDaemons/" && my_directories+=("/Library/Application Support/VirtualBox/LaunchDaemons/") +test -d "/Library/Application Support/VirtualBox/VBoxDrv.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxDrv.kext/") +test -d "/Library/Application Support/VirtualBox/VBoxUSB.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxUSB.kext/") +test -d "/Library/Application Support/VirtualBox/VBoxNetFlt.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxNetFlt.kext/") +test -d "/Library/Application Support/VirtualBox/VBoxNetAdp.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxNetAdp.kext/") +# Pre 4.3.0rc1 locations: +test -d /Library/Extensions/VBoxDrv.kext/ && my_directories+=("/Library/Extensions/VBoxDrv.kext/") +test -d /Library/Extensions/VBoxUSB.kext/ && my_directories+=("/Library/Extensions/VBoxUSB.kext/") +test -d /Library/Extensions/VBoxNetFlt.kext/ && my_directories+=("/Library/Extensions/VBoxNetFlt.kext/") +test -d /Library/Extensions/VBoxNetAdp.kext/ && my_directories+=("/Library/Extensions/VBoxNetAdp.kext/") +# Tiger support is obsolete, but we leave it here for a clean removing of older +# VirtualBox versions +test -d /Library/Extensions/VBoxDrvTiger.kext/ && my_directories+=("/Library/Extensions/VBoxDrvTiger.kext/") +test -d /Library/Extensions/VBoxUSBTiger.kext/ && my_directories+=("/Library/Extensions/VBoxUSBTiger.kext/") +test -d /Library/Receipts/VBoxKEXTs.pkg/ && my_directories+=("/Library/Receipts/VBoxKEXTs.pkg/") + +test -f /usr/bin/VirtualBox && my_files+=("/usr/bin/VirtualBox") +test -f /usr/bin/VBoxManage && my_files+=("/usr/bin/VBoxManage") +test -f /usr/bin/VBoxVRDP && my_files+=("/usr/bin/VBoxVRDP") +test -f /usr/bin/VBoxHeadless && my_files+=("/usr/bin/VBoxHeadless") +test -f /usr/bin/vboxwebsrv && my_files+=("/usr/bin/vboxwebsrv") +test -f /usr/bin/VBoxBalloonCtrl && my_files+=("/usr/bin/VBoxBalloonCtrl") +test -f /usr/bin/VBoxAutostart && my_files+=("/usr/bin/VBoxAutostart") +test -f /usr/bin/vbox-img && my_files+=("/usr/bin/vbox-img") +test -d /Library/Receipts/VirtualBoxCLI.pkg/ && my_directories+=("/Library/Receipts/VirtualBoxCLI.pkg/") +test -f /Library/LaunchDaemons/org.virtualbox.startup.plist && my_files+=("/Library/LaunchDaemons/org.virtualbox.startup.plist") + +test -d /Applications/VirtualBox.app/ && my_directories+=("/Applications/VirtualBox.app/") +test -d /Library/Receipts/VirtualBox.pkg/ && my_directories+=("/Library/Receipts/VirtualBox.pkg/") + +# legacy +test -d /Library/Receipts/VBoxDrv.pkg/ && my_directories+=("/Library/Receipts/VBoxDrv.pkg/") +test -d /Library/Receipts/VBoxUSB.pkg/ && my_directories+=("/Library/Receipts/VBoxUSB.pkg/") + +# python stuff +python_versions="2.3 2.5 2.6 2.7" +for p in $python_versions; do + test -f /Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.py && my_files+=("/Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.py") + test -f /Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.pyc && my_files+=("/Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.pyc") + test -f /Library/Python/$p/site-packages/vboxapi/__init__.py && my_files+=("/Library/Python/$p/site-packages/vboxapi/__init__.py") + test -f /Library/Python/$p/site-packages/vboxapi/__init__.pyc && my_files+=("/Library/Python/$p/site-packages/vboxapi/__init__.pyc") + test -f /Library/Python/$p/site-packages/vboxapi-1.0-py$p.egg-info && my_files+=("/Library/Python/$p/site-packages/vboxapi-1.0-py$p.egg-info") + test -d /Library/Python/$p/site-packages/vboxapi/ && my_directories+=("/Library/Python/$p/site-packages/vboxapi/") +done + +# +# Collect KEXTs to remove. +# Note that the unload order is significant. +# +declare -a my_kexts +for kext in org.virtualbox.kext.VBoxUSB org.virtualbox.kext.VBoxNetFlt org.virtualbox.kext.VBoxNetAdp org.virtualbox.kext.VBoxDrv; do + if /usr/sbin/kextstat -b $kext -l | grep -q $kext; then + my_kexts+=("$kext") + fi +done + +# +# Collect packages to forget +# +my_pb='org\.virtualbox\.pkg\.' +my_pkgs=`/usr/sbin/pkgutil --pkgs="${my_pb}vboxkexts|${my_pb}vboxstartupitems|${my_pb}virtualbox|${my_pb}virtualboxcli"` + +# +# Did we find anything to uninstall? +# +if test -z "${my_directories[*]}" -a -z "${my_files[*]}" -a -z "${my_kexts[*]}" -a -z "$my_pkgs"; then + echo "No VirtualBox files, directories, KEXTs or packages to uninstall." + echo "Done." + exit 0; +fi + +# +# Look for running VirtualBox processes and warn the user +# if something is running. Since deleting the files of +# running processes isn't fatal as such, we will leave it +# to the user to choose whether to continue or not. +# +# Note! comm isn't supported on Tiger, so we make -c to do the stripping. +# +my_processes="`ps -axco 'pid uid command' | grep -wEe '(VirtualBox|VirtualBoxVM|VBoxManage|VBoxHeadless|vboxwebsrv|VBoxXPCOMIPCD|VBoxSVC|VBoxNetDHCP|VBoxNetNAT)' | grep -vw grep | grep -vw VirtualBox_Uninstall.tool | tr '\n' '\a'`"; +if test -n "$my_processes"; then + echo 'Warning! Found the following active VirtualBox processes:' + echo "$my_processes" | tr '\a' '\n' + echo "" + echo "We recommend that you quit all VirtualBox processes before" + echo "uninstalling the product." + echo "" + if test "$my_default_prompt" != "Yes"; then + echo "Do you wish to continue none the less (Yes/No)?" + read my_answer + if test "$my_answer" != "Yes" -a "$my_answer" != "YES" -a "$my_answer" != "yes"; then + echo "Aborting uninstall. (answer: '$my_answer')". + exit 2; + fi + echo "" + my_answer="" + fi +fi + +# +# Display the files and directories that will be removed +# and get the user's consent before continuing. +# +if test -n "${my_files[*]}" -o -n "${my_directories[*]}"; then + echo "The following files and directories (bundles) will be removed:" + for file in "${my_files[@]}"; do echo " $file"; done + for dir in "${my_directories[@]}"; do echo " $dir"; done + echo "" +fi +if test -n "${my_kexts[*]}"; then + echo "And the following KEXTs will be unloaded:" + for kext in "${my_kexts[@]}"; do echo " $kext"; done + echo "" +fi +if test -n "$my_pkgs"; then + echo "And the traces of following packages will be removed:" + for kext in $my_pkgs; do echo " $kext"; done + echo "" +fi + +if test "$my_default_prompt" != "Yes"; then + echo "Do you wish to uninstall VirtualBox (Yes/No)?" + read my_answer + if test "$my_answer" != "Yes" -a "$my_answer" != "YES" -a "$my_answer" != "yes"; then + echo "Aborting uninstall. (answer: '$my_answer')". + exit 2; + fi + echo "" +fi + +# +# Unregister has to be done before the files are removed. +# +LSREGISTER=/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister +if [ -e ${LSREGISTER} ]; then + ${LSREGISTER} -u /Applications/VirtualBox.app > /dev/null + ${LSREGISTER} -u /Applications/VirtualBox.app/Contents/Resources/vmstarter.app > /dev/null +fi + +# +# Display the sudo usage instructions and execute the command. +# +echo "The uninstallation processes requires administrative privileges" +echo "because some of the installed files cannot be removed by a normal" +echo "user. You may be prompted for your password now..." +echo "" + +if test -n "${my_files[*]}" -o -n "${my_directories[*]}"; then + /usr/bin/sudo -p "Please enter %u's password:" /bin/rm -Rf "${my_files[@]}" "${my_directories[@]}" + my_rc=$? + if test "$my_rc" -ne 0; then + echo "An error occurred durning 'sudo rm', there should be a message above. (rc=$my_rc)" + test -x /usr/bin/sudo || echo "warning: Cannot find /usr/bin/sudo or it's not an executable." + test -x /bin/rm || echo "warning: Cannot find /bin/rm or it's not an executable" + echo "" + echo "The uninstall failed. Please retry." + exit 1; + fi +fi + +my_rc=0 +for kext in "${my_kexts[@]}"; do + echo unloading $kext + /usr/bin/sudo -p "Please enter %u's password (unloading $kext):" /sbin/kextunload -m $kext + my_rc2=$? + if test "$my_rc2" -ne 0; then + echo "An error occurred durning 'sudo /sbin/kextunload -m $kext', there should be a message above. (rc=$my_rc2)" + test -x /usr/bin/sudo || echo "warning: Cannot find /usr/bin/sudo or it's not an executable." + test -x /sbin/kextunload || echo "warning: Cannot find /sbin/kextunload or it's not an executable" + my_rc=$my_rc2 + fi +done +if test "$my_rc" -eq 0; then + echo "Successfully unloaded VirtualBox kernel extensions." +else + echo "Failed to unload one or more KEXTs, please reboot the machine to complete the uninstall." + exit 1; +fi + +# Cleaning up pkgutil database +for my_pkg in $my_pkgs; do + /usr/bin/sudo -p "Please enter %u's password (removing $my_pkg):" /usr/sbin/pkgutil --forget "$my_pkg" +done + +echo "Done." +exit 0; From 21f1ec1cca230311cd2e16636dd08fb2d7cfefbf Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Mon, 2 Feb 2015 12:05:56 -0500 Subject: [PATCH 11/12] Fixed problems with boot2docker integration, cleaned up tests. --- README.md | 10 ++++++++++ package.json | 2 +- specs/tests.js | 26 -------------------------- src/Boot2Docker.js | 8 +++++++- src/ContainerDetails.react.js | 20 +++++++++++++------- src/ContainerModal.react.js | 3 +++ src/ContainerStore.js | 13 ++++++++++--- src/ContainerUtil.js | 3 +-- src/Docker.js | 3 +-- src/Main.js | 10 +++++++--- tests/SetupStore-integration.js | 7 +++---- 11 files changed, 56 insertions(+), 49 deletions(-) delete mode 100644 specs/tests.js diff --git a/README.md b/README.md index ae738c4c2b..854c01e358 100755 --- a/README.md +++ b/README.md @@ -25,6 +25,16 @@ To run the app in development: - `npm run release` +### Unit Tests + +- `npm test` + +### Integration Tests + +Note that integration tests need to be run a Mac and _will_ remove your existing Boot2Docker VM, containers etc. + +- `npm run test:integration` + ## Uninstalling - Remove Kitematic.app diff --git a/package.json b/package.json index a80e514676..9371f56922 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "scripts": { "start": "gulp", "test": "gulp test --silent", - "integration-tests": "gulp test --silent --integration", + "test:integration": "gulp test --silent --integration", "all-tests": "npm test && npm run integration-tests", "release": "gulp run release", "preinstall": "./deps" diff --git a/specs/tests.js b/specs/tests.js deleted file mode 100644 index 394df65268..0000000000 --- a/specs/tests.js +++ /dev/null @@ -1,26 +0,0 @@ -window.jasmineRequire = require('./jasmine-2.1.3/jasmine'); -require('./jasmine-2.1.3/jasmine-html'); -require('./jasmine-2.1.3/boot'); -var consoleReporter = require('./jasmine-2.1.3/console'); -var app = require('remote').require('app'); - -jasmine.getEnv().addReporter(new consoleReporter.ConsoleReporter()({ - showColors: true, - timer: new jasmine.Timer(), - print: function() { - process.stdout.write.apply(process.stdout, arguments); - }, - onComplete: function () { - app.quit(); - } -})); - -console.log('hi'); -var fs = require('fs'); -var tests = fs.readdirSync('./tests').filter(function (f) { - return f.indexOf('-' + process.env.TEST_TYPE) !== -1; -}); - -tests.forEach(function (t) { - require('./' + t); -}); diff --git a/src/Boot2Docker.js b/src/Boot2Docker.js index 8e64baedc4..669a3f8f9f 100644 --- a/src/Boot2Docker.js +++ b/src/Boot2Docker.js @@ -84,7 +84,13 @@ var Boot2Docker = { cmdExec([Boot2Docker.command(), 'upgrade'], callback); }, ip: function (callback) { - cmdExec([Boot2Docker.command(), 'ip'], callback); + exec([Boot2Docker.command(), 'ip'], function (stderr, stdout, code) { + if (code) { + callback(stderr); + } else { + callback(null, stdout.trim().replace('\n', '')); + } + }); }, erase: function (callback) { var VMFileLocation = path.join(homeDir(), 'VirtualBox\\ VMs/boot2docker-vm'); diff --git a/src/ContainerDetails.react.js b/src/ContainerDetails.react.js index d753ef7c05..8ee442168b 100644 --- a/src/ContainerDetails.react.js +++ b/src/ContainerDetails.react.js @@ -76,7 +76,7 @@ var ContainerDetails = React.createClass({ var $viewPopover = $(this.getDOMNode()).find('.popover-view'); var $volumePopover = $(this.getDOMNode()).find('.popover-volume'); - if ($viewDropdown && $volumeDropdown && $viewPopover && $volumePopover) { + if ($viewDropdown.offset() && $volumeDropdown.offset()) { $viewPopover.offset({ top: $viewDropdown.offset().top + 32, left: $viewDropdown.offset().left - ($viewPopover.outerWidth() / 2) + 14 @@ -94,16 +94,19 @@ var ContainerDetails = React.createClass({ return; } this.setState({ + progress: ContainerStore.progress(this.getParams().name), env: ContainerUtil.env(container), }); var ports = ContainerUtil.ports(container); var webPorts = ['80', '8000', '8080', '3000', '5000', '2368']; + console.log(ports); this.setState({ ports: ports, defaultPort: _.find(_.keys(ports), function (port) { return webPorts.indexOf(port) !== -1; }) }); + console.log(this.state); this.updateLogs(); }, updateLogs: function (name) { @@ -134,6 +137,7 @@ var ContainerDetails = React.createClass({ handleView: function () { if (this.state.defaultPort) { console.log(this.state.defaultPort); + console.log(this.state.ports[this.state.defaultPort].url); exec(['open', this.state.ports[this.state.defaultPort].url], function (err) { if (err) { throw err; } }); @@ -159,11 +163,6 @@ var ContainerDetails = React.createClass({ console.log(err); }); }, - handleRestart: function () { - ContainerStore.restart(this.props.container.Name, function (err) { - console.log(err); - }); - }, handleTerminal: function () { var container = this.props.container; var terminal = path.join(process.cwd(), 'resources', 'terminal').replace(/ /g, '\\\\ '); @@ -310,6 +309,13 @@ var ContainerDetails = React.createClass({ disabled: !this.props.container.State.Running }); + var restartButtonClass = React.addons.classSet({ + btn: true, + 'btn-action': true, + 'with-icon': true, + disabled: this.props.container.State.Restarting + }); + var viewButtonClass = React.addons.classSet({ btn: true, 'btn-action': true, @@ -444,7 +450,7 @@ var ContainerDetails = React.createClass({ Volumes
Terminal diff --git a/src/ContainerModal.react.js b/src/ContainerModal.react.js index b9d862a7dd..64543d6f5f 100644 --- a/src/ContainerModal.react.js +++ b/src/ContainerModal.react.js @@ -83,6 +83,9 @@ var ContainerModal = React.createClass({ }, handleClick: function (name, event) { ContainerStore.create(name, 'latest', function (err, containerName) { + if (err) { + throw err; + } this.props.onRequestHide(); }.bind(this)); }, diff --git a/src/ContainerStore.js b/src/ContainerStore.js index 3f304fad0a..82f3eaa4e2 100644 --- a/src/ContainerStore.js +++ b/src/ContainerStore.js @@ -18,7 +18,6 @@ var _progress = {}; var _logs = {}; var _streams = {}; var _muted = {}; -var _config = {}; var ContainerStore = assign(EventEmitter.prototype, { CLIENT_CONTAINER_EVENT: 'client_container', @@ -250,7 +249,12 @@ var ContainerStore = assign(EventEmitter.prototype, { init: function (callback) { // TODO: Load cached data from db on loading this.fetchAllContainers(function (err) { - callback(); + if (err) { + callback(err); + return; + } else { + callback(); + } this.emit(this.CLIENT_CONTAINER_EVENT); this._resumePulling(); this._startListeningToEvents(); @@ -366,7 +370,6 @@ var ContainerStore = assign(EventEmitter.prototype, { }); stream.on('end', function () { delete _streams[name]; - console.log('end', name); }); }); }, @@ -381,6 +384,10 @@ var ContainerStore = assign(EventEmitter.prototype, { if (!data) { // Pull image self._createPlaceholderContainer(imageName, containerName, function (err, container) { + if (err) { + callback(err); + return; + } _containers[containerName] = container; self.emit(self.CLIENT_CONTAINER_EVENT, containerName, 'create'); _muted[containerName] = true; diff --git a/src/ContainerUtil.js b/src/ContainerUtil.js index 86aebd701a..61159f7186 100644 --- a/src/ContainerUtil.js +++ b/src/ContainerUtil.js @@ -15,9 +15,8 @@ var ContainerUtil = { ports: function (container, callback) { var res = {}; var ip = docker.host; - console.log(container); _.each(container.NetworkSettings.Ports, function (value, key) { - var dockerPort = key; + var dockerPort = key.split('/')[0]; var localUrl = null; var localUrlDisplay = null; if (value && value.length) { diff --git a/src/Docker.js b/src/Docker.js index ac9701546a..6c8768bf2e 100644 --- a/src/Docker.js +++ b/src/Docker.js @@ -12,8 +12,7 @@ var Docker = { return; } this._client = new dockerode({ - protocol: 'https', - host: this.host, + host: '192.168.59.103', port: 2376, ca: fs.readFileSync(path.join(certDir, 'ca.pem')), cert: fs.readFileSync(path.join(certDir, 'cert.pem')), diff --git a/src/Main.js b/src/Main.js index d908e18656..e58c34486a 100644 --- a/src/Main.js +++ b/src/Main.js @@ -2,7 +2,7 @@ var React = require('react'); var Router = require('react-router'); var RetinaImage = require('react-retina-image'); var async = require('async'); -var docker = require('./docker'); +var docker = require('./Docker'); var router = require('./router'); var boot2docker = require('./boot2docker'); var ContainerStore = require('./ContainerStore'); @@ -29,9 +29,11 @@ if (process.env.NODE_ENV === 'development') { if (!window.location.hash.length || window.location.hash === '#/') { SetupStore.run(function (err) { boot2docker.ip(function (err, ip) { + if (err) console.log(err); docker.setHost(ip); router.transitionTo('containers'); - ContainerStore.init(function () { + ContainerStore.init(function (err) { + if (err) console.log(err); router.run(function (Handler) { React.render(, document.body); }); @@ -40,8 +42,10 @@ if (!window.location.hash.length || window.location.hash === '#/') { }); } else { boot2docker.ip(function (err, ip) { + if (err) console.log(err); docker.setHost(ip); - ContainerStore.init(function () { + ContainerStore.init(function (err) { + if (err) console.log(err); router.run(function (Handler) { React.render(, document.body); }); diff --git a/tests/SetupStore-integration.js b/tests/SetupStore-integration.js index 4060a12812..2dde66b446 100644 --- a/tests/SetupStore-integration.js +++ b/tests/SetupStore-integration.js @@ -17,12 +17,10 @@ describe('Setup', function () { if (fs.existsSync(virtualboxFile)) { fs.unlinkSync(virtualboxFile); } - spyOn(virtualbox, 'installed').andCallFake(function (callback) { - callback(false); - }); + spyOn(virtualbox, 'installed').and.returnValue(false); }); - it('downloads virtualbox', function (done) { + it('downloads virtualbox from the official website', function (done) { SetupStore.downloadVirtualboxStep.run(function (err) { expect(err).toBeFalsy(); expect(fs.existsSync(virtualboxFile)).toBe(true); @@ -51,6 +49,7 @@ describe('Setup', function () { it('does install virtualbox', function (done) { SetupStore.installVirtualboxStep.run(function (err) { expect(err).toBeFalsy(); + expect(fs.existsSync(virtualbox.command())).toBe(true); done(); }); }); From 90ee518905065a9c7be9fb98b062b0f517f983a7 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Mon, 2 Feb 2015 12:07:08 -0500 Subject: [PATCH 12/12] Removing virtual box installer tool for now --- tests/util/vboxuninstall | 245 --------------------------------------- 1 file changed, 245 deletions(-) delete mode 100755 tests/util/vboxuninstall diff --git a/tests/util/vboxuninstall b/tests/util/vboxuninstall deleted file mode 100755 index becb743bc6..0000000000 --- a/tests/util/vboxuninstall +++ /dev/null @@ -1,245 +0,0 @@ -#!/bin/bash -# $Id: VirtualBox_Uninstall.tool 89624 2013-10-07 16:13:23Z bird $ -## @file -# VirtualBox Uninstaller Script. -# - -# -# Copyright (C) 2007-2013 Oracle Corporation -# -# This file is part of VirtualBox Open Source Edition (OSE), as -# available from http://www.virtualbox.org. This file is free software; -# you can redistribute it and/or modify it under the terms of the GNU -# General Public License (GPL) as published by the Free Software -# Foundation, in version 2 as it comes in the "COPYING" file of the -# VirtualBox OSE distribution. VirtualBox OSE is distributed in the -# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. -# - -# Override any funny stuff from the user. -export PATH="/bin:/usr/bin:/sbin:/usr/sbin:$PATH" - -# -# Display a simple welcome message first. -# -echo "" -echo "Welcome to the VirtualBox uninstaller script." -echo "" - -# -# Check for arguments and display -# -my_default_prompt=0 -if test "$#" != "0"; then - if test "$#" != "1" -o "$1" != "--unattended"; then - echo "Error: Unknown argument(s): $*" - echo "" - echo "Usage: uninstall.sh [--unattended]" - echo "" - echo "If the '--unattended' option is not given, you will be prompted" - echo "for a Yes/No before doing the actual uninstallation." - echo "" - exit 4; - fi - my_default_prompt="Yes" -fi - -# -# Collect directories and files to remove. -# Note: Do NOT attempt adding directories or filenames with spaces! -# -declare -a my_directories -declare -a my_files - -# Users files first -test -f "${HOME}/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist" && my_files+=("${HOME}/Library/LaunchAgents/org.virtualbox.vboxwebsrv.plist") - -test -d /Library/StartupItems/VirtualBox/ && my_directories+=("/Library/StartupItems/VirtualBox/") -test -d /Library/Receipts/VBoxStartupItems.pkg/ && my_directories+=("/Library/Receipts/VBoxStartupItems.pkg/") - -test -d "/Library/Application Support/VirtualBox/LaunchDaemons/" && my_directories+=("/Library/Application Support/VirtualBox/LaunchDaemons/") -test -d "/Library/Application Support/VirtualBox/VBoxDrv.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxDrv.kext/") -test -d "/Library/Application Support/VirtualBox/VBoxUSB.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxUSB.kext/") -test -d "/Library/Application Support/VirtualBox/VBoxNetFlt.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxNetFlt.kext/") -test -d "/Library/Application Support/VirtualBox/VBoxNetAdp.kext/" && my_directories+=("/Library/Application Support/VirtualBox/VBoxNetAdp.kext/") -# Pre 4.3.0rc1 locations: -test -d /Library/Extensions/VBoxDrv.kext/ && my_directories+=("/Library/Extensions/VBoxDrv.kext/") -test -d /Library/Extensions/VBoxUSB.kext/ && my_directories+=("/Library/Extensions/VBoxUSB.kext/") -test -d /Library/Extensions/VBoxNetFlt.kext/ && my_directories+=("/Library/Extensions/VBoxNetFlt.kext/") -test -d /Library/Extensions/VBoxNetAdp.kext/ && my_directories+=("/Library/Extensions/VBoxNetAdp.kext/") -# Tiger support is obsolete, but we leave it here for a clean removing of older -# VirtualBox versions -test -d /Library/Extensions/VBoxDrvTiger.kext/ && my_directories+=("/Library/Extensions/VBoxDrvTiger.kext/") -test -d /Library/Extensions/VBoxUSBTiger.kext/ && my_directories+=("/Library/Extensions/VBoxUSBTiger.kext/") -test -d /Library/Receipts/VBoxKEXTs.pkg/ && my_directories+=("/Library/Receipts/VBoxKEXTs.pkg/") - -test -f /usr/bin/VirtualBox && my_files+=("/usr/bin/VirtualBox") -test -f /usr/bin/VBoxManage && my_files+=("/usr/bin/VBoxManage") -test -f /usr/bin/VBoxVRDP && my_files+=("/usr/bin/VBoxVRDP") -test -f /usr/bin/VBoxHeadless && my_files+=("/usr/bin/VBoxHeadless") -test -f /usr/bin/vboxwebsrv && my_files+=("/usr/bin/vboxwebsrv") -test -f /usr/bin/VBoxBalloonCtrl && my_files+=("/usr/bin/VBoxBalloonCtrl") -test -f /usr/bin/VBoxAutostart && my_files+=("/usr/bin/VBoxAutostart") -test -f /usr/bin/vbox-img && my_files+=("/usr/bin/vbox-img") -test -d /Library/Receipts/VirtualBoxCLI.pkg/ && my_directories+=("/Library/Receipts/VirtualBoxCLI.pkg/") -test -f /Library/LaunchDaemons/org.virtualbox.startup.plist && my_files+=("/Library/LaunchDaemons/org.virtualbox.startup.plist") - -test -d /Applications/VirtualBox.app/ && my_directories+=("/Applications/VirtualBox.app/") -test -d /Library/Receipts/VirtualBox.pkg/ && my_directories+=("/Library/Receipts/VirtualBox.pkg/") - -# legacy -test -d /Library/Receipts/VBoxDrv.pkg/ && my_directories+=("/Library/Receipts/VBoxDrv.pkg/") -test -d /Library/Receipts/VBoxUSB.pkg/ && my_directories+=("/Library/Receipts/VBoxUSB.pkg/") - -# python stuff -python_versions="2.3 2.5 2.6 2.7" -for p in $python_versions; do - test -f /Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.py && my_files+=("/Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.py") - test -f /Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.pyc && my_files+=("/Library/Python/$p/site-packages/vboxapi/VirtualBox_constants.pyc") - test -f /Library/Python/$p/site-packages/vboxapi/__init__.py && my_files+=("/Library/Python/$p/site-packages/vboxapi/__init__.py") - test -f /Library/Python/$p/site-packages/vboxapi/__init__.pyc && my_files+=("/Library/Python/$p/site-packages/vboxapi/__init__.pyc") - test -f /Library/Python/$p/site-packages/vboxapi-1.0-py$p.egg-info && my_files+=("/Library/Python/$p/site-packages/vboxapi-1.0-py$p.egg-info") - test -d /Library/Python/$p/site-packages/vboxapi/ && my_directories+=("/Library/Python/$p/site-packages/vboxapi/") -done - -# -# Collect KEXTs to remove. -# Note that the unload order is significant. -# -declare -a my_kexts -for kext in org.virtualbox.kext.VBoxUSB org.virtualbox.kext.VBoxNetFlt org.virtualbox.kext.VBoxNetAdp org.virtualbox.kext.VBoxDrv; do - if /usr/sbin/kextstat -b $kext -l | grep -q $kext; then - my_kexts+=("$kext") - fi -done - -# -# Collect packages to forget -# -my_pb='org\.virtualbox\.pkg\.' -my_pkgs=`/usr/sbin/pkgutil --pkgs="${my_pb}vboxkexts|${my_pb}vboxstartupitems|${my_pb}virtualbox|${my_pb}virtualboxcli"` - -# -# Did we find anything to uninstall? -# -if test -z "${my_directories[*]}" -a -z "${my_files[*]}" -a -z "${my_kexts[*]}" -a -z "$my_pkgs"; then - echo "No VirtualBox files, directories, KEXTs or packages to uninstall." - echo "Done." - exit 0; -fi - -# -# Look for running VirtualBox processes and warn the user -# if something is running. Since deleting the files of -# running processes isn't fatal as such, we will leave it -# to the user to choose whether to continue or not. -# -# Note! comm isn't supported on Tiger, so we make -c to do the stripping. -# -my_processes="`ps -axco 'pid uid command' | grep -wEe '(VirtualBox|VirtualBoxVM|VBoxManage|VBoxHeadless|vboxwebsrv|VBoxXPCOMIPCD|VBoxSVC|VBoxNetDHCP|VBoxNetNAT)' | grep -vw grep | grep -vw VirtualBox_Uninstall.tool | tr '\n' '\a'`"; -if test -n "$my_processes"; then - echo 'Warning! Found the following active VirtualBox processes:' - echo "$my_processes" | tr '\a' '\n' - echo "" - echo "We recommend that you quit all VirtualBox processes before" - echo "uninstalling the product." - echo "" - if test "$my_default_prompt" != "Yes"; then - echo "Do you wish to continue none the less (Yes/No)?" - read my_answer - if test "$my_answer" != "Yes" -a "$my_answer" != "YES" -a "$my_answer" != "yes"; then - echo "Aborting uninstall. (answer: '$my_answer')". - exit 2; - fi - echo "" - my_answer="" - fi -fi - -# -# Display the files and directories that will be removed -# and get the user's consent before continuing. -# -if test -n "${my_files[*]}" -o -n "${my_directories[*]}"; then - echo "The following files and directories (bundles) will be removed:" - for file in "${my_files[@]}"; do echo " $file"; done - for dir in "${my_directories[@]}"; do echo " $dir"; done - echo "" -fi -if test -n "${my_kexts[*]}"; then - echo "And the following KEXTs will be unloaded:" - for kext in "${my_kexts[@]}"; do echo " $kext"; done - echo "" -fi -if test -n "$my_pkgs"; then - echo "And the traces of following packages will be removed:" - for kext in $my_pkgs; do echo " $kext"; done - echo "" -fi - -if test "$my_default_prompt" != "Yes"; then - echo "Do you wish to uninstall VirtualBox (Yes/No)?" - read my_answer - if test "$my_answer" != "Yes" -a "$my_answer" != "YES" -a "$my_answer" != "yes"; then - echo "Aborting uninstall. (answer: '$my_answer')". - exit 2; - fi - echo "" -fi - -# -# Unregister has to be done before the files are removed. -# -LSREGISTER=/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -if [ -e ${LSREGISTER} ]; then - ${LSREGISTER} -u /Applications/VirtualBox.app > /dev/null - ${LSREGISTER} -u /Applications/VirtualBox.app/Contents/Resources/vmstarter.app > /dev/null -fi - -# -# Display the sudo usage instructions and execute the command. -# -echo "The uninstallation processes requires administrative privileges" -echo "because some of the installed files cannot be removed by a normal" -echo "user. You may be prompted for your password now..." -echo "" - -if test -n "${my_files[*]}" -o -n "${my_directories[*]}"; then - /usr/bin/sudo -p "Please enter %u's password:" /bin/rm -Rf "${my_files[@]}" "${my_directories[@]}" - my_rc=$? - if test "$my_rc" -ne 0; then - echo "An error occurred durning 'sudo rm', there should be a message above. (rc=$my_rc)" - test -x /usr/bin/sudo || echo "warning: Cannot find /usr/bin/sudo or it's not an executable." - test -x /bin/rm || echo "warning: Cannot find /bin/rm or it's not an executable" - echo "" - echo "The uninstall failed. Please retry." - exit 1; - fi -fi - -my_rc=0 -for kext in "${my_kexts[@]}"; do - echo unloading $kext - /usr/bin/sudo -p "Please enter %u's password (unloading $kext):" /sbin/kextunload -m $kext - my_rc2=$? - if test "$my_rc2" -ne 0; then - echo "An error occurred durning 'sudo /sbin/kextunload -m $kext', there should be a message above. (rc=$my_rc2)" - test -x /usr/bin/sudo || echo "warning: Cannot find /usr/bin/sudo or it's not an executable." - test -x /sbin/kextunload || echo "warning: Cannot find /sbin/kextunload or it's not an executable" - my_rc=$my_rc2 - fi -done -if test "$my_rc" -eq 0; then - echo "Successfully unloaded VirtualBox kernel extensions." -else - echo "Failed to unload one or more KEXTs, please reboot the machine to complete the uninstall." - exit 1; -fi - -# Cleaning up pkgutil database -for my_pkg in $my_pkgs; do - /usr/bin/sudo -p "Please enter %u's password (removing $my_pkg):" /usr/sbin/pkgutil --forget "$my_pkg" -done - -echo "Done." -exit 0;