diff --git a/.gitignore b/.gitignore index f602e444..195c8c08 100755 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ node_modules/* bower_components/* gulpfile.js enp-quiz.code-workspace +.vscode/launch.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..112c0fc3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "phpsab.fixerEnable": false, + "intelephense.format.enable": false, + "phpcbf.enable": false, + "phpcs.standard": "./rulesetsPHPCS.xml" +} \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 00000000..ab9e2b27 --- /dev/null +++ b/composer.json @@ -0,0 +1,8 @@ +{ + "require-dev": { + "squizlabs/php_codesniffer": "*" + }, + "require": { + "tinymce/tinymce": "^6.0" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 00000000..c3c50f84 --- /dev/null +++ b/composer.lock @@ -0,0 +1,135 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "7ac3a7fd281421aaf4dbaf68acf92a44", + "packages": [ + { + "name": "tinymce/tinymce", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/tinymce/tinymce-dist.git", + "reference": "6eb0c53e09bd552740dee0ede369f6b97d6983d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/6eb0c53e09bd552740dee0ede369f6b97d6983d5", + "reference": "6eb0c53e09bd552740dee0ede369f6b97d6983d5", + "shasum": "" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "tinymce.js", + "plugins/*/plugin.js", + "themes/*/theme.js", + "models/*/model.js", + "icons/*/icons.js" + ], + "files": [ + "tinymce.min.js", + "plugins/*/plugin.min.js", + "themes/*/theme.min.js", + "models/*/model.min.js", + "skins/**", + "icons/*/icons.min.js" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT-only" + ], + "description": "Web based JavaScript HTML WYSIWYG editor control.", + "homepage": "https://www.tiny.cloud/", + "keywords": [ + "contenteditable", + "editing", + "html", + "javascript", + "rich editor", + "rich text", + "rich text editor", + "richtext", + "rte", + "text", + "tinymce", + "wysiwyg" + ], + "support": { + "source": "https://github.com/tinymce/tinymce-dist/tree/6.0.2" + }, + "time": "2022-04-27T03:41:08+00:00" + } + ], + "packages-dev": [ + { + "name": "squizlabs/php_codesniffer", + "version": "3.6.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2021-12-12T21:44:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.2.0" +} diff --git a/database/class-enp_quiz_db.php b/database/class-enp_quiz_db.php index f6bebb20..c2ea0fae 100644 --- a/database/class-enp_quiz_db.php +++ b/database/class-enp_quiz_db.php @@ -12,205 +12,239 @@ class enp_quiz_Db extends PDO { - public function __construct() - { - // check if a connection already exists - try { - // config file for connection info and necessary variables - include($_SERVER["DOCUMENT_ROOT"] . '/enp-quiz-database-config.php'); - // Table names for dynamic reference - $this->quiz_table = $enp_quiz_table_quiz; - $this->quiz_option_table = $enp_quiz_table_quiz_option; - $this->question_table = $enp_quiz_table_question; - $this->question_mc_option_table = $enp_quiz_table_question_mc_option; - $this->question_slider_table = $enp_quiz_table_question_slider; - $this->ab_test_table = $enp_quiz_table_ab_test; - $this->response_quiz_table = $enp_quiz_table_response_quiz; - $this->response_question_table = $enp_quiz_table_response_question; - $this->response_mc_table = $enp_quiz_table_response_mc; - $this->response_slider_table = $enp_quiz_table_response_slider; - $this->response_ab_test_table = $enp_quiz_table_ab_test_response; - $this->embed_site_table = $enp_quiz_table_embed_site; - $this->embed_site_type_table = $enp_quiz_table_embed_site_type; - $this->embed_site_br_site_type_table = $enp_quiz_table_embed_site_br_site_type; - $this->embed_quiz_table = $enp_quiz_table_embed_quiz; - - // set options for PDO connection - $options = array( - PDO::ATTR_PERSISTENT => true, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION - ); - // create the new connection - parent::__construct( - 'mysql:host=' . $enp_db_host . ';dbname=' . $enp_db_name, - // for windows users possible fix for PDO error, change 'mysql:host=' line above to: - // 'sqlsrv:Server=' . $enp_db_host . ';Database=' . $enp_db_name, - $enp_db_user, - $enp_db_password, - $options - ); - } catch (Exception $e) { - $this->errors = $e->getMessage(); - } - } - - public function runQuery($sql, $params = null) { - $stmt = $this->prepare($sql); - $stmt->execute($params); - return $stmt; - } - - public function fetchOne($sql, $params = []) - { - $stmt = $this->query($sql, $params); - return $stmt->fetch(PDO::FETCH_ASSOC); - } - - public function fetchAll($sql, $params = []) - { - $stmt = $this->query($sql, $params); - return $stmt->fetchAll(PDO::FETCH_ASSOC); - } - - /* + public function __construct() { + // check if a connection already exists + try { + // config file for connection info and necessary variables + include($_SERVER["DOCUMENT_ROOT"].'/enp-quiz-database-config.php'); + // Table names for dynamic reference + $this->quiz_table = $enp_quiz_table_quiz; + $this->quiz_option_table = $enp_quiz_table_quiz_option; + $this->question_table = $enp_quiz_table_question; + $this->question_mc_option_table = $enp_quiz_table_question_mc_option; + $this->question_slider_table = $enp_quiz_table_question_slider; + $this->ab_test_table = $enp_quiz_table_ab_test; + $this->response_quiz_table = $enp_quiz_table_response_quiz; + $this->response_question_table = $enp_quiz_table_response_question; + $this->response_mc_table = $enp_quiz_table_response_mc; + $this->response_slider_table = $enp_quiz_table_response_slider; + $this->response_ab_test_table = $enp_quiz_table_ab_test_response; + $this->embed_site_table = $enp_quiz_table_embed_site; + $this->embed_site_type_table = $enp_quiz_table_embed_site_type; + $this->embed_site_br_site_type_table = $enp_quiz_table_embed_site_br_site_type; + $this->embed_quiz_table = $enp_quiz_table_embed_quiz; + + // set options for PDO connection + $options = array( + PDO::ATTR_PERSISTENT => true, + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION + ); + // create the new connection + parent::__construct('mysql:host='.$enp_db_host.';dbname='.$enp_db_name, + $enp_db_user, + $enp_db_password, + $options); + } catch (Exception $e) { + $this->errors = $e->getMessage(); + } + } + + public function query($sql, $params = null) { + $stmt = $this->prepare($sql); + $stmt->execute($params); + return $stmt; + } + + public function fetchOne($sql, $params = []) { + $stmt = $this->query($sql, $params); + return $stmt->fetch(PDO::FETCH_ASSOC); + } + + public function fetchAll($sql, $params = []) { + $stmt = $this->query($sql, $params); + return $stmt->fetchAll(PDO::FETCH_ASSOC); + } + + /* * Get Quizzes * */ - public function getQuizzes($where = []) - { - - $params = $this->buildParams($where); - $sql = "SELECT * from " . $this->quiz_table . " WHERE quiz_is_deleted = 0"; - - if ($where) { - $sql .= $this->buildWhere($params, true); - } - - return $this->fetchAll($sql, $params); - } - - /* + public function getQuizzes($where = []) + { + + $params = $this->buildParams($where); + $sql = "SELECT * from ".$this->quiz_table." WHERE quiz_is_deleted = 0"; + + if($where) { + $sql .= $this->buildWhere($params, true); + } + + return $this->fetchAll($sql, $params); + } + + if ($where) { + $sql .= $this->buildWhere($params, true); + } + + return $this->fetchAll($sql, $params); + } + + /* * Get Domains * */ - public function getDomains($where = []) - { - - $params = $this->buildParams($where); - $sql = "SELECT DISTINCT(SUBSTRING_INDEX((SUBSTRING_INDEX((SUBSTRING_INDEX(embed_site_url, '://', -1)), '/', 1)), '.', -2)) as domain from " . $this->embed_site_table; - - if ($where) { - $sql .= $this->buildWhere($params, true); - } - - return $this->fetchAll($sql, $params); - } - - /* + public function getDomains($where = []) + { + + $params = $this->buildParams($where); + $sql = "SELECT DISTINCT(SUBSTRING_INDEX((SUBSTRING_INDEX((SUBSTRING_INDEX(embed_site_url, '://', -1)), '/', 1)), '.', -2)) as domain from ".$this->embed_site_table; + + if($where) { + $sql .= $this->buildWhere($params, true); + } + + return $this->fetchAll($sql, $params); + } + + /* * Get Sites * */ - public function getSites($where = []) - { - - $params = $this->buildParams($where); - $sql = "SELECT * from " . $this->embed_site_table; - - if ($where) { - $sql .= $this->buildWhere($params, true); - } - - return $this->fetchAll($sql, $params); - } - - /* + public function getSites($where = []) + { + + $params = $this->buildParams($where); + $sql = "SELECT * from ".$this->embed_site_table; + + if($where) { + $sql .= $this->buildWhere($params, true); + } + + return $this->fetchAll($sql, $params); + } + + if ($where) { + $sql .= $this->buildWhere($params, true); + } + + return $this->fetchAll($sql, $params); + } + + /* * Get Embeds * */ - public function getEmbeds($where = []) - { - - $params = $this->buildParams($where); - $sql = "SELECT * from " . $this->embed_quiz_table; - - if ($where) { - $sql .= $this->buildWhere($params, true); - } - - return $this->fetchAll($sql, $params); - } - - // TOTALS - public function getResponsesCorrectTotal() - { - $sql = "SELECT COUNT(*) from " . $this->response_question_table . " WHERE response_correct = 1"; - return (int) $this->fetchOne($sql)['COUNT(*)']; - } - - public function getResponsesIncorrectTotal() - { - $sql = "SELECT COUNT(*) from " . $this->response_question_table . " WHERE response_correct = 0"; - return (int) $this->fetchOne($sql)['COUNT(*)']; - } - - public function getMCQuestionsTotal() - { - $sql = "SELECT COUNT(*) from " . $this->question_table . " WHERE question_type = 'mc'"; - return (int) $this->fetchOne($sql)['COUNT(*)']; - } - - public function getSliderQuestionsTotal() - { - $sql = "SELECT COUNT(*) from " . $this->question_table . " WHERE question_type = 'slider'"; - return (int) $this->fetchOne($sql)['COUNT(*)']; - } - - public function getUniqueUsersTotal() - { - $sql = "SELECT COUNT(DISTINCT user_id) as users - FROM " . $this->response_quiz_table; - - return (int) $this->fetchOne($sql)['users']; - } - public function buildWhere($params, $where = true) - { - $sql = ''; - if ($where === true) { - $sql = ' WHERE '; - } - if (!empty($params)) { - $i = 1; - foreach ($params as $key => $val) { - if (is_array($val)) { - // for things like 'date > :date' - $sql .= $val['key'] . ' ' . $val['operator'] . ' ' . $val['val']; - } else { - $sql .= $key . ' = ' . $val; - } - if ($i !== count($params)) { - // not the last one, so add an AND statement - $where .= " AND "; - $i++; - } - } - } - return $sql; - } - - /** - * Builds out bound parameters in the array by adding a : to the beginning of the array keys - * - * @param $params ARRAY - * @return ARRAY - */ - public function buildParams($params) - { - $bound = []; - - foreach ($params as $key => $val) { - $bound[$key] = $val; - } - - return $bound; - } + public function getEmbeds($where = []) + { + + $params = $this->buildParams($where); + $sql = "SELECT * from ".$this->embed_quiz_table; + + if($where) { + $sql .= $this->buildWhere($params, true); + } + + return $this->fetchAll($sql, $params); + } + + if ($where) { + $sql .= $this->buildWhere($params, true); + } + + return $this->fetchAll($sql, $params); + } + + // TOTALS + public function getResponsesCorrectTotal() + { + $sql = "SELECT COUNT(*) from " . $this->response_question_table . " WHERE response_correct = 1"; + return (int) $this->fetchOne($sql)['COUNT(*)']; + } + + public function getResponsesIncorrectTotal() + { + $sql = "SELECT COUNT(*) from " . $this->response_question_table . " WHERE response_correct = 0"; + return (int) $this->fetchOne($sql)['COUNT(*)']; + } + + public function getMCQuestionsTotal() + { + $sql = "SELECT COUNT(*) from " . $this->question_table . " WHERE question_type = 'mc'"; + return (int) $this->fetchOne($sql)['COUNT(*)']; + } + + public function getSliderQuestionsTotal() + { + $sql = "SELECT COUNT(*) from " . $this->question_table . " WHERE question_type = 'slider'"; + return (int) $this->fetchOne($sql)['COUNT(*)']; + } + + } + public function buildWhere($params, $where = true) { + $sql = ''; + if($where === true) { + $sql = ' WHERE '; + } + if(!empty($params)) { + $i = 1; + foreach($params as $key => $val) { + if(is_array($val)) { + // for things like 'date > :date' + $sql .= $val['key'].' '.$val['operator'].' '.$val['val']; + } else { + $sql .= $key.' = '.$val; + } + if($i !== count($params)) { + // not the last one, so add an AND statement + $where .= " AND "; + $i++; + } + } + } + return $sql; + } + + return (int) $this->fetchOne($sql)['users']; + } + public function buildWhere($params, $where = true) + { + $sql = ''; + if ($where === true) { + $sql = ' WHERE '; + } + if (!empty($params)) { + $i = 1; + foreach ($params as $key => $val) { + if (is_array($val)) { + // for things like 'date > :date' + $sql .= $val['key'] . ' ' . $val['operator'] . ' ' . $val['val']; + } else { + $sql .= $key . ' = ' . $val; + } + if ($i !== count($params)) { + // not the last one, so add an AND statement + $where .= " AND "; + $i++; + } + } + } + return $sql; + } + + /** + * Builds out bound parameters in the array by adding a : to the beginning of the array keys + * + * @param $params ARRAY + * @return ARRAY + */ + public function buildParams($params) + { + $bound = []; + + foreach ($params as $key => $val) { + $bound[$key] = $val; + } + + return $bound; + } } diff --git a/database/class-enp_quiz_save_question.php b/database/class-enp_quiz_save_question.php index 389af83c..8e5045ba 100644 --- a/database/class-enp_quiz_save_question.php +++ b/database/class-enp_quiz_save_question.php @@ -28,43 +28,45 @@ public function __construct() { } /** - * Reformat and set values for a submitted question - * - * @param $question = array() in this format: - * $question = array( - * 'question_id' => $question['question_id'], - * 'question_title' =>$question['question_title'], - * 'question_type' =>$question['question_type'], - * 'question_explanation' => $question['question_explanation'], - * 'question_order' => $question['question_order'], - * ); - * @return nicely formatted and value validated question array - * ready to get passed on to mc_option or slider validation - */ - protected function prepare_submitted_question($question) { + * Reformat and set values for a submitted question + * + * @param $question = array() in this format: + * $question = array( + * 'question_id' => $question['question_id'], + * 'question_title' =>$question['question_title'], + * 'question_type' =>$question['question_type'], + * 'question_explanation' => $question['question_explanation'], + * 'question_order' => $question['question_order'], + * ); + * @return nicely formatted and value validated question array + * ready to get passed on to mc_option or slider validation + */ + protected function prepare_submitted_question( $question ) { self::$question = $question; // set the defaults/get the submitted values - $question_id = $this->set_question_value('question_id', 0); - $question_title = $this->set_question_value('question_title', ''); - $question_image_alt = $this->set_question_value('question_image_alt', ''); - $question_type = $this->set_question_value('question_type', 'mc'); - $question_explanation = $this->set_question_value('question_explanation', ''); - $question_order = $question['question_order']; - $question_is_deleted = $question['question_is_deleted']; + $question_id = $this->set_question_value( 'question_id', 0 ); + $question_title = $this->set_question_value( 'question_title', '' ); + $question_image_alt = $this->set_question_value( 'question_image_alt', '' ); + $question_type = $this->set_question_value( 'question_type', 'mc' ); + // $question_explanation = $this->set_question_value( 'question_explanation', '' ); + $question_order = $question['question_order']; + $question_is_deleted = $question['question_is_deleted']; // build our new array $prepared_question = array( - 'question_id' => $question_id, - 'question_title' => $question_title, - 'question_image_alt' => $question_image_alt, - 'question_type' => $question_type, - 'question_explanation' => $question_explanation, - 'question_order' => $question_order, - 'question_is_deleted' => $question_is_deleted, - ); - - self::$question = array_merge(self::$question, $prepared_question); + 'question_id' => $question_id, + 'question_title' => $question_title, + 'question_image_alt' => $question_image_alt, + 'question_type' => $question_type, + // 'question_explanation' => $question_explanation, + 'question_order' => $question_order, + 'question_is_deleted' => $question_is_deleted, + ); + + self::$question = array_merge( self::$question, $prepared_question ); // set the image self::$question['question_image'] = $this->set_question_image(); + // set the question explanation + self::$question['question_explanation'] = $this->set_question_explanation(); // we need to preprocess_mc_options and preprocess_slider to make sure each question has at least a slider array and mc_option array $this->preprocess_mc_options(); @@ -72,52 +74,63 @@ protected function prepare_submitted_question($question) { // merge the prepared question array so we don't lose our mc_option or slider values // check what the question type is and set the values accordingly - if(self::$question['question_type'] === 'mc') { + if(self::$question['question_type'] === 'mc' ) { // we have a mc question, so prepare the values // and set it as the mc_option array - self::$question['mc_option'] = $this->prepare_submitted_mc_options(self::$question['mc_option']); + self::$question['mc_option'] = $this->prepare_submitted_mc_options( self::$question['mc_option'] ); // check if the user action is to add a question. If so, add a slider in too // we only need to check here, because the default is MC option - if(parent::$user_action_action === 'add' && parent::$user_action_element === 'question') { - self::$question['slider'] = $this->prepare_submitted_slider(self::$question['slider']); + if(parent::$user_action_action === 'add' && parent::$user_action_element === 'question' ) { + self::$question['slider'] = $this->prepare_submitted_slider( self::$question['slider'] ); } - } elseif(self::$question['question_type'] === 'slider') { - self::$question['slider'] = $this->prepare_submitted_slider(self::$question['slider']); + } elseif(self::$question['question_type'] === 'slider' ) { + self::$question['slider'] = $this->prepare_submitted_slider( self::$question['slider'] ); } return self::$question; + } /** - * Sets our question image, uploads an image, or deletes it - */ + * Sets our question answer explanation + * TODO: if ajax push works undo below (add question_explanation to prepare_submitted_question array above) + */ + protected function set_question_explanation() { + // set our default + $question_explanation = $this->set_question_value( 'question_explanation', '' ); + return $question_explanation; + } + + /** + * Sets our question image, uploads an image, or deletes it + */ protected function set_question_image() { // set our default - $question_image = $this->set_question_value('question_image', ''); + $question_image = $this->set_question_value( 'question_image', '' ); // see if the user is trying to delete the image - if(parent::$user_action_action === 'delete' && parent::$user_action_element === 'question_image') { + if(parent::$user_action_action === 'delete' && parent::$user_action_element === 'question_image' ) { // see if it matches this question - if(parent::$user_action_details['question_id'] === (int)self::$question['question_id']) { + if(parent::$user_action_details['question_id'] === (int) self::$question['question_id'] ) { // they want to delete this image. I wonder what was so bad about it? $question_image = ''; - parent::$response_obj->add_success('Image deleted for Question #'.(self::$question['question_order']+1).'.'); + parent::$response_obj->add_success( 'Image deleted for Question #' . ( self::$question['question_order'] + 1 ) . '.' ); } } // process images if necessary // See if there's an image trying to be uploaded for this question - if(!empty($_FILES)) { + if(! empty( $_FILES ) ) { // This is the name="" field for that question image in the form - $question_image_file = 'question_image_upload_'.self::$question['question_id']; + $question_image_file = 'question_image_upload_' . self::$question['question_id']; // some question has a file submitted, let's see if it's this one // check for size being set and that the size is greater than 0 - if( isset($_FILES[$question_image_file]["size"]) && $_FILES[$question_image_file]["size"] > 0 ) { + if(isset( $_FILES[ $question_image_file ]['size'] ) && $_FILES[ $question_image_file ]['size'] > 0 ) { // we have a new image to upload! // upload it - $new_question_image = $this->upload_question_image($question_image_file); + $new_question_image = $this->upload_question_image( $question_image_file ); // see if it worked - if($new_question_image !== false) { + if($new_question_image !== false ) { // if it worked, set it as the question_image $question_image = $new_question_image; } @@ -132,11 +145,11 @@ protected function set_question_image() { * @param $question_image_file (string) name of "name" field in HTML form for that question * @return (string) filename of image uploaded to save to DB */ - protected function upload_question_image($question_image_file) { + protected function upload_question_image( $question_image_file ) { $new_image_name = false; - $image_upload = wp_upload_bits( $_FILES[$question_image_file]['name'], null, @file_get_contents( $_FILES[$question_image_file]['tmp_name'] ) ); + $image_upload = wp_upload_bits( $_FILES[ $question_image_file ]['name'], null, @file_get_contents( $_FILES[ $question_image_file ]['tmp_name'] ) ); // check to make sure there are no errors - if($image_upload['error'] === false) { + if($image_upload['error'] === false ) { // success! set the image // set the URL to the image as our question_image // create / delete our directory for these images @@ -144,45 +157,46 @@ protected function upload_question_image($question_image_file) { $path = $this->prepare_question_image_dir(); // now upload all the resized images we'll need - $new_image_name = $this->resize_image($image_upload, $path, null); + $new_image_name = $this->resize_image( $image_upload, $path, null ); // we have the full path, but we just need the filename - $new_image_name = str_replace(ENP_QUIZ_IMAGE_DIR . parent::$quiz['quiz_id'].'/'.self::$question['question_id'].'/', '', $new_image_name); + $new_image_name = str_replace( ENP_QUIZ_IMAGE_DIR . parent::$quiz['quiz_id'] . '/' . self::$question['question_id'] . '/', '', $new_image_name ); // resize all the other images - $this->resize_image($image_upload, $path, 1000); - $this->resize_image($image_upload, $path, 740); - $this->resize_image($image_upload, $path, 580); - $this->resize_image($image_upload, $path, 320); - $this->resize_image($image_upload, $path, 200); + $this->resize_image( $image_upload, $path, 1000 ); + $this->resize_image( $image_upload, $path, 740 ); + $this->resize_image( $image_upload, $path, 580 ); + $this->resize_image( $image_upload, $path, 320 ); + $this->resize_image( $image_upload, $path, 200 ); // delete the image we initially uploaded from the wp-content dir - $this->delete_file($image_upload['file']); + $this->delete_file( $image_upload['file'] ); // add a success message - parent::$response_obj->add_success('Image uploaded for Question #'.(self::$question['question_order']+1).'.'); + parent::$response_obj->add_success( 'Image uploaded for Question #' . ( self::$question['question_order'] + 1 ) . '.' ); } else { // add an error message - parent::$response_obj->add_error('Image upload failed for Question #'.(self::$question['question_order']+1).'.'); + parent::$response_obj->add_error( 'Image upload failed for Question #' . ( self::$question['question_order'] + 1 ) . '.' ); } return $new_image_name; } /** - * Resizes images using wp_get_image_editor - * and appends the width to the filename - * @param $question_image_upload (string) path to image - * @param $path (string) path to upload image to - * @param $width (int) maxwidth of image to resize it to - * @return path to saved resized image - */ - protected function resize_image($question_image_upload, $path, $width) { - // Resize the image to fit the single goal's page dimensions - $image = wp_get_image_editor( $question_image_upload['file']); - if ( ! is_wp_error( $image ) ) { - if($width !== null && is_int($width)) { + * Resizes images using wp_get_image_editor + * and appends the width to the filename + * + * @param $question_image_upload (string) path to image + * @param $path (string) path to upload image to + * @param $width (int) maxwidth of image to resize it to + * @return path to saved resized image + */ + protected function resize_image( $question_image_upload, $path, $width ) { + // Resize the image to fit the single goal's page dimensions + $image = wp_get_image_editor( $question_image_upload['file'] ); + if(! is_wp_error( $image ) ) { + if($width !== null && is_int( $width ) ) { // make our height max out at 4x6 aspect ratio so we don't have a HUUUUGEly tall image - $height = $width * 1.666667; - $extension = $width.'w'; + $height = $width * 1.666667; + $extension = $width . 'w'; // Get the actual filename (rather than the directory + filename) $image->resize( $width, $height, false ); @@ -190,8 +204,8 @@ protected function resize_image($question_image_upload, $path, $width) { $extension = '-original'; } - $filename = $image->generate_filename( $extension, $path, NULL ); - $saved_image = $image->save($filename); + $filename = $image->generate_filename( $extension, $path, null ); + $saved_image = $image->save( $filename ); return $saved_image['path']; } @@ -199,73 +213,72 @@ protected function resize_image($question_image_upload, $path, $width) { } /** - * Check for mc_option array and append it if it's missing - * because every question needs to have a mc_option and slider row with it - */ + * Check for mc_option array and append it if it's missing + * because every question needs to have a mc_option and slider row with it + */ protected function preprocess_mc_options() { // if it doesn't exist, create an empty array of arrays so the // mc_option save prepare function gets run - if(!array_key_exists('mc_option', self::$question)) { + if(! array_key_exists( 'mc_option', self::$question ) ) { self::$question['mc_option'] = array( - array(), - ); + array(), + ); } // append array if adding an option - if(parent::$user_action_action === 'add' && parent::$user_action_element === 'mc_option') { + if(parent::$user_action_action === 'add' && parent::$user_action_element === 'mc_option' ) { // find out which question we need to append an option to $question_id = parent::$user_action_details['question_id']; // if the question we want to add a mc_option to is THIS question, // append an extra mc_option array - if($question_id === (int)self::$question['question_id']) { + if($question_id === (int) self::$question['question_id'] ) { // add a new empty mc_option array to the end of the array // so our foreach loop will run one extra time when saving this question self::$question['mc_option'][] = array(); } - } return self::$question; } /** - * Check for mc_option array and append it if it's missing - * because every question needs to have a mc_option and slider row with it - */ + * Check for mc_option array and append it if it's missing + * because every question needs to have a mc_option and slider row with it + */ protected function preprocess_slider() { - if(!array_key_exists('slider', self::$question)) { + if(! array_key_exists( 'slider', self::$question ) ) { self::$question['slider'] = array(); } return self::$question; } /** - * Reformat and set values for all submitted question mc_option - * - * @param $mc_option = array() in this format: - * $mc_option = array( - * array( - * 'mc_option_id' => $question[$i]['mc_option'][$i]['mc_option_id'], - * 'mc_option_content' =>$question[$i]['mc_option'][$i]['mc_option_content'], - * 'mc_option_correct' => $question[$i]['mc_option'][$i]['mc_option_correct'], - * 'mc_option_order' => $mc_option_i, - * ), - * ); - * @return nicely formatted and value validated mc_option array ready for saving - */ - protected function prepare_submitted_mc_options($mc_options) { + * Reformat and set values for all submitted question mc_option + * + * @param $mc_option = array() in this format: + * $mc_option = array( + * array( + * 'mc_option_id' => $question[$i]['mc_option'][$i]['mc_option_id'], + * 'mc_option_content' =>$question[$i]['mc_option'][$i]['mc_option_content'], + * 'mc_option_correct' => $question[$i]['mc_option'][$i]['mc_option_correct'], + * 'mc_option_order' => $mc_option_i, + * ), + * ); + * @return nicely formatted and value validated mc_option array ready for saving + */ + protected function prepare_submitted_mc_options( $mc_options ) { // set our counter $i = 0; // open a new array $prepared_mc_options = array(); // loop through all submitted $mc_options - foreach($mc_options as $mc_option) { + foreach ( $mc_options as $mc_option ) { // add in our new mc_option_order value $mc_option['mc_option_order'] = $i; // create the object $mc_obj = new Enp_quiz_Save_mc_option(); // prepare the values - $mc_option = $mc_obj->prepare_submitted_mc_option($mc_option); + $mc_option = $mc_obj->prepare_submitted_mc_option( $mc_option ); // set the nicely formatted returned $mc_option - $prepared_mc_options[$i] = $mc_option; + $prepared_mc_options[ $i ] = $mc_option; // increase our counter and do it again! $i++; } @@ -274,43 +287,44 @@ protected function prepare_submitted_mc_options($mc_options) { } /** - * Reformat and set values for all submitted question slider - * - * @param $slider = array() in this format: - * $slider = array( -* 'slider_id' => $question[$i]['slider']['slider_id'], -* 'slider_range_low' =>$question[$i]['slider']['slider_range_low'], -* 'slider_range_high' => $question[$i]['slider']['slider_range_high'], -* ... - * ); - * @return nicely formatted and value validated mc_option array ready for saving - */ - protected function prepare_submitted_slider($slider) { + * Reformat and set values for all submitted question slider + * + * @param $slider = array() in this format: + * $slider = array( + * 'slider_id' => $question[$i]['slider']['slider_id'], + * 'slider_range_low' =>$question[$i]['slider']['slider_range_low'], + * 'slider_range_high' => $question[$i]['slider']['slider_range_high'], + * ... + * ); + * @return nicely formatted and value validated mc_option array ready for saving + */ + protected function prepare_submitted_slider( $slider ) { // create the object $slider_obj = new Enp_quiz_Save_slider(); // Return our nicely prepared slider array - return $slider_obj->prepare_submitted_slider($slider); + return $slider_obj->prepare_submitted_slider( $slider ); } /** - * Check to see if a value was passed in parent::$quiz['question'] array - * If it was, set it as the value. If it wasn't, set the value - * from parent::$quiz_obj - * - * @param $key = key that should be set in the quiz['question'] array. - * @param $default = int or string of default value if nothing is found - * @return value from either parent::$quiz['question'][$question_number][$key] or parent::$quiz_obj->get_question_$key() - */ - protected function set_question_value($key, $default) { + * Check to see if a value was passed in parent::$quiz['question'] array + * If it was, set it as the value. If it wasn't, set the value + * from parent::$quiz_obj + * + * @param $key = key that should be set in the quiz['question'] array. + * @param $default = int or string of default value if nothing is found + * @return value from either parent::$quiz['question'][$question_number][$key] or parent::$quiz_obj->get_question_$key() + */ + protected function set_question_value( $key, $default ) { $param_value = $default; // see if the value is already in our submitted quiz - if(array_key_exists($key, self::$question) && self::$question[$key] !== "") { - $param_value = self::$question[$key]; + if(array_key_exists( $key, self::$question ) && self::$question[ $key ] !== '' ) { + $param_value = self::$question[ $key ]; } else { // if we set it from the object, then we can't delete values... // hmm... // check to see if there's even a question_id to try to get - /*if(array_key_exists('question_id', self::$question) && self::$question['question_id'] !== 0) { + /* + if(array_key_exists('question_id', self::$question) && self::$question['question_id'] !== 0) { // if it's not in our submited quiz, try to get it from the object // dynamically create the quiz getter function $question_obj = new Enp_quiz_Question(self::$question['question_id']); @@ -338,12 +352,12 @@ protected function set_question_value($key, $default) { * @return ID of saved question or false if error * @since 0.0.1 */ - protected function save_question($question) { + protected function save_question( $question ) { // set the question array self::$question = $question; // check to see if the id exists - if(self::$question['question_id'] === 0) { + if(self::$question['question_id'] === 0 ) { // It doesn't exist yet, so insert it! $this->insert_question(); } else { @@ -353,27 +367,29 @@ protected function save_question($question) { } /** - * Connects to DB and inserts the question. - * @param $question = formatted question array - * @param $quiz_id = which quiz this question goes with - * @return builds and returns a response message - */ + * Connects to DB and inserts the question. + * + * @param $question = formatted question array + * @param $quiz_id = which quiz this question goes with + * @return builds and returns a response message + */ protected function insert_question() { // connect to PDO $pdo = new enp_quiz_Db(); // Get our Parameters ready - $params = array(':quiz_id' => parent::$quiz['quiz_id'], - ':question_title' => self::$question['question_title'], - ':question_image' => self::$question['question_image'], - ':question_image_alt' => self::$question['question_image_alt'], - ':question_type' => self::$question['question_type'], - ':question_explanation' => self::$question['question_explanation'], - ':question_order' => self::$question['question_order'], - ':question_time_spent' => 0, - ':question_time_spent_average' => 0 - ); + $params = array( + ':quiz_id' => parent::$quiz['quiz_id'], + ':question_title' => self::$question['question_title'], + ':question_image' => self::$question['question_image'], + ':question_image_alt' => self::$question['question_image_alt'], + ':question_type' => self::$question['question_type'], + ':question_explanation' => self::$question['question_explanation'], + ':question_order' => self::$question['question_order'], + ':question_time_spent' => 0, + ':question_time_spent_average' => 0, + ); // write our SQL statement - $sql = "INSERT INTO ".$pdo->question_table." ( + $sql = 'INSERT INTO ' . $pdo->question_table . ' ( quiz_id, question_title, question_image, @@ -381,8 +397,8 @@ protected function insert_question() { question_type, question_explanation, question_order, - question_time_spent, - question_time_spent_average + question_time_spent, + question_time_spent_average ) VALUES( :quiz_id, @@ -392,29 +408,29 @@ protected function insert_question() { :question_type, :question_explanation, :question_order, - :question_time_spent, - :question_time_spent_average - )"; + :question_time_spent, + :question_time_spent_average + )'; // insert the question into the database - $stmt = $pdo->query($sql, $params); + $stmt = $pdo->query( $sql, $params ); // success! - if($stmt !== false) { + if($stmt !== false ) { self::$question['question_id'] = $pdo->lastInsertId(); // set-up our response array $question_response = array( - 'status' => 'success', - 'action' => 'insert', - ); - $question_response = array_merge($this->build_question_response(), $question_response); + 'status' => 'success', + 'action' => 'insert', + ); + $question_response = array_merge( $this->build_question_response(), $question_response ); // pass the response array to our response object - parent::$response_obj->set_question_response($question_response, self::$question); + parent::$response_obj->set_question_response( $question_response, self::$question ); // SUCCESS MESSAGES // see if we we're adding a mc_option in here... - if(self::$user_action_action === 'add' && self::$user_action_element === 'question') { + if(self::$user_action_action === 'add' && self::$user_action_element === 'question' ) { // we added a mc_option successfully, let them know! - parent::$response_obj->add_success('Question added.'); + parent::$response_obj->add_success( 'Question added.' ); } // pass the question on to save_mc_option or save_slider @@ -422,31 +438,33 @@ protected function insert_question() { $this->save_question_type_options(); } else { - parent::$response_obj->add_error('Question number '.$question['question_order'].' could not be added to the database. Try again and if it continues to not work, send us an email with details of how you got to this error.'); + parent::$response_obj->add_error( 'Question number ' . $question['question_order'] . ' could not be added to the database. Try again and if it continues to not work, send us an email with details of how you got to this error.' ); } } /** - * Connects to DB and updates the question. - * @param $question = formatted question array - * @param $quiz_id = which quiz this question goes with - * @return builds and returns a response message - */ + * Connects to DB and updates the question. + * + * @param $question = formatted question array + * @param $quiz_id = which quiz this question goes with + * @return builds and returns a response message + */ protected function update_question() { // connect to PDO $pdo = new enp_quiz_Db(); // Get our Parameters ready - $params = array(':question_id' => self::$question['question_id'], - ':question_title' => self::$question['question_title'], - ':question_image' => self::$question['question_image'], - ':question_image_alt' => self::$question['question_image_alt'], - ':question_type' => self::$question['question_type'], - ':question_explanation' => self::$question['question_explanation'], - ':question_order' => self::$question['question_order'], - ':question_is_deleted' => self::$question['question_is_deleted'] - ); + $params = array( + ':question_id' => self::$question['question_id'], + ':question_title' => self::$question['question_title'], + ':question_image' => self::$question['question_image'], + ':question_image_alt' => self::$question['question_image_alt'], + ':question_type' => self::$question['question_type'], + ':question_explanation' => self::$question['question_explanation'], + ':question_order' => self::$question['question_order'], + ':question_is_deleted' => self::$question['question_is_deleted'], + ); // write our SQL statement - $sql = "UPDATE ".$pdo->question_table." + $sql = 'UPDATE ' . $pdo->question_table . ' SET question_title = :question_title, question_image = :question_image, question_image_alt = :question_image_alt, @@ -455,45 +473,45 @@ protected function update_question() { question_order = :question_order, question_is_deleted = :question_is_deleted - WHERE question_id = :question_id"; + WHERE question_id = :question_id'; // update the question in the database - $stmt =$pdo->query($sql, $params); + $stmt = $pdo->query( $sql, $params ); // success! - if($stmt !== false) { + if($stmt !== false ) { // set-up our response array $question_response = array( - 'status' => 'success', - 'action' => 'update' - ); - $question_response = array_merge($this->build_question_response(), $question_response); + 'status' => 'success', + 'action' => 'update', + ); + $question_response = array_merge( $this->build_question_response(), $question_response ); // pass the response array to our response object - parent::$response_obj->set_question_response($question_response, self::$question); + parent::$response_obj->set_question_response( $question_response, self::$question ); // see if we were deleting a question in here... - if(self::$question['question_is_deleted'] === 1) { + if(self::$question['question_is_deleted'] === 1 ) { // we deleted a question successfully. Let's let them know! - parent::$response_obj->add_success('Question deleted.'); + parent::$response_obj->add_success( 'Question deleted.' ); } // pass the question on to save_mc_option or save_slider $this->save_question_type_options(); } else { - parent::$response_obj->add_error('Question number '.self::$question['question_order'].' could not be updated.'); + parent::$response_obj->add_error( 'Question number ' . self::$question['question_order'] . ' could not be updated.' ); } } protected function build_question_response() { // build all the values for the question and return them in the JSON array return array( - 'question_id' => self::$question['question_id'], - 'question_title' => self::$question['question_title'], - 'question_image' => self::$question['question_image'], - 'question_image_alt' => self::$question['question_image_alt'], - 'question_type' => self::$question['question_type'], - 'question_explanation' => self::$question['question_explanation'], - 'question_order' => self::$question['question_order'] - ); + 'question_id' => self::$question['question_id'], + 'question_title' => self::$question['question_title'], + 'question_image' => self::$question['question_image'], + 'question_image_alt' => self::$question['question_image_alt'], + 'question_type' => self::$question['question_type'], + 'question_explanation' => self::$question['question_explanation'], + 'question_order' => self::$question['question_order'], + ); } /** @@ -506,14 +524,14 @@ protected function build_question_response() { protected function save_question_type_options() { $question_type = self::$question['question_type']; // now try to save the mc_option or slider - if($question_type === 'mc') { + if($question_type === 'mc' ) { // pass the mc_option array for saving - $this->save_mc_options(self::$question['mc_option']); + $this->save_mc_options( self::$question['mc_option'] ); } // if it's a slider, or if we're adding a question, we need to save a slider too - if( $question_type === 'slider' || (parent::$user_action_action === 'add' && parent::$user_action_element === 'question') ) { - //TODO: create slider save - $this->save_slider(self::$question['slider']); + if($question_type === 'slider' || ( parent::$user_action_action === 'add' && parent::$user_action_element === 'question' ) ) { + // TODO: create slider save + $this->save_slider( self::$question['slider'] ); } } @@ -523,15 +541,15 @@ protected function save_question_type_options() { * @param $mc_option = array(); of all question['mc_option'] data * @since 0.0.1 */ - protected function save_mc_options($mc_options) { - if(!empty($mc_options)){ + protected function save_mc_options( $mc_options ) { + if(! empty( $mc_options ) ) { // loop through the questions and save each one - foreach($mc_options as $mc_option) { + foreach ( $mc_options as $mc_option ) { // create a new object $mc_option_obj = new Enp_quiz_Save_mc_option(); // pass to save_mc_options so we can decide // if we should insert or update the mc_option - $mc_option_obj->save_mc_option($mc_option); + $mc_option_obj->save_mc_option( $mc_option ); } } } @@ -545,20 +563,20 @@ protected function save_mc_options($mc_options) { * @return ID of saved slider or false if error * @since 0.0.1 */ - protected function save_slider($slider) { + protected function save_slider( $slider ) { // create a new object $slider_obj = new Enp_quiz_Save_slider(); // pass to save_sliders so we can decide // if we should insert or update the slider - $slider_obj->save_slider($slider); + $slider_obj->save_slider( $slider ); } /* * Creates a new directory for the quiz images, if necessary */ protected function prepare_quiz_image_dir() { - $path = ENP_QUIZ_IMAGE_DIR . parent::$quiz['quiz_id'].'/'; - $path = $this->build_dir($path); + $path = ENP_QUIZ_IMAGE_DIR . parent::$quiz['quiz_id'] . '/'; + $path = $this->build_dir( $path ); return $path; } @@ -567,9 +585,9 @@ protected function prepare_quiz_image_dir() { * and DELETES all files in the directory if there are any */ protected function prepare_question_image_dir() { - $path = ENP_QUIZ_IMAGE_DIR . parent::$quiz['quiz_id'].'/'.self::$question['question_id'].'/'; - $path = $this->build_dir($path); - $this->delete_files($path); + $path = ENP_QUIZ_IMAGE_DIR . parent::$quiz['quiz_id'] . '/' . self::$question['question_id'] . '/'; + $path = $this->build_dir( $path ); + $this->delete_files( $path ); // check if directory exists // check to see if our image question upload directory exists @@ -577,39 +595,39 @@ protected function prepare_question_image_dir() { } /** - * Creates a new directory if it doesn't exist - */ - private function build_dir($path) { - if (!file_exists($path)) { + * Creates a new directory if it doesn't exist + */ + private function build_dir( $path ) { + if(! file_exists( $path ) ) { // if it doesn't exist, create it - mkdir($path, 0777, true); + mkdir( $path, 0777, true ); } return $path; } /** - * Deletes files in a directory, restricted to ENP_QUIZ_IMG_DIR - */ - private function delete_files($path) { - if(strpos($path, ENP_QUIZ_IMAGE_DIR) === false) { + * Deletes files in a directory, restricted to ENP_QUIZ_IMG_DIR + */ + private function delete_files( $path ) { + if(strpos( $path, ENP_QUIZ_IMAGE_DIR ) === false ) { // uh oh... someone is misusing this return false; } - if (file_exists($path)) { + if(file_exists( $path ) ) { // delete all the images in it - $files = glob($path.'*'); // get all file names - foreach($files as $file){ // iterate files - $this->delete_file($file); + $files = glob( $path . '*' ); // get all file names + foreach ( $files as $file ) { // iterate files + $this->delete_file( $file ); } } } /** - * Deletes a file by path - */ - private function delete_file($file) { - if(is_file($file)) { - unlink($file); // delete file + * Deletes a file by path + */ + private function delete_file( $file ) { + if(is_file( $file ) ) { + unlink( $file ); // delete file } } diff --git a/database/class-enp_quiz_save_quiz.php b/database/class-enp_quiz_save_quiz.php index dbd1a734..c2a2a59c 100644 --- a/database/class-enp_quiz_save_quiz.php +++ b/database/class-enp_quiz_save_quiz.php @@ -74,8 +74,8 @@ public function save($quiz) { $this->pdo_publish_quiz(); // now let's reset the data and responses on that quiz as well // delete all the responses & reset the stats for the quiz and questions - $quiz_data = new Enp_quiz_Save_quiz_take_Quiz_data(self::$quiz_obj); - $quiz_data->delete_quiz_responses(self::$quiz_obj); + $quiz_data = new Enp_quiz_Save_quiz_take_Quiz_data(self::$quiz_obj); + $quiz_data->delete_quiz_responses(self::$quiz_obj); } else { // don't worry about it, probably just clicked on the "embed" on the quiz preview/settings page } @@ -108,6 +108,7 @@ protected function prepare_submitted_quiz() { $quiz_id = $this->set_quiz_value('quiz_id', 0); $quiz_title = $this->set_quiz_value('quiz_title', ''); + $quiz_feedback = $this->set_quiz_value( 'quiz_feedback', '' ); $quiz_status = $this->set_quiz_value('quiz_status', 'draft'); $quiz_finish_message = $this->set_quiz_value('quiz_finish_message', 'Thanks for taking our quiz!'); $quiz_updated_by = $this->set_quiz_value('quiz_updated_by', 0); @@ -138,9 +139,18 @@ protected function prepare_submitted_quiz() { // email $email_subject = $facebook_title; $email_body_start = $facebook_description; - $email_body_end = $facebook_quote_end.' + $email_body_end = $facebook_quote_end.' '.$facebook_description; + + // winners & losers + $quiz_end_fail_title = $this->set_quiz_value('quiz_end_fail_title', 'Oops!!'); + $quiz_end_fail_description = $this->set_quiz_value('quiz_end_fail_description', 'We bet you could do better. Why don\'t you try taking the quiz again?'); + $quiz_end_average_title = $this->set_quiz_value('quiz_end_average_title', 'Not Bad!'); + $quiz_end_average_description = $this->set_quiz_value('quiz_end_average_description', 'We bet you could do better. Why don\'t you try taking the quiz again?.'); + $quiz_end_good_title = $this->set_quiz_value('quiz_end_good_title', 'Nice Job!'); + $quiz_end_good_description = $this->set_quiz_value('quiz_end_good_description', 'Nice work! You almost got a perfect score!'); + $quiz_end_perfect_title = $this->set_quiz_value('quiz_end_perfect_title', 'Perfect!'); + $quiz_end_perfect_description = $this->set_quiz_value('quiz_end_perfect_description', 'Can\'t do any better than that! Go ahead, share this quiz and brag about it.'); -'.$facebook_description; // twitter $include_url = true; $replace_mustache = true; @@ -149,6 +159,7 @@ protected function prepare_submitted_quiz() { $default_quiz = array( 'quiz_id' => $quiz_id, 'quiz_title' => $quiz_title, + 'quiz_feedback' => $quiz_feedback, 'quiz_status' => $quiz_status, 'quiz_finish_message' => $quiz_finish_message, 'quiz_owner' => $quiz_owner, @@ -181,6 +192,15 @@ protected function prepare_submitted_quiz() { 'email_body_end' => $email_body_end, // tweet share text 'tweet_end'=> $tweet_end, + // winners and losers + 'quiz_end_fail_title' => $quiz_end_fail_title, + 'quiz_end_fail_description' => $quiz_end_fail_description, + 'quiz_end_average_title' => $quiz_end_average_title, + 'quiz_end_average_description' => $quiz_end_average_description, + 'quiz_end_good_title' => $quiz_end_good_title, + 'quiz_end_good_description' => $quiz_end_good_description, + 'quiz_end_perfect_title' => $quiz_end_perfect_title, + 'quiz_end_perfect_description' => $quiz_end_perfect_description, ); // We don't want to lose anything that was in the sent quiz (like questions, etc) // so we'll merge them to make sure we don't lose anything @@ -356,25 +376,31 @@ protected function sanitize_array($array) { $sanitized_array = array(); // check to make sure it's an array if (!is_array($array) || !count($array)) { - return $sanitized_array; - } + return $sanitized_array; + } // loop through each key/value - foreach ($array as $key => $value) { + foreach ($array as $key => $value) { // sanitize the key - $key = sanitize_key($key); - - // if it's not an array, sanitize the value - if (!is_array($value) && !is_object($value)) { - $sanitized_array[$key] = sanitize_text_field($value); - } + $key = sanitize_key( $key ); + + // if it's not an array, sanitize the value. + if (!is_array($value) && !is_object($value)) { + // except for question explanation, we want to keep the HTML + if( $key === 'question_explanation' ) { + $sanitized_array[$key] = wp_kses($value, 'post'); + } else { + $sanitized_array[$key] = sanitize_text_field($value); + } + } // if it is an array, loop through that array with the same function - if (is_array($value)) { - $sanitized_array[$key] = $this->sanitize_array($value); - } - } + if (is_array($value)) { + $sanitized_array[$key] = $this->sanitize_array($value); + } + + } // return our new, clean, sanitized array - return $sanitized_array; + return $sanitized_array; } /** @@ -487,6 +513,7 @@ protected function insert_quiz() { $pdo = new enp_quiz_Db(); // Get our Parameters ready $params = array(':quiz_title' => self::$quiz['quiz_title'], + ':quiz_feedback' => self::$quiz['quiz_feedback'], ':quiz_status' => self::$quiz['quiz_status'], ':quiz_finish_message' => self::$quiz['quiz_finish_message'], ':quiz_owner' => self::$quiz['quiz_owner'], @@ -499,6 +526,7 @@ protected function insert_quiz() { // write our SQL statement $sql = "INSERT INTO ".$pdo->quiz_table." ( quiz_title, + quiz_feedback, quiz_status, quiz_finish_message, quiz_owner, @@ -510,6 +538,7 @@ protected function insert_quiz() { ) VALUES( :quiz_title, + :quiz_feedback, :quiz_status, :quiz_finish_message, :quiz_owner, @@ -548,6 +577,7 @@ protected function update_quiz() { $sql = "UPDATE ".$pdo->quiz_table." SET quiz_title = :quiz_title, + quiz_feedback = :quiz_feedback, quiz_status = :quiz_status, quiz_finish_message = :quiz_finish_message, quiz_updated_by = :quiz_updated_by, @@ -604,7 +634,15 @@ protected function save_quiz_options() { 'email_subject', 'email_body_start', 'email_body_end', - 'tweet_end' + 'tweet_end', + 'quiz_end_fail_title', + 'quiz_end_fail_description', + 'quiz_end_average_title', + 'quiz_end_average_description', + 'quiz_end_good_title', + 'quiz_end_good_description', + 'quiz_end_perfect_title', + 'quiz_end_perfect_description', ); foreach($quiz_options as $quiz_option) { if(array_key_exists($quiz_option, self::$quiz)) { @@ -677,6 +715,7 @@ public function publish_quiz($quiz) { protected function set_update_quiz_params() { $params = array(':quiz_id' => self::$quiz_obj->get_quiz_id(), ':quiz_title' => self::$quiz['quiz_title'], + ':quiz_feedback' => self::$quiz['quiz_feedback'], ':quiz_status' => self::$quiz['quiz_status'], ':quiz_finish_message' => self::$quiz['quiz_finish_message'], ':quiz_owner' => self::$quiz['quiz_owner'], diff --git a/database/class-enp_quiz_save_quiz_response.php b/database/class-enp_quiz_save_quiz_response.php index 57c4f633..ca91db97 100644 --- a/database/class-enp_quiz_save_quiz_response.php +++ b/database/class-enp_quiz_save_quiz_response.php @@ -1,4 +1,5 @@ + * $quiz_title_test, */ -class Enp_quiz_Save_quiz_Response extends Enp_quiz_Save { +class Enp_quiz_Save_quiz_Response extends Enp_quiz_Save +{ public $quiz_id, - $quiz_title, - $quiz_status, - $status, - $action, - $message = array('error'=>array(),'success'=>array()), - $question = array(), - $quiz_option = array(), - $user_action = array(); - - public function __construct() { + $quiz_title, + $quiz_feedback, + $quiz_status, + $status, + $action, + $message = array('error' => array(), 'success' => array()), + $question = array(), + $quiz_option = array(), + $user_action = array(); + public function __construct() + { } /** - * Sets a quiz_id on our response array - * @param string = quiz_id you want to set - * @return response object array - */ - public function set_quiz_id($quiz_id) { + * Sets a quiz_id on our response array + * @param string = quiz_id you want to set + * @return response object array + */ + public function set_quiz_id($quiz_id) + { $this->quiz_id = $quiz_id; } /** - * Sets an action on our response array - * @param string = action you want to set - * @return response object array - */ - public function set_action($action) { + * Sets an action on our response array + * @param string = action you want to set + * @return response object array + */ + public function set_action($action) + { $this->action = $action; } /** - * Sets a status on our response array - * @param string = status you want to set - * @return response object array - */ - public function set_status($status) { + * Sets a status on our response array + * @param string = status you want to set + * @return response object array + */ + public function set_status($status) + { $this->status = $status; } /** - * Gets response from quiz save class and assigns values to our response object - */ - public function set_quiz_response($quiz) { + * Gets response from quiz save class and assigns values to our response object + * $this->quiz_title_test = $quiz['quiz_title_test']; + */ + public function set_quiz_response($quiz) + { $this->set_quiz_id($quiz['quiz_id']); $this->quiz_title = $quiz['quiz_title']; + $this->quiz_feedback = $quiz['quiz_feedback']; $this->quiz_status = $quiz['quiz_status']; $this->quiz_finish_message = $quiz['quiz_finish_message']; $this->quiz_updated_at = $quiz['quiz_updated_at']; } /** - * Gets response from save quiz option class and and assigns them - * to our response object - * - * @param $quiz_option_response = array() of values like 'action', 'status', and 'quiz_option_id' - * @param $quiz = the quiz array that was being saved - */ - public function set_quiz_option_response($quiz_option_response, $quiz_option) { + * Gets response from save quiz option class and and assigns them + * to our response object + * + * @param $quiz_option_response = array() of values like 'action', 'status', and 'quiz_option_id' + * @param $quiz = the quiz array that was being saved + */ + public function set_quiz_option_response($quiz_option_response, $quiz_option) + { // sets our quiz_option response to our quiz_option response $this->quiz_option[$quiz_option] = $quiz_option_response; } /** - * Loops through all passed responses from the save class and and assigns them - * to our response object - * - * @param $question_response = array() of values like 'action', 'status', and 'mc_option_id' - * @param $question = the question array that was being saved - */ - public function set_question_response($question_response, $question) { + * Loops through all passed responses from the save class and and assigns them + * to our response object + * + * @param $question_response = array() of values like 'action', 'status', and 'mc_option_id' + * @param $question = the question array that was being saved + */ + public function set_question_response($question_response, $question) + { $question_number = $question['question_order']; // sets the key/value for each item passed in the response - foreach($question_response as $key => $value) { + foreach ($question_response as $key => $value) { // set the question array with our response values $this->question[$question_number][$key] = $value; } } /** - * Loops through all passed responses from the save class and and assigns them - * to our response object - * - * @param $mc_option_response = array() of values like 'action', 'status', and 'mc_option_id' - * @param $question = the question array that was being saved - * @param $mc_option = the mc_option array that was being saved - */ - public function set_mc_option_response($mc_option_response, $question, $mc_option) { + * Loops through all passed responses from the save class and and assigns them + * to our response object + * + * @param $mc_option_response = array() of values like 'action', 'status', and 'mc_option_id' + * @param $question = the question array that was being saved + * @param $mc_option = the mc_option array that was being saved + */ + public function set_mc_option_response($mc_option_response, $question, $mc_option) + { $question_number = $question['question_order']; $mc_option_number = $mc_option['mc_option_order']; // sets the key/value for each item passed in the response - foreach($mc_option_response as $key => $value) { + foreach ($mc_option_response as $key => $value) { // set the question/mc_option array with our response values $this->question[$question_number]['mc_option'][$mc_option_number][$key] = $value; } } /** - * Loops through all passed responses from the save class and and assigns them - * to our response object - * - * @param $slider_response = array() of values like 'action', 'status', and 'mc_option_id' - * @param $question = the question array that was being saved - */ - public function set_slider_response($slider_response, $question) { + * Loops through all passed responses from the save class and and assigns them + * to our response object + * + * @param $slider_response = array() of values like 'action', 'status', and 'mc_option_id' + * @param $question = the question array that was being saved + */ + public function set_slider_response($slider_response, $question) + { $question_number = $question['question_order']; // sets the key/value for each item passed in the response - foreach($slider_response as $key => $value) { + foreach ($slider_response as $key => $value) { // set the question array with our response values $this->question[$question_number]['slider'][$key] = $value; } } /** - * Loops through all passed responses from the delete ab test class and and assigns them - * to our response object - * - * @param $ab_test_delete_response = array('action' => 'update', - * 'element' => 'ab_test', - * 'status' => 'success/error' - * 'ab_test_id'=> (int), - * 'quiz_id_a' => (int), - * 'quiz_id_b' => (int), - * 'user_action' => array( - * 'action'=>'delete', - * 'element'=>'ab_test' - * ), - * ); - * - */ - public function set_ab_test_delete_response($ab_test_delete_response) { + * Loops through all passed responses from the delete ab test class and and assigns them + * to our response object + * + * @param $ab_test_delete_response = array('action' => 'update', + * 'element' => 'ab_test', + * 'status' => 'success/error' + * 'ab_test_id'=> (int), + * 'quiz_id_a' => (int), + * 'quiz_id_b' => (int), + * 'user_action' => array( + * 'action'=>'delete', + * 'element'=>'ab_test' + * ), + * ); + * + */ + public function set_ab_test_delete_response($ab_test_delete_response) + { // stuff it into the user_action. Not a great fit, but best place // for random vars right now - if(!empty($ab_test_delete_response)) { - foreach($ab_test_delete_response as $ab_response) { + if (!empty($ab_test_delete_response)) { + foreach ($ab_test_delete_response as $ab_response) { $this->user_action['secondary_action']['ab_test_deleted'][] = $ab_response; } } - } /** - * Sets a new error to our error response array - * @param string = message you want to add - * @return response object array - */ - public function add_error($error) { + * Sets a new error to our error response array + * @param string = message you want to add + * @return response object array + */ + public function add_error($error) + { $this->message['error'][] = $error; } /** - * Sets a new success to our success response array - * @param string = message you want to add - * @return response object array - */ - public function add_success($success) { + * Sets a new success to our success response array + * @param string = message you want to add + * @return response object array + */ + public function add_success($success) + { $this->message['success'][] = $success; } /** - * Build a user_action response array so enp_quiz-create class knows - * what to do next, like go to preview page, add another question, etc - */ - public function set_user_action_response($quiz) { + * Build a user_action response array so enp_quiz-create class knows + * what to do next, like go to preview page, add another question, etc + */ + public function set_user_action_response($quiz) + { $action = null; $element = null; $details = array(); // set the user action to 'save' if there isn't one - if(array_key_exists('user_action', $quiz)) { + if (array_key_exists('user_action', $quiz)) { $user_action = $quiz['user_action']; } else { $user_action = 'save'; } // if they want to preview, then see if they're allowed to go on - if($user_action === 'quiz-preview') { + if ($user_action === 'quiz-preview') { $action = 'next'; $element = 'preview'; } // if they want to publish, then see if they're allowed to go on - elseif($user_action === 'quiz-publish') { + elseif ($user_action === 'quiz-publish') { $action = 'next'; $element = 'publish'; } // if they want to add a question - elseif($user_action === 'add-question') { + elseif ($user_action === 'add-question') { // what else do we want to do? $action = 'add'; $element = 'question'; } // if they want to move a question - elseif(strpos($user_action, 'question--move-') !== false) { + elseif (strpos($user_action, 'question--move-') !== false) { $action = 'move'; $element = 'question'; @@ -227,11 +244,11 @@ public function set_user_action_response($quiz) { $details = array( 'question_id' => (int) $question_id, - 'move_question_to' => (int) $to + 'move_question_to' => (int) $to ); } // check to see if user wants to add-mc-option - elseif(strpos($user_action, 'add-mc-option__question-') !== false) { + elseif (strpos($user_action, 'add-mc-option__question-') !== false) { $action = 'add'; $element = 'mc_option'; // extract the question number by removing 'add-mc-option__question-' from the string @@ -241,7 +258,7 @@ public function set_user_action_response($quiz) { $details = array('question_id' => (int) $question_id); } // check to see if user wants to add-mc-option - elseif(strpos($user_action, 'mc-option--correct__question-') !== false) { + elseif (strpos($user_action, 'mc-option--correct__question-') !== false) { // get our matches preg_match_all('/\d+/', $user_action, $matches); // will return array of arrays splitting all number groups @@ -253,12 +270,12 @@ public function set_user_action_response($quiz) { $element = 'mc_option'; $details = array( - 'question_id' => (int) $question_id, - 'mc_option_id' => (int) $mc_option_id, - ); + 'question_id' => (int) $question_id, + 'mc_option_id' => (int) $mc_option_id, + ); } // DELETE question - elseif(strpos($user_action, 'question--delete-') !== false) { + elseif (strpos($user_action, 'question--delete-') !== false) { $action = 'delete'; $element = 'question'; // extract the question number by removing 'add-mc-option__question-' from the string @@ -268,7 +285,7 @@ public function set_user_action_response($quiz) { $details = array('question_id' => (int) $question_id); } // UPLOAD question_image - elseif(strpos($user_action, 'question-image--upload-') !== false) { + elseif (strpos($user_action, 'question-image--upload-') !== false) { $action = 'upload'; $element = 'question_image'; @@ -279,7 +296,7 @@ public function set_user_action_response($quiz) { $details = array('question_id' => (int) $question_id); } // DELETE question_image - elseif(strpos($user_action, 'question-image--delete-') !== false) { + elseif (strpos($user_action, 'question-image--delete-') !== false) { $action = 'delete'; $element = 'question_image'; @@ -290,7 +307,7 @@ public function set_user_action_response($quiz) { $details = array('question_id' => (int) $question_id); } // DELETE mc_option - elseif(strpos($user_action, 'mc-option--delete-') !== false) { + elseif (strpos($user_action, 'mc-option--delete-') !== false) { $action = 'delete'; $element = 'mc_option'; // extract the question number by removing 'add-mc-option__question-' from the string @@ -300,41 +317,42 @@ public function set_user_action_response($quiz) { $details = array('mc_option_id' => (int) $mc_option_id); } // DELETE entire Quiz! Gasp! - elseif(strpos($user_action, 'delete-quiz') !== false) { + elseif (strpos($user_action, 'delete-quiz') !== false) { $action = 'delete'; $element = 'quiz'; $details = array('quiz_id' => (int) $quiz['quiz_id']); } $this->user_action = array( - 'action' => $action, - 'element' => $element, - 'details' => $details, - ); + 'action' => $action, + 'element' => $element, + 'details' => $details, + ); } /** - * Runs all checks to validate and build error messages on quiz form - * All the functions it runs add to the response object if there are errors - * - * @usage $response = new Enp_quiz_Save_quiz_Response(); - * $validate = $response->validate_quiz_and_questions($quiz); - * var_dump($validate); // returns 'invalid' or 'valid' - * var_dump($response->get_error_messages()); // all error messages - * - * @param $quiz (quiz array or Enp_quiz_Quiz() object) - * @return (kinda) builds all error messages, accessible from $this->message['error'] - * @return (string) valid or invalid - */ - public function validate_quiz_and_questions($quiz) { + * Runs all checks to validate and build error messages on quiz form + * All the functions it runs add to the response object if there are errors + * + * @usage $response = new Enp_quiz_Save_quiz_Response(); + * $validate = $response->validate_quiz_and_questions($quiz); + * var_dump($validate); // returns 'invalid' or 'valid' + * var_dump($response->get_error_messages()); // all error messages + * + * @param $quiz (quiz array or Enp_quiz_Quiz() object) + * @return (kinda) builds all error messages, accessible from $this->message['error'] + * @return (string) valid or invalid + */ + public function validate_quiz_and_questions($quiz) + { // if we got passed a quiz object, let's turn it into an array - if(is_object($quiz)) { + if (is_object($quiz)) { $quiz = $this->quiz_object_to_array($quiz); } // check to make sure there's a quiz ID - if($quiz['quiz_id'] === null) { + if ($quiz['quiz_id'] === null) { // there's no quiz... invalid $this->add_error('Quiz does not exist.'); return 'invalid'; @@ -343,7 +361,7 @@ public function validate_quiz_and_questions($quiz) { // validate the quiz $this->validate_quiz($quiz); // check to see if they need to add questions - if($this->validate_has_question($quiz) === 'has_question') { + if ($this->validate_has_question($quiz) === 'has_question') { // we have a question title and explanation in the first question, // so let's check more in depth. This checks for all errors // in all questions @@ -353,35 +371,36 @@ public function validate_quiz_and_questions($quiz) { // return a valid or invalid string. // the function builds all error messages too, so those will be // available to whatever is calling validate_quiz_and_questions($quiz) - if(empty($this->message['error'])) { + if (empty($this->message['error'])) { return 'valid'; } else { return 'invalid'; } } - public function quiz_object_to_array($quiz_obj) { + public function quiz_object_to_array($quiz_obj) + { $quiz_array = (array) $quiz_obj; $new_questions_array = array(); - if(!empty($quiz_array)) { + if (!empty($quiz_array)) { $question_ids = $quiz_obj->get_questions(); - if(!empty($question_ids)){ - foreach($question_ids as $question_id) { + if (!empty($question_ids)) { + foreach ($question_ids as $question_id) { // generate the object $question_obj = new Enp_quiz_Question($question_id); // arrayify the question $question_array = (array) $question_obj; // check if mc or slider and add that object as an array - if($question_obj->get_question_type() === 'mc') { + if ($question_obj->get_question_type() === 'mc') { $mc_option_ids = $question_obj->get_mc_options(); - if(!empty($mc_option_ids)) { - foreach($question_obj->get_mc_options() as $mc_option_id) { + if (!empty($mc_option_ids)) { + foreach ($question_obj->get_mc_options() as $mc_option_id) { $mc_option_object = new Enp_quiz_MC_option($mc_option_id); $mc_option_array = (array) $mc_option_object; $question_array['mc_option'][] = $mc_option_array; } } - } elseif($question_obj->get_question_type() === 'slider') { + } elseif ($question_obj->get_question_type() === 'slider') { // get the slider ID $slider_id = $question_obj->get_slider(); // get the slider object @@ -394,20 +413,18 @@ public function quiz_object_to_array($quiz_obj) { // add it to our questions array $quiz_array['question'][] = $question_array; - } } - } return $quiz_array; } /** - * Checks to see if the first question is empty. If it is, add an error - * @return 'has_questions' if question found, false if there are questions - * - */ + * Checks to see if the first question is empty. If it is, add an error + * @return 'has_questions' if question found, false if there are questions + * + */ public function validate_has_question($quiz) { if(empty($quiz['question'][0]['question_title']) && empty($quiz['question'][0]['question_explanation'])) { $this->add_error('Question 1 does not have question text or an explanation.'); @@ -417,8 +434,8 @@ public function validate_has_question($quiz) { } /** - * Loop through questions and check for errors - */ + * Loop through questions and check for errors + */ public function validate_questions($quiz) { $i = 1; // this is weird to set it as OK initially, but... @@ -446,7 +463,7 @@ public function validate_questions($quiz) { $this->validate_question_slider($question); } else { // should never happen... - $this->add_error('Question '.($question['question_order']+1).' does not have a question type (multiple choice, slider, etc).'); + $this->add_error('Question ' . ($question['question_order'] + 1) . ' does not have a question type (multiple choice, slider, etc).'); } $i++; } @@ -455,14 +472,15 @@ public function validate_questions($quiz) { /** - * Checks questions for titles - * @return true if no question, false if there are questions - * - */ - public function validate_question_title($question) { + * Checks questions for titles + * @return true if no question, false if there are questions + * + */ + public function validate_question_title($question) + { $return_message = 'has_title'; - if(empty($question['question_title'])) { - $this->add_error('Question '.($question['question_order']+1).' is missing an actual question.'); + if (empty($question['question_title'])) { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' is missing an actual question.'); $return_message = 'no_title'; } @@ -470,14 +488,15 @@ public function validate_question_title($question) { } /** - * Checks questions for answer explanation - * @return string 'has_question_explanation' if found, 'no_question_explanation' if not found - * - */ - public function validate_question_explanation($question) { + * Checks questions for answer explanation + * @return string 'has_question_explanation' if found, 'no_question_explanation' if not found + * + */ + public function validate_question_explanation($question) + { $return_message = 'has_question_explanation'; - if(empty($question['question_explanation'])) { - $this->add_error('Question '.($question['question_order']+1).' is missing an answer explanation.'); + if (empty($question['question_explanation'])) { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' is missing an answer explanation.'); $return_message = 'no_question_explanation'; } @@ -486,119 +505,120 @@ public function validate_question_explanation($question) { /** - * Checks questions for mc_options (if it should have them) - * @return string 'has_mc_options' if found, 'no_mc_options' if not found - * - */ + * Checks questions for mc_options (if it should have them) + * @return string 'has_mc_options' if found, 'no_mc_options' if not found + * + */ public function validate_question_mc_options($question) { $return_message = 'no_mc_options'; - if(!array_key_exists('mc_option', $question)) { + if (!array_key_exists('mc_option', $question)) { return $return_message; } else { $mc_options = $question['mc_option']; } - if(empty($mc_options)) { - $this->add_error('Question '.($question['question_order']+1).' is missing multiple choice options.'); + if (empty($mc_options)) { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' is missing multiple choice options.'); $return_message = 'no_mc_options'; return $return_message; } - if(count($mc_options) === 1) { - $this->add_error('Question '.($question['question_order']+1).' does not have enough multiple choice options.'); + if (count($mc_options) === 1) { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' does not have enough multiple choice options.'); } else { $mc_option_has_correct = false; - foreach($mc_options as $option) { + foreach ($mc_options as $option) { // check for values - if($option['mc_option_content'] === '') { - $this->add_error('Question '.($question['question_order']+1).' has an empty Multiple Choice Option field.'); + if ($option['mc_option_content'] === '') { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' has an empty Multiple Choice Option field.'); } // check to see if ANY one has been chosen - if((int)$option['mc_option_correct'] === 1) { + if ((int)$option['mc_option_correct'] === 1) { $mc_option_has_correct = true; // we have a correct option! yay! Everything is good. $return_message = 'has_mc_options'; } } - if($mc_option_has_correct !== true ) { - $this->add_error('Question '.($question['question_order']+1).' needs a correct Multiple Choce Option answer to be selected.'); + if ($mc_option_has_correct !== true) { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' needs a correct Multiple Choce Option answer to be selected.'); } } return $return_message; } - public function validate_question_slider($question) { + public function validate_question_slider($question) + { $return_message = 'valid'; - if(!array_key_exists('slider', $question)) { + if (!array_key_exists('slider', $question)) { $return_message = 'key_does_not_exist'; return $return_message; } else { $slider = $question['slider']; } - if(empty($slider)) { - $this->add_error('Question '.($question['question_order']+1).' Slider has no values.'); + if (empty($slider)) { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' Slider has no values.'); $return_message = 'no_slider_values'; return $return_message; } // check all the necessary fields for values $required_fields = array( - 'slider_id', - 'slider_range_low', - 'slider_range_high', - 'slider_correct_low', - 'slider_correct_high', - 'slider_increment' - ); + 'slider_id', + 'slider_range_low', + 'slider_range_high', + 'slider_correct_low', + 'slider_correct_high', + 'slider_increment' + ); $empty_fields = false; - foreach($required_fields as $required) { + foreach ($required_fields as $required) { // check if it's empty or not and that it doesn't match a 0 because // 0 is a valid entry - if(empty($slider[$required]) && $slider[$required] !== (float) 0) { + if (empty($slider[$required]) && $slider[$required] !== (float) 0) { $empty_fields = true; - $this->add_error('Question '.($question['question_order']+1).' Slider field '.$required.' is empty.'); + $this->add_error('Question ' . ($question['question_order'] + 1) . ' Slider field ' . $required . ' is empty.'); } } // if we have empty fields, just finish the validation check now - if($empty_fields === true) { + if ($empty_fields === true) { $return_message = 'missing_required_slider_fields'; return $return_message; } - if($slider['slider_range_high'] <= $slider['slider_range_low'] ) { + if ($slider['slider_range_high'] <= $slider['slider_range_low']) { $return_message = 'invalid'; - $this->add_error('Slider range for Question '.($question['question_order']+1).' needs to be changed.'); + $this->add_error('Slider range for Question ' . ($question['question_order'] + 1) . ' needs to be changed.'); } - if($slider['slider_correct_high'] < $slider['slider_correct_low']) { + if ($slider['slider_correct_high'] < $slider['slider_correct_low']) { $return_message = 'invalid'; - $this->add_error('Question '.($question['question_order']+1).' Slider Correct Answer High value is greater than the Correct Low value.'); + $this->add_error('Question ' . ($question['question_order'] + 1) . ' Slider Correct Answer High value is greater than the Correct Low value.'); } - if($slider['slider_range_high'] < $slider['slider_correct_high'] ) { + if ($slider['slider_range_high'] < $slider['slider_correct_high']) { $return_message = 'invalid'; - $this->add_error('Question '.($question['question_order']+1).' Slider Correct Answer is higher than the slider range. Increase the Slider End value or decrease the Slider Correct value.'); + $this->add_error('Question ' . ($question['question_order'] + 1) . ' Slider Correct Answer is higher than the slider range. Increase the Slider End value or decrease the Slider Correct value.'); } - if($slider['slider_correct_low'] < $slider['slider_range_low'] ) { + if ($slider['slider_correct_low'] < $slider['slider_range_low']) { $return_message = 'invalid'; - $this->add_error('Question '.($question['question_order']+1).' Slider Correct answer is lower than the slider range. Decrease the Slider Start value or increase the Slider Correct answer.'); + $this->add_error('Question ' . ($question['question_order'] + 1) . ' Slider Correct answer is lower than the slider range. Decrease the Slider Start value or increase the Slider Correct answer.'); } // get all increments into an array - if($slider['slider_increment'] === (float) 0) { + if ($slider['slider_increment'] === (float) 0) { $return_message = 'invalid'; - $this->add_error('Question '.($question['question_order']+1).' Slider increment cannot be 0.'); + $this->add_error('Question ' . ($question['question_order'] + 1) . ' Slider increment cannot be 0.'); } // check that we're less than 1001 intervals - elseif( 1000 < ($slider['slider_range_high'] - $slider['slider_range_low']) / $slider['slider_increment'] ) { + elseif (1000 < ($slider['slider_range_high'] - $slider['slider_range_low']) / $slider['slider_increment']) { $return_message = 'invalid'; - $this->add_error('Question '.($question['question_order']+1).' has '.($slider['slider_range_high'] - $slider['slider_range_low']) / $slider['slider_increment'].' intervals. It cannot have more than 1000 intervals. Decrease the Slider Low/High Range values or increase the Slider Increment value.'); + $this->add_error('Question ' . ($question['question_order'] + 1) . ' has ' . ($slider['slider_range_high'] - $slider['slider_range_low']) / $slider['slider_increment'] . ' intervals. It cannot have more than 1000 intervals. Decrease the Slider Low/High Range values or increase the Slider Increment value.'); } else { // check to make sure the increment allows user to select the correct answer // loop through the numbers to validate the increment @@ -607,15 +627,15 @@ public function validate_question_slider($question) { $end = $slider['slider_range_high']; $current_number = $start; - while($current_number <= $end) { + while ($current_number <= $end) { // check if we're in the correct range - if($slider['slider_correct_low'] <= $current_number && $current_number <= $slider['slider_correct_high'] ) { + if ($slider['slider_correct_low'] <= $current_number && $current_number <= $slider['slider_correct_high']) { // we've got a correct answer! break; } // we're above the correct answer high, then break and return the error message. no reason to keep checking - elseif($slider['slider_correct_high'] < $current_number ) { - $this->add_error('Question '.($question['question_order']+1).' Slider correct answer is impossible to select with a Slider Increment value of '.$slider['slider_increment'].'. Change the correct answer value or increment value.'); + elseif ($slider['slider_correct_high'] < $current_number) { + $this->add_error('Question ' . ($question['question_order'] + 1) . ' Slider correct answer is impossible to select with a Slider Increment value of ' . $slider['slider_increment'] . '. Change the correct answer value or increment value.'); break; } else { // increase the interval and keep going @@ -629,78 +649,82 @@ public function validate_question_slider($question) { } /** - * Get the user_action['action'] - * @param response_obj - * @return string set in the user_action['action'] - */ + * Get the user_action['action'] + * @param response_obj + * @return string set in the user_action['action'] + */ public function get_user_action_action() { return $this->user_action['action']; } /** - * Get the user_action['element'] - * @param response_obj - * @return string set in the user_action['element'] - */ + * Get the user_action['element'] + * @param response_obj + * @return string set in the user_action['element'] + */ public function get_user_action_element() { return $this->user_action['element']; } /** - * Get the user_action['details'] array - * @param response_obj - * @return array set in the user_action['details'] - */ - public function get_user_action_details() { + * Get the user_action['details'] array + * @param response_obj + * @return array set in the user_action['details'] + */ + public function get_user_action_details() + { return $this->user_action['details']; } /** - * Get the error messages array - * @param response_obj - * @return array set in the $messages['error'] - */ - public function get_error_messages() { + * Get the error messages array + * @param response_obj + * @return array set in the $messages['error'] + */ + public function get_error_messages() + { return $this->message['error']; } /** - * Get the success messages array - * @param response_obj - * @return array set in the $messages['success'] - */ - public function get_success_messages() { + * Get the success messages array + * @param response_obj + * @return array set in the $messages['success'] + */ + public function get_success_messages() + { return $this->message['success']; } /** - * Validate a quiz - * @param $quiz (array) a 100% complete quiz array - * @return (mixed) true if valid, false if not - */ - public function validate_quiz($quiz) { + * Validate a quiz + * @param $quiz (array) a 100% complete quiz array + * @return (mixed) true if valid, false if not + */ + public function validate_quiz($quiz) + { $quiz_options = $quiz['quiz_options']; // check key_exists and not empty $quiz_keys = array('quiz_title'); $quiz_option_keys = array( - 'quiz_title_display', - 'quiz_text_color', - 'quiz_bg_color', - 'quiz_width' - ); + 'quiz_title_display', + 'quiz_text_color', + 'quiz_bg_color', + 'quiz_width' + ); $valid = $this->validate_is_set($quiz, $quiz_keys); $valid_options = $this->validate_is_set($quiz_options, $quiz_option_keys); // we have values! let's keep on going with our check - if($valid !== false) { + if ($valid !== false) { // validate quiz title $this->validate_quiz_title($quiz['quiz_title']); // validate quiz title display $this->validate_quiz_title_display($quiz_options['quiz_title_display']); // validate hex values $hex_keys = array( - 'quiz_text_color', - 'quiz_bg_color' - ); + 'quiz_text_color', + 'quiz_bg_color' + ); $this->validate_hex_values($quiz_options, $hex_keys); // validate css_measurement values $css_measurement_keys = array('quiz_width'); @@ -708,9 +732,10 @@ public function validate_quiz($quiz) { } } - public function validate_quiz_title($value) { + public function validate_quiz_title($value) + { $valid = false; - if(empty($value)) { + if (empty($value)) { $this->add_error("Quiz Title can't be empty. Please enter a Title for your Quiz."); } else { $valid = true; @@ -718,9 +743,10 @@ public function validate_quiz_title($value) { return $valid; } - public function validate_quiz_title_display($value) { + public function validate_quiz_title_display($value) + { $valid = false; - if($value !== 'show' && $value !== 'hide') { + if ($value !== 'show' && $value !== 'hide') { $this->add_error('Quiz Title Display must equal "show" or "hide".'); } else { $valid = true; @@ -731,22 +757,22 @@ public function validate_quiz_title_display($value) { public function validate_is_set($array = array(), $keys = array()) { // set as true and prove it's not valid $valid = true; - if(empty($array) || empty($keys)) { + if (empty($array) || empty($keys)) { return false; } // check for all values - foreach($keys as $key) { + foreach ($keys as $key) { // validate the the key exists in the array $validate = $this->validate_exists($array, $key); // if it doesn't exist, set valid to false - if($validate === false) { + if ($validate === false) { $valid = false; } else { // it exists, so see if it's empty $validate = $this->validate_not_empty($array, $key); // if it's empty, set $valid to false - if($validate === false) { + if ($validate === false) { $valid = false; } } @@ -755,37 +781,40 @@ public function validate_is_set($array = array(), $keys = array()) { return $valid; } - public function validate_exists($array, $key) { + public function validate_exists($array, $key) + { $exists = false; - if(array_key_exists($key, $array)) { + if (array_key_exists($key, $array)) { $exists = true; } else { // if key doesn't exist, add error // if empty, add error - $this->add_error($key.' does not exist.'); + $this->add_error($key . ' does not exist.'); } return $exists; } - public function validate_not_empty($array, $key) { + public function validate_not_empty($array, $key) + { $not_empty = false; - if(!empty($array[$key])) { + if (!empty($array[$key])) { $not_empty = true; } else { // if empty, add error - $this->add_error($key.' is empty.'); + $this->add_error($key . ' is empty.'); } return $not_empty; } - public function validate_hex_values($array, $keys) { + public function validate_hex_values($array, $keys) + { $valid = true; - if(!empty($keys)) { - foreach($keys as $key) { + if (!empty($keys)) { + foreach ($keys as $key) { $validate = $this->validate_hex($array[$key]); - if($validate === false) { + if ($validate === false) { // generate a good error message - $this->add_error('Hex Color value for '.$key.' was not valid. Hex Color Value must be a valid Hex value like #ffffff'); + $this->add_error('Hex Color value for ' . $key . ' was not valid. Hex Color Value must be a valid Hex value like #ffffff'); $valid = false; } } @@ -793,15 +822,16 @@ public function validate_hex_values($array, $keys) { return $valid; } - public function validate_css_measurement_values($array, $keys) { + public function validate_css_measurement_values($array, $keys) + { $valid = true; - if(!empty($keys)) { - foreach($keys as $key) { + if (!empty($keys)) { + foreach ($keys as $key) { $validate = $this->validate_css_measurement($array[$key]); - if($validate === false) { + if ($validate === false) { // generate a good error message // give a good error message - $this->add_error('CSS Measurement value for '.$key.' is not valid. Measurements can be any valid CSS Measurement such as 100%, 600px, 30rem, 80vw'); + $this->add_error('CSS Measurement value for ' . $key . ' is not valid. Measurements can be any valid CSS Measurement such as 100%, 600px, 30rem, 80vw'); $valid = false; } } diff --git a/enp-quiz.code-workspace b/enp-quiz.code-workspace new file mode 100644 index 00000000..3c216e3a --- /dev/null +++ b/enp-quiz.code-workspace @@ -0,0 +1,34 @@ +{ + "folders": [ + { + "path": ".." + } + ], + "settings": { + "phpcs.enable": true, + "phpcs.composerJsonPath": "wp-content/plugins/enp-quiz/composer.json", + "phpcs.executablePath": "/Users/lukey/.composer/vendor/bin/phpcs", + "phpcbf.enable": true, + "phpcbf.onsave": true, + "phpcbf.executablePath": "/Users/lukey/.composer/vendor/bin/phpcbf", + "phpcbf.standard": "WordPress", + "phpsab.standard": "WordPress", + "phpsab.fixerEnable": true, + "editor.renderWhitespace": "all", + "editor.hover.enabled": true, + "php.suggest.basic": false, + "phpcbf.documentFormattingProvider": true, + "html.format.templating": true, + "editor.defaultFormatter": "persoderlind.vscode-phpcbf", + "[php]": { + "editor.defaultFormatter": "persoderlind.vscode-phpcbf" + }, + "editor.autoIndent": "keep", + "editor.tabSize": 4, + "editor.insertSpaces": true, + "editor.detectIndentation": false, + "phpcs.standard": "enp-quiz/rulesetsPHPCS.xml", + "phpcs.showWarnings": false, + "editor.guides.highlightActiveIndentation": false + } +} \ No newline at end of file diff --git a/enp_quiz.php b/enp_quiz.php index 4ce76a05..5affa7a6 100755 --- a/enp_quiz.php +++ b/enp_quiz.php @@ -16,7 +16,7 @@ * Plugin Name: Engaging Quiz Creator * Plugin URI: http://engagingnewsproject.org/quiz-tool * Description: Create quizzes for embedding on websites - * Version: 0.0.1 + * Version: 0.0.2 * Author: Engaging News Project * Author URI: http://engagingnewsproject.org * License: GPL-3.0+ @@ -27,24 +27,24 @@ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { - die; + die; } // Define a Plugin Root File constant if(!defined('ENP_QUIZ_ROOT')) { - define( 'ENP_QUIZ_ROOT', plugin_dir_path( __FILE__ ) ); + define( 'ENP_QUIZ_ROOT', plugin_dir_path( __FILE__ ) ); } if(!defined('ENP_QUIZ_ROOT_URL')) { - define( 'ENP_QUIZ_ROOT_URL', plugins_url('enp-quiz') ); + define( 'ENP_QUIZ_ROOT_URL', plugins_url('enp-quiz') ); } // Define Version if(!defined('ENP_QUIZ_VERSION')) { - // also defined in public/class-enp_quiz-take.php for the Quiz Take side of things - define('ENP_QUIZ_VERSION', '1.1.0'); - // add_option to WP options table so we can track it - // don't update it, because that'll be handled by the upgrade code - add_option('enp_quiz_version', ENP_QUIZ_VERSION); + // also defined in public/class-enp_quiz-take.php for the Quiz Take side of things + define('ENP_QUIZ_VERSION', '1.1.1'); + // add_option to WP options table so we can track it + // don't update it, because that'll be handled by the upgrade code + add_option('enp_quiz_version', ENP_QUIZ_VERSION); } /** @@ -52,9 +52,9 @@ * This action is documented in includes/class-enp_quiz-activator.php */ function activate_enp_quiz() { - require_once plugin_dir_path( __FILE__ ) . 'includes/class-enp_quiz-activator.php'; - $activate = new Enp_quiz_Activator(); - $activate->run_activation(); + require_once plugin_dir_path( __FILE__ ) . 'includes/class-enp_quiz-activator.php'; + $activate = new Enp_quiz_Activator(); + $activate->run_activation(); } /** @@ -62,17 +62,17 @@ function activate_enp_quiz() { * This action is documented in includes/class-enp_quiz-deactivator.php */ function deactivate_enp_quiz() { - require_once plugin_dir_path( __FILE__ ) . 'includes/class-enp_quiz-deactivator.php'; - new Enp_quiz_Deactivator(); + require_once plugin_dir_path( __FILE__ ) . 'includes/class-enp_quiz-deactivator.php'; + new Enp_quiz_Deactivator(); } /** * The code that runs on init to add in any necessary rewrite rules */ function add_enp_quiz_rewrite_rules($hard = false) { - require_once plugin_dir_path( __FILE__ ) . 'includes/class-enp_quiz-activator.php'; - $activate = new Enp_quiz_Activator(); - $activate->add_rewrite_rules($hard); + require_once plugin_dir_path( __FILE__ ) . 'includes/class-enp_quiz-activator.php'; + $activate = new Enp_quiz_Activator(); + $activate->add_rewrite_rules($hard); } @@ -80,13 +80,13 @@ function add_enp_quiz_rewrite_rules($hard = false) { * Check version numbers to see if we need to run an upgrade process */ function check_for_enp_quiz_upgrade() { - // check for upgrades - $stored_version = get_option('enp_quiz_version'); - if($stored_version !== ENP_QUIZ_VERSION) { - // run upgrade code - require_once('upgrade.php'); - $upgrade = new Enp_quiz_Upgrade($stored_version); - } + // check for upgrades + $stored_version = get_option('enp_quiz_version'); + if($stored_version !== ENP_QUIZ_VERSION) { + // run upgrade code + require_once('upgrade.php'); + $upgrade = new Enp_quiz_Upgrade($stored_version); + } } /** @@ -95,16 +95,16 @@ function check_for_enp_quiz_upgrade() { * to see if we need to add our rules back in. */ function enp_quiz_check_for_wordpress_upgrade() { - global $wp_version; - // check for upgrades - $stored_version = get_option('enp_quiz_wordpress_core_version'); - if($stored_version !== $wp_version) { - // run upgrade code - $hard = true; - add_enp_quiz_rewrite_rules($hard); - // set the new worpdress core version + global $wp_version; + // check for upgrades + $stored_version = get_option('enp_quiz_wordpress_core_version'); + if($stored_version !== $wp_version) { + // run upgrade code + $hard = true; + add_enp_quiz_rewrite_rules($hard); + // set the new worpdress core version update_option('enp_quiz_wordpress_core_version', $wp_version); - } + } } register_activation_hook( __FILE__, 'activate_enp_quiz' ); @@ -169,19 +169,16 @@ function enp_quiz_check_for_wordpress_upgrade() { */ function run_enp_quiz() { - $plugin = new Enp_quiz(); + $plugin = new Enp_quiz(); } /* For DEBUGGING * creates log file with error output. Good for using on * The plugin generated xxxx characters of unexpected output messages - +*/ add_action('activated_plugin','enp_log_error'); function enp_log_error(){ - file_put_contents(plugin_dir_path( __FILE__ ).'/error.txt', ob_get_contents()); + file_put_contents(plugin_dir_path( __FILE__ ).'/error.txt', ob_get_contents()); } -*/ -run_enp_quiz(); - - +run_enp_quiz(); diff --git a/error.txt b/error.txt new file mode 100644 index 00000000..e69de29b diff --git a/gulpfile.js b/gulpfile.js index 6374f2e5..da1687bb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -2,8 +2,9 @@ var gulp = require('gulp'); var runSequence = require('run-sequence'); var browserSync = require('browser-sync'); var sass = require('gulp-sass'); +var sourcemaps = require('gulp-sourcemaps'); var autoprefixer = require('gulp-autoprefixer'); -var crass = require('gulp-crass'); +var cssnano = require('gulp-cssnano'); var uglify = require('gulp-uglify'); var rename = require("gulp-rename"); var concat = require("gulp-concat"); @@ -16,7 +17,7 @@ var reload = browserSync.reload; gulp.task('serve', ['sassQuizTake', 'sassQuizCreate', 'quizCreateJS', 'quizDashboardJS', 'quizResultsJS', 'quizTakeJS', 'quizTakeIframeParentJS', 'quizTakeUtilityJS'], function() { browserSync({ - proxy: "localhost:10044" + proxy: "localhost:10044", }); // quiz create @@ -42,10 +43,11 @@ gulp.task('serve', ['sassQuizTake', 'sassQuizCreate', 'quizCreateJS', 'quizDashb // Watch for file changes onChangeReload = ["public/quiz-create/css/enp_quiz-create.min.css", - "public/quiz-create/*.php", + "public/quiz-create/templates/*.php", "public/quiz-create/includes/*.php", "public/quiz-create/js/dist/quiz-create.min.js", "public/quiz-take/css/enp_quiz-take.min.css", + "public/quiz-create/templates/partials/*.php", "public/quiz-take/*.php", "public/quiz-take/includes/*.php", "public/quiz-take/js/dist/quiz-take.min.js" @@ -239,24 +241,27 @@ function compressJS(path) { function processSASS(path) { return gulp.src(path+'sass/*.{scss,sass}') - .pipe(plumber()) - - // Converts Sass into CSS with Gulp Sass - .pipe(sass({ - errLogToConsole: true - })) - // adds prefixes to whatever needs to get done - .pipe(autoprefixer()) - - // minify the CSS - .pipe(crass({pretty:false})) - - // rename to add .min - .pipe(rename({ - suffix: '.min' - })) - // Outputs CSS files in the css folder - .pipe(gulp.dest(path)); + .pipe(plumber()) + .pipe(sourcemaps.init()) + // Converts Sass into CSS with Gulp Sass + .pipe(sass({ + errLogToConsole: true + })) + + // adds prefixes to whatever needs to get done + .pipe(autoprefixer()) + + // minify the CSS + .pipe(cssnano()) + + // rename to add .min + .pipe(rename({ + suffix: '.min' + })) + .pipe(sourcemaps.write('.')) + + // Outputs CSS files in the css folder + .pipe(gulp.dest(path)); } // Creating a default task diff --git a/includes/class-enp_quiz-activator.php b/includes/class-enp_quiz-activator.php index b7da4bd9..f50f2a8b 100755 --- a/includes/class-enp_quiz-activator.php +++ b/includes/class-enp_quiz-activator.php @@ -11,553 +11,554 @@ * @author Engaging News Project */ class Enp_quiz_Activator { - public $enp_database_config_path, - $enp_config_path, - $quiz_table_name, - $quiz_option_table_name, - $question_table_name, - $mc_option_table_name, - $slider_table_name, - $response_quiz_table_name, - $response_question_table_name, - $response_mc_table_name, - $response_slider_table_name, - $ab_test_table_name, - $ab_test_response_table_name, - $embed_site_table_name, - $embed_site_type_table_name, - $embed_site_br_site_type_table_name, - $embed_quiz_table_name; - /** - * Short Description. (use period) - * - * Long Description. - * - * @since 0.0.1 - */ - public function __construct() { - - // set some stuff - // set enp-database-quiz-config file path - $this->enp_database_config_path = $_SERVER["DOCUMENT_ROOT"].'/enp-quiz-database-config.php'; - // set enp-quiz-config file path - $this->enp_config_path = WP_CONTENT_DIR.'/enp-quiz-config.php'; - - // set table names - $this->set_table_names(); - // do nothing. do $this->run_activation() if you want to run it - } - - public function run_activation() { - - $this->create_tables(); - - $database_config_file_exists = $this->check_database_config_file(); - // if doesn't exist, create it - if($database_config_file_exists === false) { - //create the config file - $this->create_database_config_file(); - } - - - - $config_file_exists = $this->check_config_file(); - // if doesn't exist, create it - if($config_file_exists === false) { - //create the config file - $this->create_config_file(); - } - - // include the config file now that we have it - $this->include_config_file(); - - // check to see if our image upload directory exists - if (!file_exists(ENP_QUIZ_IMAGE_DIR)) { - // if it doesn't exist, create it - mkdir(ENP_QUIZ_IMAGE_DIR, 0777, true); - } - - // Set-up rewrite rules based on our config files - // add our rewrite rules to htaccess - $this->add_rewrite_rules(); - } - - protected function include_config_file() { - $config_file_exists = $this->check_config_file(); - //check to make sure the config file exists - if($config_file_exists === true) { - include_once($this->enp_config_path); - } else { - die('Could not find the enp-quiz-config.php file in the wp-content folder. Try deactivating and re-activating the plugin. This should create the config file.'); - } - } - - public function add_rewrite_rules($hard = true) { - if(!defined('ENP_QUIZ_TAKE_TEMPLATES_PATH')) { - $this->include_config_file(); - } - - // path to quiz - // we have to remove the base path because add_rewrite_rule will start // at the base directory. Take ABSPATH and subtract it from our Config Template Path - $enp_quiz_take_template_path = str_replace(ABSPATH,"",ENP_QUIZ_TAKE_TEMPLATES_PATH); - $enp_quiz_create_template_path = str_replace(ABSPATH,"",ENP_QUIZ_CREATE_TEMPLATES_PATH); - // Quiz Create - add_rewrite_rule('enp-quiz/([^/]*)/([^/]*)?','index.php?enp_quiz_template=$matches[1]&enp_quiz_id=$matches[2]','top'); - - // Quiz Take - add_rewrite_rule('quiz-embed/([0-9]+)?$', $enp_quiz_take_template_path.'quiz.php?quiz_id=$1','top'); - - // Take AB Test - add_rewrite_rule('ab-embed/([0-9]+)?$', $enp_quiz_take_template_path.'ab-test.php?ab_test_id=$1','top'); - - if($hard == true) { - // hard flush on rewrite rules so it regenerates the htaccess file - flush_rewrite_rules(); - } - - } - - - protected function set_table_names() { - global $wpdb; - - $this->quiz_table_name = $wpdb->prefix . 'enp_quiz'; - $this->quiz_option_table_name = $wpdb->prefix . 'enp_quiz_option'; - $this->question_table_name = $wpdb->prefix . 'enp_question'; - $this->mc_option_table_name = $wpdb->prefix . 'enp_question_mc_option'; - $this->slider_table_name = $wpdb->prefix . 'enp_question_slider'; - $this->response_quiz_table_name = $wpdb->prefix . 'enp_response_quiz'; - $this->response_question_table_name = $wpdb->prefix . 'enp_response_question'; - $this->response_mc_table_name = $wpdb->prefix . 'enp_response_mc'; - $this->response_slider_table_name = $wpdb->prefix . 'enp_response_slider'; - $this->ab_test_table_name = $wpdb->prefix . 'enp_ab_test'; - $this->ab_test_response_table_name = $wpdb->prefix . 'enp_response_ab_test'; - $this->embed_site_table_name = $wpdb->prefix . 'enp_embed_site'; - $this->embed_site_type_table_name = $wpdb->prefix . 'enp_embed_site_type'; - $this->embed_site_br_site_type_table_name = $wpdb->prefix . 'enp_embed_site_br_site_type'; - $this->embed_quiz_table_name = $wpdb->prefix . 'enp_embed_quiz'; - } - - /** - * Creates all the tables we need for the plugin - * Will not create tables that already exist, so feel free to run - * this script if adding new tables (since they will only be created) - * if they don't exist - * @dependencies $wpdb global - */ - public function create_tables() { - global $wpdb; - $charset_collate = $wpdb->get_charset_collate(); - // quiz table name - - $quiz_table_name = $this->quiz_table_name; - $quiz_sql = "CREATE TABLE $quiz_table_name ( - quiz_id BIGINT(20) NOT NULL AUTO_INCREMENT, - quiz_title VARCHAR(255) NOT NULL, - quiz_status VARCHAR(11) NOT NULL, - quiz_finish_message VARCHAR(510) NOT NULL, - quiz_owner BIGINT(20) NOT NULL, - quiz_created_by BIGINT(20) NOT NULL, - quiz_created_at DATETIME NOT NULL, - quiz_updated_by BIGINT(20) NOT NULL, - quiz_updated_at DATETIME NOT NULL, - quiz_views BIGINT(20) NOT NULL DEFAULT '0', - quiz_starts BIGINT(20) NOT NULL DEFAULT '0', - quiz_finishes BIGINT(20) NOT NULL DEFAULT '0', - quiz_score_average DECIMAL(5,4) NOT NULL DEFAULT 0, - quiz_time_spent BIGINT(40) NOT NULL DEFAULT '0', - quiz_time_spent_average BIGINT(20) NOT NULL DEFAULT '0', - quiz_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (quiz_id) - ) $charset_collate;"; - - - $quiz_option_table_name = $this->quiz_option_table_name; - $quiz_option_sql = "CREATE TABLE $quiz_option_table_name ( - quiz_option_id BIGINT(20) NOT NULL AUTO_INCREMENT, - quiz_id BIGINT(20) NOT NULL, - quiz_option_name VARCHAR(191) NOT NULL, - quiz_option_value LONGTEXT NOT NULL, - PRIMARY KEY (quiz_option_id), - FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id) - ) $charset_collate;"; - - - $question_table_name = $this->question_table_name; - $question_sql = "CREATE TABLE $question_table_name ( - question_id BIGINT(20) NOT NULL AUTO_INCREMENT, - quiz_id BIGINT(20) NOT NULL, - question_title VARCHAR(6120) NOT NULL, - question_image TEXT NOT NULL, - question_image_alt VARCHAR(3060) NOT NULL, - question_order BIGINT(3) NOT NULL, - question_type VARCHAR(20) NOT NULL, - question_explanation VARCHAR(6120) NOT NULL, - question_views BIGINT(20) NOT NULL DEFAULT '0', - question_responses BIGINT(20) NOT NULL DEFAULT '0', - question_responses_correct BIGINT(20) NOT NULL DEFAULT 0, - question_responses_incorrect BIGINT(20) NOT NULL DEFAULT 0, - question_responses_correct_percentage DECIMAL(5,4) NOT NULL DEFAULT 0, - question_responses_incorrect_percentage DECIMAL(5,4) NOT NULL DEFAULT 0, - question_score_average DECIMAL(5,4) NOT NULL DEFAULT 0, - question_time_spent BIGINT(40) NOT NULL, - question_time_spent_average BIGINT(20) NOT NULL, - question_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (question_id), - FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id) - ) $charset_collate;"; - - - $mc_option_table_name = $this->mc_option_table_name; - $mc_option_sql = "CREATE TABLE $mc_option_table_name ( - mc_option_id BIGINT(20) NOT NULL AUTO_INCREMENT, - question_id BIGINT(20) NOT NULL, - mc_option_content VARCHAR(255) NOT NULL, - mc_option_correct BOOLEAN NOT NULL, - mc_option_order BIGINT(3) NOT NULL, - mc_option_responses BIGINT(20) NOT NULL, - mc_option_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (mc_option_id), - FOREIGN KEY (question_id) REFERENCES $question_table_name (question_id) - ) $charset_collate;"; - - - $slider_table_name = $this->slider_table_name; - $slider_sql = "CREATE TABLE $slider_table_name ( - slider_id BIGINT(20) NOT NULL AUTO_INCREMENT, - question_id BIGINT(20) NOT NULL, - slider_range_low DECIMAL(20,4) NOT NULL, - slider_range_high DECIMAL(20,4) NOT NULL, - slider_correct_low DECIMAL(20,4) NOT NULL, - slider_correct_high DECIMAL(20,4) NOT NULL, - slider_increment DECIMAL(20,4) NOT NULL, - slider_prefix VARCHAR(70) NOT NULL, - slider_suffix VARCHAR(70) NOT NULL, - slider_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (slider_id), - FOREIGN KEY (question_id) REFERENCES $question_table_name (question_id) - ) $charset_collate;"; - - - $response_quiz_table_name = $this->response_quiz_table_name; - $response_quiz_sql = "CREATE TABLE $response_quiz_table_name ( - response_quiz_id BIGINT(20) NOT NULL AUTO_INCREMENT, - quiz_id BIGINT(20) NOT NULL, - user_ip VARBINARY(16) NOT NULL, - user_id CHAR(36) BINARY NOT NULL, - quiz_viewed BOOLEAN DEFAULT 0, - quiz_started BOOLEAN DEFAULT 0, - quiz_completed BOOLEAN DEFAULT 0, - quiz_restarted BOOLEAN DEFAULT 0, - quiz_score DECIMAL(5,4) NOT NULL DEFAULT 0, - response_quiz_created_at DATETIME NOT NULL, - response_quiz_viewed_at DATETIME NOT NULL, - response_quiz_updated_at DATETIME NOT NULL, - response_quiz_is_ab_test BOOLEAN DEFAULT 0, - response_quiz_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (response_quiz_id), - FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id) - ) $charset_collate;"; - - - $response_question_table_name = $this->response_question_table_name; - $response_question_sql = "CREATE TABLE $response_question_table_name ( - response_question_id BIGINT(20) NOT NULL AUTO_INCREMENT, - response_quiz_id BIGINT(20) NOT NULL, - question_id BIGINT(20) NOT NULL, - question_viewed BOOLEAN DEFAULT 0, - question_responded BOOLEAN DEFAULT 0, - response_correct BOOLEAN NOT NULL, - response_question_created_at DATETIME NOT NULL, - response_question_viewed_at DATETIME NOT NULL, - response_question_updated_at DATETIME NOT NULL, - response_question_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (response_question_id), - FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), - FOREIGN KEY (question_id) REFERENCES $question_table_name (question_id) - ) $charset_collate;"; - - - $response_mc_table_name = $this->response_mc_table_name; - $response_mc_sql = "CREATE TABLE $response_mc_table_name ( - response_mc_id BIGINT(20) NOT NULL AUTO_INCREMENT, - response_quiz_id BIGINT(20) NOT NULL, - response_question_id BIGINT(20) NOT NULL, - mc_option_id BIGINT(20) NOT NULL, - response_mc_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (response_mc_id), - FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), - FOREIGN KEY (response_question_id) REFERENCES $response_question_table_name (response_question_id), - FOREIGN KEY (mc_option_id) REFERENCES $mc_option_table_name (mc_option_id) - ) $charset_collate;"; - - - $response_slider_table_name = $this->response_slider_table_name; - $response_slider_sql = "CREATE TABLE $response_slider_table_name ( - response_slider_id BIGINT(20) NOT NULL AUTO_INCREMENT, - response_quiz_id BIGINT(20) NOT NULL, - response_question_id BIGINT(20) NOT NULL, - slider_id BIGINT(20) NOT NULL, - response_slider DECIMAL(20,4) NOT NULL, - response_slider_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (response_slider_id), - FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), - FOREIGN KEY (response_question_id) REFERENCES $response_question_table_name (response_question_id), - FOREIGN KEY (slider_id) REFERENCES $slider_table_name (slider_id) - ) $charset_collate;"; - - - $ab_test_table_name = $this->ab_test_table_name; - $ab_test_sql = "CREATE TABLE $ab_test_table_name ( - ab_test_id BIGINT(20) NOT NULL AUTO_INCREMENT, - ab_test_title VARCHAR(255) NOT NULL, - quiz_id_a BIGINT(20) NOT NULL, - quiz_id_b BIGINT(20) NOT NULL, - ab_test_owner BIGINT(20) NOT NULL, - ab_test_created_by BIGINT(20) NOT NULL, - ab_test_created_at DATETIME NOT NULL, - ab_test_updated_by BIGINT(20) NOT NULL, - ab_test_updated_at DATETIME NOT NULL, - ab_test_is_deleted BOOLEAN DEFAULT 0, - PRIMARY KEY (ab_test_id), - FOREIGN KEY (quiz_id_a) REFERENCES $quiz_table_name (quiz_id), - FOREIGN KEY (quiz_id_b) REFERENCES $quiz_table_name (quiz_id) - ) $charset_collate;"; - - - $ab_test_response_table_name = $this->ab_test_response_table_name; - $ab_test_response_sql = "CREATE TABLE $ab_test_response_table_name ( - response_ab_test_id BIGINT(20) NOT NULL AUTO_INCREMENT, - response_quiz_id BIGINT(20) NOT NULL, - ab_test_id BIGINT(20) NOT NULL, - PRIMARY KEY (response_ab_test_id), - FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), - FOREIGN KEY (ab_test_id) REFERENCES $ab_test_table_name (ab_test_id) - ) $charset_collate;"; - - - $embed_site_table_name = $this->embed_site_table_name; - $embed_site_sql = "CREATE TABLE $embed_site_table_name ( - embed_site_id BIGINT(20) NOT NULL AUTO_INCREMENT, - embed_site_name VARCHAR(50) NOT NULL, - embed_site_url VARCHAR(124) NOT NULL, - embed_site_created_at DATETIME NOT NULL, - embed_site_updated_at DATETIME NOT NULL, - embed_site_is_dev BOOLEAN DEFAULT 0, - PRIMARY KEY (embed_site_id), - UNIQUE KEY (embed_site_url) - ) $charset_collate;"; - - - $embed_site_type_table_name = $this->embed_site_type_table_name; - $embed_site_type_sql = "CREATE TABLE $embed_site_type_table_name ( - embed_site_type_id BIGINT(20) NOT NULL AUTO_INCREMENT, - embed_site_type_slug VARCHAR(50) NOT NULL, - embed_site_type_name VARCHAR(50) NOT NULL, - PRIMARY KEY (embed_site_type_id), - UNIQUE KEY (embed_site_type_slug) - ) $charset_collate;"; - - - $embed_site_br_site_type_table_name = $this->embed_site_br_site_type_table_name; - $embed_site_br_site_type_sql = "CREATE TABLE $embed_site_br_site_type_table_name ( - embed_site_br_site_type_id BIGINT(20) NOT NULL AUTO_INCREMENT, - embed_site_id BIGINT(20) NOT NULL, - embed_site_type_id BIGINT(20) NOT NULL, - PRIMARY KEY (embed_site_br_site_type_id), - FOREIGN KEY (embed_site_id) REFERENCES $embed_site_table_name (embed_site_id), - FOREIGN KEY (embed_site_type_id) REFERENCES $embed_site_type_table_name (embed_site_type_id) - ) $charset_collate;"; - - - $embed_quiz_table_name = $this->embed_quiz_table_name; - $embed_quiz_sql = "CREATE TABLE $embed_quiz_table_name ( - embed_quiz_id BIGINT(20) NOT NULL AUTO_INCREMENT, - quiz_id BIGINT(20) NOT NULL, - embed_site_id BIGINT(20) NOT NULL, - embed_quiz_url VARCHAR(510) NOT NULL, - embed_quiz_loads BIGINT(20) NOT NULL DEFAULT '0', - embed_quiz_views BIGINT(20) NOT NULL DEFAULT '0', - embed_quiz_created_at DATETIME NOT NULL, - embed_quiz_updated_at DATETIME NOT NULL, - embed_quiz_is_dev BOOLEAN DEFAULT 0, - PRIMARY KEY (embed_quiz_id), - FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id), - FOREIGN KEY (embed_site_id) REFERENCES $embed_site_table_name (embed_site_id) - ) $charset_collate;"; - - // create a tables array, - // store all the table names and queries - $tables = array( - array( - 'name'=>$this->quiz_table_name, - 'sql'=>$quiz_sql - ), - array( - 'name'=>$this->quiz_option_table_name, - 'sql'=>$quiz_option_sql - ), - array( - 'name'=>$this->question_table_name, - 'sql'=>$question_sql - ), - array( - 'name'=>$this->mc_option_table_name, - 'sql'=>$mc_option_sql - ), - array( - 'name'=>$this->slider_table_name, - 'sql'=>$slider_sql - ), - array( - 'name'=>$this->response_quiz_table_name, - 'sql'=>$response_quiz_sql - ), - array( - 'name'=>$this->response_question_table_name, - 'sql'=>$response_question_sql - ), - array( - 'name'=>$this->response_mc_table_name, - 'sql'=>$response_mc_sql - ), - array( - 'name'=>$this->response_slider_table_name, - 'sql'=>$response_slider_sql - ), - array( - 'name'=>$this->ab_test_table_name, - 'sql'=>$ab_test_sql - ), - array( - 'name'=>$this->ab_test_response_table_name, - 'sql'=>$ab_test_response_sql - ), - array( - 'name'=>$this->embed_site_table_name, - 'sql'=>$embed_site_sql - ), - array( - 'name'=>$this->embed_site_type_table_name, - 'sql'=>$embed_site_type_sql - ), - array( - 'name'=>$this->embed_site_br_site_type_table_name, - 'sql'=>$embed_site_br_site_type_sql - ), - array( - 'name'=>$this->embed_quiz_table_name, - 'sql'=>$embed_quiz_sql - ), - ); - - // require file that allows table creation - require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); - - // loop through all of our tables and - // create them if they haven't already been created - foreach($tables as $table) { - $table_name = $table['name']; - $table_sql = $table['sql']; - // see if the table exists or not - if($wpdb->get_var("show tables like '$table_name'") != $table_name) { - // it doesn't exist, so create the table - dbDelta($table_sql); - } - } - } - - protected function check_database_config_file() { - // see if the file exists - if(file_exists($this->enp_database_config_path)) { - // if the file exists, return true - return true; - } - // if the file doesn't exist, return false - return false; - } - - protected function create_database_config_file() { - // creates and opens the file for writing - $database_config_file = fopen($this->enp_database_config_path, "w"); - -// use single quotes around the DB_PASSWORD in case they have -// a $ in their password -$database_connection = 'enp_database_config_path = $_SERVER['DOCUMENT_ROOT'] . '/enp-quiz-database-config.php'; + // set enp-quiz-config file path + $this->enp_config_path = WP_CONTENT_DIR . '/enp-quiz-config.php'; + + // set table names + $this->set_table_names(); + // do nothing. do $this->run_activation() if you want to run it + } + + public function run_activation() { + + $this->create_tables(); + + $database_config_file_exists = $this->check_database_config_file(); + // if doesn't exist, create it + if ( $database_config_file_exists === false ) { + // create the config file + $this->create_database_config_file(); + } + + + + $config_file_exists = $this->check_config_file(); + // if doesn't exist, create it + if ( $config_file_exists === false ) { + // create the config file + $this->create_config_file(); + } + + // include the config file now that we have it + $this->include_config_file(); + + // check to see if our image upload directory exists + if ( ! file_exists( ENP_QUIZ_IMAGE_DIR ) ) { + // if it doesn't exist, create it + mkdir( ENP_QUIZ_IMAGE_DIR, 0777, true ); + } + + // Set-up rewrite rules based on our config files + // add our rewrite rules to htaccess + $this->add_rewrite_rules(); + } + + protected function include_config_file() { + $config_file_exists = $this->check_config_file(); + //check to make sure the config file exists + if($config_file_exists === true) { + include_once($this->enp_config_path); + } else { + die('Could not find the enp-quiz-config.php file in the wp-content folder. Try deactivating and re-activating the plugin. This should create the config file.'); + } + } + + public function add_rewrite_rules($hard = true) { + if(!defined('ENP_QUIZ_TAKE_TEMPLATES_PATH')) { + $this->include_config_file(); + } + + // path to quiz + // we have to remove the base path because add_rewrite_rule will start // at the base directory. Take ABSPATH and subtract it from our Config Template Path + $enp_quiz_take_template_path = str_replace(ABSPATH,"",ENP_QUIZ_TAKE_TEMPLATES_PATH); + $enp_quiz_create_template_path = str_replace(ABSPATH,"",ENP_QUIZ_CREATE_TEMPLATES_PATH); + // Quiz Create + add_rewrite_rule('enp-quiz/([^/]*)/([^/]*)?','index.php?enp_quiz_template=$matches[1]&enp_quiz_id=$matches[2]','top'); + + // Quiz Take + add_rewrite_rule('quiz-embed/([0-9]+)?$', $enp_quiz_take_template_path.'quiz.php?quiz_id=$1','top'); + + // Take AB Test + add_rewrite_rule('ab-embed/([0-9]+)?$', $enp_quiz_take_template_path.'ab-test.php?ab_test_id=$1','top'); + + if($hard == true) { + // hard flush on rewrite rules so it regenerates the htaccess file + flush_rewrite_rules(); + } + + } + + + protected function set_table_names() { + global $wpdb; + + $this->quiz_table_name = $wpdb->prefix . 'enp_quiz'; + $this->quiz_option_table_name = $wpdb->prefix . 'enp_quiz_option'; + $this->question_table_name = $wpdb->prefix . 'enp_question'; + $this->mc_option_table_name = $wpdb->prefix . 'enp_question_mc_option'; + $this->slider_table_name = $wpdb->prefix . 'enp_question_slider'; + $this->response_quiz_table_name = $wpdb->prefix . 'enp_response_quiz'; + $this->response_question_table_name = $wpdb->prefix . 'enp_response_question'; + $this->response_mc_table_name = $wpdb->prefix . 'enp_response_mc'; + $this->response_slider_table_name = $wpdb->prefix . 'enp_response_slider'; + $this->ab_test_table_name = $wpdb->prefix . 'enp_ab_test'; + $this->ab_test_response_table_name = $wpdb->prefix . 'enp_response_ab_test'; + $this->embed_site_table_name = $wpdb->prefix . 'enp_embed_site'; + $this->embed_site_type_table_name = $wpdb->prefix . 'enp_embed_site_type'; + $this->embed_site_br_site_type_table_name = $wpdb->prefix . 'enp_embed_site_br_site_type'; + $this->embed_quiz_table_name = $wpdb->prefix . 'enp_embed_quiz'; + } + + /** + * Creates all the tables we need for the plugin + * Will not create tables that already exist, so feel free to run + * this script if adding new tables (since they will only be created) + * if they don't exist + * @dependencies $wpdb global + */ + public function create_tables() { + global $wpdb; + $charset_collate = $wpdb->get_charset_collate(); + // quiz table name + + $quiz_table_name = $this->quiz_table_name; + $quiz_sql = "CREATE TABLE $quiz_table_name ( + quiz_id BIGINT(20) NOT NULL AUTO_INCREMENT, + quiz_title VARCHAR(255) NOT NULL, + quiz_feedback VARCHAR(255) NOT NULL, + quiz_status VARCHAR(11) NOT NULL, + quiz_finish_message VARCHAR(510) NOT NULL, + quiz_owner BIGINT(20) NOT NULL, + quiz_created_by BIGINT(20) NOT NULL, + quiz_created_at DATETIME NOT NULL, + quiz_updated_by BIGINT(20) NOT NULL, + quiz_updated_at DATETIME NOT NULL, + quiz_views BIGINT(20) NOT NULL DEFAULT '0', + quiz_starts BIGINT(20) NOT NULL DEFAULT '0', + quiz_finishes BIGINT(20) NOT NULL DEFAULT '0', + quiz_score_average DECIMAL(5,4) NOT NULL DEFAULT 0, + quiz_time_spent BIGINT(40) NOT NULL DEFAULT '0', + quiz_time_spent_average BIGINT(20) NOT NULL DEFAULT '0', + quiz_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (quiz_id) + ) $charset_collate;"; + + + $quiz_option_table_name = $this->quiz_option_table_name; + $quiz_option_sql = "CREATE TABLE $quiz_option_table_name ( + quiz_option_id BIGINT(20) NOT NULL AUTO_INCREMENT, + quiz_id BIGINT(20) NOT NULL, + quiz_option_name VARCHAR(191) NOT NULL, + quiz_option_value LONGTEXT NOT NULL, + PRIMARY KEY (quiz_option_id), + FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id) + ) $charset_collate;"; + + + $question_table_name = $this->question_table_name; + $question_sql = "CREATE TABLE $question_table_name ( + question_id BIGINT(20) NOT NULL AUTO_INCREMENT, + quiz_id BIGINT(20) NOT NULL, + question_title VARCHAR(6120) NOT NULL, + question_image TEXT NOT NULL, + question_image_alt VARCHAR(3060) NOT NULL, + question_order BIGINT(3) NOT NULL, + question_type VARCHAR(20) NOT NULL, + question_explanation VARCHAR(6120) NOT NULL, + question_views BIGINT(20) NOT NULL DEFAULT '0', + question_responses BIGINT(20) NOT NULL DEFAULT '0', + question_responses_correct BIGINT(20) NOT NULL DEFAULT 0, + question_responses_incorrect BIGINT(20) NOT NULL DEFAULT 0, + question_responses_correct_percentage DECIMAL(5,4) NOT NULL DEFAULT 0, + question_responses_incorrect_percentage DECIMAL(5,4) NOT NULL DEFAULT 0, + question_score_average DECIMAL(5,4) NOT NULL DEFAULT 0, + question_time_spent BIGINT(40) NOT NULL, + question_time_spent_average BIGINT(20) NOT NULL, + question_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (question_id), + FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id) + ) $charset_collate;"; + + + $mc_option_table_name = $this->mc_option_table_name; + $mc_option_sql = "CREATE TABLE $mc_option_table_name ( + mc_option_id BIGINT(20) NOT NULL AUTO_INCREMENT, + question_id BIGINT(20) NOT NULL, + mc_option_content VARCHAR(255) NOT NULL, + mc_option_correct BOOLEAN NOT NULL, + mc_option_order BIGINT(3) NOT NULL, + mc_option_responses BIGINT(20) NOT NULL, + mc_option_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (mc_option_id), + FOREIGN KEY (question_id) REFERENCES $question_table_name (question_id) + ) $charset_collate;"; + + + $slider_table_name = $this->slider_table_name; + $slider_sql = "CREATE TABLE $slider_table_name ( + slider_id BIGINT(20) NOT NULL AUTO_INCREMENT, + question_id BIGINT(20) NOT NULL, + slider_range_low DECIMAL(20,4) NOT NULL, + slider_range_high DECIMAL(20,4) NOT NULL, + slider_correct_low DECIMAL(20,4) NOT NULL, + slider_correct_high DECIMAL(20,4) NOT NULL, + slider_increment DECIMAL(20,4) NOT NULL, + slider_prefix VARCHAR(70) NOT NULL, + slider_suffix VARCHAR(70) NOT NULL, + slider_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (slider_id), + FOREIGN KEY (question_id) REFERENCES $question_table_name (question_id) + ) $charset_collate;"; + + + $response_quiz_table_name = $this->response_quiz_table_name; + $response_quiz_sql = "CREATE TABLE $response_quiz_table_name ( + response_quiz_id BIGINT(20) NOT NULL AUTO_INCREMENT, + quiz_id BIGINT(20) NOT NULL, + user_ip VARBINARY(16) NOT NULL, + user_id CHAR(36) BINARY NOT NULL, + quiz_viewed BOOLEAN DEFAULT 0, + quiz_started BOOLEAN DEFAULT 0, + quiz_completed BOOLEAN DEFAULT 0, + quiz_restarted BOOLEAN DEFAULT 0, + quiz_score DECIMAL(5,4) NOT NULL DEFAULT 0, + response_quiz_created_at DATETIME NOT NULL, + response_quiz_viewed_at DATETIME NOT NULL, + response_quiz_updated_at DATETIME NOT NULL, + response_quiz_is_ab_test BOOLEAN DEFAULT 0, + response_quiz_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (response_quiz_id), + FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id) + ) $charset_collate;"; + + + $response_question_table_name = $this->response_question_table_name; + $response_question_sql = "CREATE TABLE $response_question_table_name ( + response_question_id BIGINT(20) NOT NULL AUTO_INCREMENT, + response_quiz_id BIGINT(20) NOT NULL, + question_id BIGINT(20) NOT NULL, + question_viewed BOOLEAN DEFAULT 0, + question_responded BOOLEAN DEFAULT 0, + response_correct BOOLEAN NOT NULL, + response_question_created_at DATETIME NOT NULL, + response_question_viewed_at DATETIME NOT NULL, + response_question_updated_at DATETIME NOT NULL, + response_question_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (response_question_id), + FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), + FOREIGN KEY (question_id) REFERENCES $question_table_name (question_id) + ) $charset_collate;"; + + + $response_mc_table_name = $this->response_mc_table_name; + $response_mc_sql = "CREATE TABLE $response_mc_table_name ( + response_mc_id BIGINT(20) NOT NULL AUTO_INCREMENT, + response_quiz_id BIGINT(20) NOT NULL, + response_question_id BIGINT(20) NOT NULL, + mc_option_id BIGINT(20) NOT NULL, + response_mc_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (response_mc_id), + FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), + FOREIGN KEY (response_question_id) REFERENCES $response_question_table_name (response_question_id), + FOREIGN KEY (mc_option_id) REFERENCES $mc_option_table_name (mc_option_id) + ) $charset_collate;"; + + + $response_slider_table_name = $this->response_slider_table_name; + $response_slider_sql = "CREATE TABLE $response_slider_table_name ( + response_slider_id BIGINT(20) NOT NULL AUTO_INCREMENT, + response_quiz_id BIGINT(20) NOT NULL, + response_question_id BIGINT(20) NOT NULL, + slider_id BIGINT(20) NOT NULL, + response_slider DECIMAL(20,4) NOT NULL, + response_slider_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (response_slider_id), + FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), + FOREIGN KEY (response_question_id) REFERENCES $response_question_table_name (response_question_id), + FOREIGN KEY (slider_id) REFERENCES $slider_table_name (slider_id) + ) $charset_collate;"; + + + $ab_test_table_name = $this->ab_test_table_name; + $ab_test_sql = "CREATE TABLE $ab_test_table_name ( + ab_test_id BIGINT(20) NOT NULL AUTO_INCREMENT, + ab_test_title VARCHAR(255) NOT NULL, + quiz_id_a BIGINT(20) NOT NULL, + quiz_id_b BIGINT(20) NOT NULL, + ab_test_owner BIGINT(20) NOT NULL, + ab_test_created_by BIGINT(20) NOT NULL, + ab_test_created_at DATETIME NOT NULL, + ab_test_updated_by BIGINT(20) NOT NULL, + ab_test_updated_at DATETIME NOT NULL, + ab_test_is_deleted BOOLEAN DEFAULT 0, + PRIMARY KEY (ab_test_id), + FOREIGN KEY (quiz_id_a) REFERENCES $quiz_table_name (quiz_id), + FOREIGN KEY (quiz_id_b) REFERENCES $quiz_table_name (quiz_id) + ) $charset_collate;"; + + + $ab_test_response_table_name = $this->ab_test_response_table_name; + $ab_test_response_sql = "CREATE TABLE $ab_test_response_table_name ( + response_ab_test_id BIGINT(20) NOT NULL AUTO_INCREMENT, + response_quiz_id BIGINT(20) NOT NULL, + ab_test_id BIGINT(20) NOT NULL, + PRIMARY KEY (response_ab_test_id), + FOREIGN KEY (response_quiz_id) REFERENCES $response_quiz_table_name (response_quiz_id), + FOREIGN KEY (ab_test_id) REFERENCES $ab_test_table_name (ab_test_id) + ) $charset_collate;"; + + + $embed_site_table_name = $this->embed_site_table_name; + $embed_site_sql = "CREATE TABLE $embed_site_table_name ( + embed_site_id BIGINT(20) NOT NULL AUTO_INCREMENT, + embed_site_name VARCHAR(50) NOT NULL, + embed_site_url VARCHAR(124) NOT NULL, + embed_site_created_at DATETIME NOT NULL, + embed_site_updated_at DATETIME NOT NULL, + embed_site_is_dev BOOLEAN DEFAULT 0, + PRIMARY KEY (embed_site_id), + UNIQUE KEY (embed_site_url) + ) $charset_collate;"; + + + $embed_site_type_table_name = $this->embed_site_type_table_name; + $embed_site_type_sql = "CREATE TABLE $embed_site_type_table_name ( + embed_site_type_id BIGINT(20) NOT NULL AUTO_INCREMENT, + embed_site_type_slug VARCHAR(50) NOT NULL, + embed_site_type_name VARCHAR(50) NOT NULL, + PRIMARY KEY (embed_site_type_id), + UNIQUE KEY (embed_site_type_slug) + ) $charset_collate;"; + + + $embed_site_br_site_type_table_name = $this->embed_site_br_site_type_table_name; + $embed_site_br_site_type_sql = "CREATE TABLE $embed_site_br_site_type_table_name ( + embed_site_br_site_type_id BIGINT(20) NOT NULL AUTO_INCREMENT, + embed_site_id BIGINT(20) NOT NULL, + embed_site_type_id BIGINT(20) NOT NULL, + PRIMARY KEY (embed_site_br_site_type_id), + FOREIGN KEY (embed_site_id) REFERENCES $embed_site_table_name (embed_site_id), + FOREIGN KEY (embed_site_type_id) REFERENCES $embed_site_type_table_name (embed_site_type_id) + ) $charset_collate;"; + + + $embed_quiz_table_name = $this->embed_quiz_table_name; + $embed_quiz_sql = "CREATE TABLE $embed_quiz_table_name ( + embed_quiz_id BIGINT(20) NOT NULL AUTO_INCREMENT, + quiz_id BIGINT(20) NOT NULL, + embed_site_id BIGINT(20) NOT NULL, + embed_quiz_url VARCHAR(510) NOT NULL, + embed_quiz_loads BIGINT(20) NOT NULL DEFAULT '0', + embed_quiz_views BIGINT(20) NOT NULL DEFAULT '0', + embed_quiz_created_at DATETIME NOT NULL, + embed_quiz_updated_at DATETIME NOT NULL, + embed_quiz_is_dev BOOLEAN DEFAULT 0, + PRIMARY KEY (embed_quiz_id), + FOREIGN KEY (quiz_id) REFERENCES $quiz_table_name (quiz_id), + FOREIGN KEY (embed_site_id) REFERENCES $embed_site_table_name (embed_site_id) + ) $charset_collate;"; + + // create a tables array, + // store all the table names and queries + $tables = array( + array( + 'name'=>$this->quiz_table_name, + 'sql'=>$quiz_sql + ), + array( + 'name'=>$this->quiz_option_table_name, + 'sql'=>$quiz_option_sql + ), + array( + 'name'=>$this->question_table_name, + 'sql'=>$question_sql + ), + array( + 'name'=>$this->mc_option_table_name, + 'sql'=>$mc_option_sql + ), + array( + 'name'=>$this->slider_table_name, + 'sql'=>$slider_sql + ), + array( + 'name'=>$this->response_quiz_table_name, + 'sql'=>$response_quiz_sql + ), + array( + 'name'=>$this->response_question_table_name, + 'sql'=>$response_question_sql + ), + array( + 'name'=>$this->response_mc_table_name, + 'sql'=>$response_mc_sql + ), + array( + 'name'=>$this->response_slider_table_name, + 'sql'=>$response_slider_sql + ), + array( + 'name'=>$this->ab_test_table_name, + 'sql'=>$ab_test_sql + ), + array( + 'name'=>$this->ab_test_response_table_name, + 'sql'=>$ab_test_response_sql + ), + array( + 'name'=>$this->embed_site_table_name, + 'sql'=>$embed_site_sql + ), + array( + 'name'=>$this->embed_site_type_table_name, + 'sql'=>$embed_site_type_sql + ), + array( + 'name'=>$this->embed_site_br_site_type_table_name, + 'sql'=>$embed_site_br_site_type_sql + ), + array( + 'name'=>$this->embed_quiz_table_name, + 'sql'=>$embed_quiz_sql + ), + ); + + // require file that allows table creation + require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); + + // loop through all of our tables and + // create them if they haven't already been created + foreach($tables as $table) { + $table_name = $table['name']; + $table_sql = $table['sql']; + // see if the table exists or not + if($wpdb->get_var("show tables like '$table_name'") != $table_name) { + // it doesn't exist, so create the table + dbDelta($table_sql); + } + } + } + + protected function check_database_config_file() { + // see if the file exists + if(file_exists($this->enp_database_config_path)) { + // if the file exists, return true + return true; + } + // if the file doesn't exist, return false + return false; + } + + protected function create_database_config_file() { + // creates and opens the file for writing + $database_config_file = fopen( $this->enp_database_config_path, 'w' ); + + // use single quotes around the DB_PASSWORD in case they have + // a $ in their password + $database_connection = 'quiz_table_name.'"; -$enp_quiz_table_quiz_option = "'.$this->quiz_option_table_name.'"; -$enp_quiz_table_question = "'.$this->question_table_name.'"; -$enp_quiz_table_question_mc_option = "'.$this->mc_option_table_name.'"; -$enp_quiz_table_question_slider = "'.$this->slider_table_name.'"; -$enp_quiz_table_ab_test = "'.$this->ab_test_table_name.'"; -$enp_quiz_table_response_quiz = "'.$this->response_quiz_table_name.'"; -$enp_quiz_table_response_question = "'.$this->response_question_table_name.'"; -$enp_quiz_table_response_mc = "'.$this->response_mc_table_name.'"; -$enp_quiz_table_response_slider = "'.$this->response_slider_table_name.'"; -$enp_quiz_table_ab_test_response = "'.$this->ab_test_response_table_name.'"; -$enp_quiz_table_embed_site = "'.$this->embed_site_table_name.'"; -$enp_quiz_table_embed_site_type = "'.$this->embed_site_type_table_name.'"; -$enp_quiz_table_embed_site_br_site_type = "'.$this->embed_site_br_site_type_table_name.'"; -$enp_quiz_table_embed_quiz = "'.$this->embed_quiz_table_name.'";'; - - // write to the file - fwrite($database_config_file, $database_connection); - // close the file - fclose($database_config_file); - return true; - } - - protected function check_config_file() { - // see if the file exists - if(file_exists($this->enp_config_path)) { - // if the file exists, return true - return true; - } - // if the file doesn't exist, return false - return false; - } - - protected function create_config_file() { - // creates and opens the file for writing - $config_file = fopen($this->enp_config_path, "w"); - // get site url and append our string - $enp_take_url = site_url(); - $enp_create_url = site_url('enp-quiz'); - // default image directory for question image uploads - $image_dir = wp_upload_dir(); - -$config_contents = -'enp_database_config_path.'"); -define("ENP_QUIZ_CREATE_TEMPLATES_PATH", "'.ENP_QUIZ_ROOT.'public/quiz-create/templates/"); -define("ENP_QUIZ_CREATE_MAIN_TEMPLATE_PATH", "'.ENP_QUIZ_ROOT.'public/quiz-create/templates/enp-quiz-page.php"); -define("ENP_QUIZ_TAKE_TEMPLATES_PATH", "'.ENP_QUIZ_ROOT.'public/quiz-take/templates/"); -define("ENP_QUIZ_TAKE_RESOURCES_PATH", "'.ENP_QUIZ_ROOT.'public/quiz-take/"); -define("ENP_QUIZ_DASHBOARD_URL", "'.$enp_create_url.'/dashboard/"); -define("ENP_QUIZ_CREATE_URL", "'.$enp_create_url.'/quiz-create/"); -define("ENP_QUIZ_PREVIEW_URL", "'.$enp_create_url.'/quiz-preview/"); -define("ENP_QUIZ_PUBLISH_URL", "'.$enp_create_url.'/quiz-publish/"); -define("ENP_QUIZ_RESULTS_URL", "'.$enp_create_url.'/quiz-results/"); -define("ENP_AB_TEST_URL", "'.$enp_create_url.'/ab-test/"); -define("ENP_AB_RESULTS_URL", "'.$enp_create_url.'/ab-results/"); -define("ENP_QUIZ_URL", "'.$enp_take_url.'/quiz-embed/"); -define("ENP_TAKE_AB_TEST_URL", "'.$enp_take_url.'/ab-embed/"); -define("ENP_QUIZ_IMAGE_DIR", "'.$image_dir["basedir"].'/enp-quiz/"); -define("ENP_QUIZ_IMAGE_URL", "'.$image_dir["baseurl"].'/enp-quiz/"); -define("ENP_QUIZ_PLUGIN_DIR", "'.ENP_QUIZ_ROOT.'"); -define("ENP_QUIZ_PLUGIN_URL", "'.ENP_QUIZ_ROOT_URL.'/"); +$enp_db_name = "' . DB_NAME . '"; +$enp_db_user = "' . DB_USER . '"; +$enp_db_password = \'' . DB_PASSWORD . '\'; +$enp_db_host = "' . DB_HOST . '"; +$enp_quiz_table_quiz = "' . $this->quiz_table_name . '"; +$enp_quiz_table_quiz_option = "' . $this->quiz_option_table_name . '"; +$enp_quiz_table_question = "' . $this->question_table_name . '"; +$enp_quiz_table_question_mc_option = "' . $this->mc_option_table_name . '"; +$enp_quiz_table_question_slider = "' . $this->slider_table_name . '"; +$enp_quiz_table_ab_test = "' . $this->ab_test_table_name . '"; +$enp_quiz_table_response_quiz = "' . $this->response_quiz_table_name . '"; +$enp_quiz_table_response_question = "' . $this->response_question_table_name . '"; +$enp_quiz_table_response_mc = "' . $this->response_mc_table_name . '"; +$enp_quiz_table_response_slider = "' . $this->response_slider_table_name . '"; +$enp_quiz_table_ab_test_response = "' . $this->ab_test_response_table_name . '"; +$enp_quiz_table_embed_site = "' . $this->embed_site_table_name . '"; +$enp_quiz_table_embed_site_type = "' . $this->embed_site_type_table_name . '"; +$enp_quiz_table_embed_site_br_site_type = "' . $this->embed_site_br_site_type_table_name . '"; +$enp_quiz_table_embed_quiz = "' . $this->embed_quiz_table_name . '";'; + + // write to the file + fwrite( $database_config_file, $database_connection ); + // close the file + fclose( $database_config_file ); + return true; + } + + protected function check_config_file() { + // see if the file exists + if ( file_exists( $this->enp_config_path ) ) { + // if the file exists, return true + return true; + } + // if the file doesn't exist, return false + return false; + } + + protected function create_config_file() { + // creates and opens the file for writing + $config_file = fopen( $this->enp_config_path, 'w' ); + // get site url and append our string + $enp_take_url = site_url(); + $enp_create_url = site_url( 'enp-quiz' ); + // default image directory for question image uploads + $image_dir = wp_upload_dir(); + + $config_contents = + 'enp_database_config_path . '"); +define("ENP_QUIZ_CREATE_TEMPLATES_PATH", "' . ENP_QUIZ_ROOT . 'public/quiz-create/templates/"); +define("ENP_QUIZ_CREATE_MAIN_TEMPLATE_PATH", "' . ENP_QUIZ_ROOT . 'public/quiz-create/templates/enp-quiz-page.php"); +define("ENP_QUIZ_TAKE_TEMPLATES_PATH", "' . ENP_QUIZ_ROOT . 'public/quiz-take/templates/"); +define("ENP_QUIZ_TAKE_RESOURCES_PATH", "' . ENP_QUIZ_ROOT . 'public/quiz-take/"); +define("ENP_QUIZ_DASHBOARD_URL", "' . $enp_create_url . '/dashboard/"); +define("ENP_QUIZ_CREATE_URL", "' . $enp_create_url . '/quiz-create/"); +define("ENP_QUIZ_PREVIEW_URL", "' . $enp_create_url . '/quiz-preview/"); +define("ENP_QUIZ_PUBLISH_URL", "' . $enp_create_url . '/quiz-publish/"); +define("ENP_QUIZ_RESULTS_URL", "' . $enp_create_url . '/quiz-results/"); +define("ENP_AB_TEST_URL", "' . $enp_create_url . '/ab-test/"); +define("ENP_AB_RESULTS_URL", "' . $enp_create_url . '/ab-results/"); +define("ENP_QUIZ_URL", "' . $enp_take_url . '/quiz-embed/"); +define("ENP_TAKE_AB_TEST_URL", "' . $enp_take_url . '/ab-embed/"); +define("ENP_QUIZ_IMAGE_DIR", "' . $image_dir['basedir'] . '/enp-quiz/"); +define("ENP_QUIZ_IMAGE_URL", "' . $image_dir['baseurl'] . '/enp-quiz/"); +define("ENP_QUIZ_PLUGIN_DIR", "' . ENP_QUIZ_ROOT . '"); +define("ENP_QUIZ_PLUGIN_URL", "' . ENP_QUIZ_ROOT_URL . '/"); ?>'; - // write to the file - fwrite($config_file, $config_contents); - // close the file - fclose($config_file); - return true; - } + // write to the file + fwrite( $config_file, $config_contents ); + // close the file + fclose( $config_file ); + return true; + } } diff --git a/includes/class-enp_quiz-deactivator.php b/includes/class-enp_quiz-deactivator.php index fed078e6..18c24f0a 100755 --- a/includes/class-enp_quiz-deactivator.php +++ b/includes/class-enp_quiz-deactivator.php @@ -12,13 +12,13 @@ */ class Enp_quiz_Deactivator { - /** - * What to do when our plugin is deactivated - * @since 0.0.1 - */ - public function __construct() { - // Remove the rewrite rules we added with a hard flush on rewrite rules so it regenerates the htaccess file - flush_rewrite_rules(); - } + /** + * What to do when our plugin is deactivated + * @since 0.0.1 + */ + public function __construct() { + // Remove the rewrite rules we added with a hard flush on rewrite rules so it regenerates the htaccess file + flush_rewrite_rules(); + } } diff --git a/includes/class-enp_quiz-question.php b/includes/class-enp_quiz-question.php index 361365e0..bd050ad8 100644 --- a/includes/class-enp_quiz-question.php +++ b/includes/class-enp_quiz-question.php @@ -1,11 +1,12 @@ 'user_order'||'random' if you want the mc_options order to be randomized or not; - */ - public function __construct($question_id, $options = array()) { + * Build the question object + * + * @param $options = array() for passing various options on how to set the question objet + * 'mc_options_order'=> 'user_order'||'random' if you want the mc_options order to be randomized or not; + */ + public function __construct( $question_id, $options = array() ) { $default_options = array( - 'mc_options_order' => 'user_order', - ); + 'mc_options_order' => 'user_order', + ); // merge default options with passed options - self::$options = array_merge($default_options, $options); + self::$options = array_merge( $default_options, $options ); // returns false if no question found - $this->get_question_by_id($question_id); + $this->get_question_by_id( $question_id ); } /** - * Build question object by id - * - * @param $question_id = question_id that you want to select - * @return question object, false if not found - **/ - public function get_question_by_id($question_id) { - self::$question = $this->select_question_by_id($question_id); - if(self::$question !== false) { + * Build question object by id + * + * @param $question_id = question_id that you want to select + * @return question object, false if not found + **/ + public function get_question_by_id( $question_id ) { + self::$question = $this->select_question_by_id( $question_id ); + if ( self::$question !== false ) { self::$question = $this->set_question_object_values(); } return self::$question; } /** - * For using PDO to select one question row - * - * @param $question_id = question_id that you want to select - * @return row from database table if found, false if not found - **/ - public function select_question_by_id($question_id) { + * For using PDO to select one question row + * + * @param $question_id = question_id that you want to select + * @return row from database table if found, false if not found + **/ + public function select_question_by_id( $question_id ) { $pdo = new enp_quiz_Db(); // Do a select query to see if we get a returned row - $params = array( - ":question_id" => $question_id + $params = array( + ':question_id' => $question_id, ); - $sql = "SELECT * from ".$pdo->question_table." WHERE + $sql = 'SELECT * from ' . $pdo->question_table . ' WHERE question_id = :question_id - AND question_is_deleted = 0"; - $stmt = $pdo->runQuery($sql, $params); + AND question_is_deleted = 0'; + $stmt = $pdo->query( $sql, $params ); $question_row = $stmt->fetch(); // return the found question row return $question_row; } /** - * Hook up all the values for the object - * @param $question = row from the question_table - */ + * Hook up all the values for the object + * + * @param $question = row from the question_table + */ protected function set_question_object_values() { - $this->question_id = $this->set_question_id(); - $this->quiz_id = $this->set_quiz_id(); - $this->question_title = $this->set_question_title(); - $this->question_image = $this->set_question_image(); - $this->question_image_src = $this->set_question_image_src(); + $this->question_id = $this->set_question_id(); + $this->quiz_id = $this->set_quiz_id(); + $this->question_title = $this->set_question_title(); + $this->question_image = $this->set_question_image(); + $this->question_image_src = $this->set_question_image_src(); $this->question_image_srcset = $this->set_question_image_srcset(); - $this->question_image_alt = $this->set_question_image_alt(); - $this->question_type = $this->set_question_type(); - $this->question_explanation = $this->set_question_explanation(); - $this->question_order = $this->set_question_order(); + $this->question_image_alt = $this->set_question_image_alt(); + $this->question_type = $this->set_question_type(); + $this->question_explanation = $this->set_question_explanation(); + $this->question_order = $this->set_question_order(); // response/view data - $this->question_views = $this->set_question_views(); - $this->question_responses = $this->set_question_responses(); - $this->question_responses_correct = $this->set_question_responses_correct(); - $this->question_responses_incorrect = $this->set_question_responses_incorrect(); - $this->question_responses_correct_percentage = $this->set_question_responses_correct_percentage(); + $this->question_views = $this->set_question_views(); + $this->question_responses = $this->set_question_responses(); + $this->question_responses_correct = $this->set_question_responses_correct(); + $this->question_responses_incorrect = $this->set_question_responses_incorrect(); + $this->question_responses_correct_percentage = $this->set_question_responses_correct_percentage(); $this->question_responses_incorrect_percentage = $this->set_question_responses_incorrect_percentage(); - $this->question_score_average = $this->set_question_score_average(); - $this->question_time_spent = $this->set_question_time_spent(); - $this->question_time_spent_average = $this->set_question_time_spent_average(); + $this->question_score_average = $this->set_question_score_average(); + $this->question_time_spent = $this->set_question_time_spent(); + $this->question_time_spent_average = $this->set_question_time_spent_average(); $this->question_is_deleted = $this->set_question_is_deleted(); // we need to know both mc option ids and slider ids // when creating a quiz. We could limit this by adding a "published" // check on the question or quiz $this->mc_options = $this->set_mc_options(); - $this->slider = $this->set_slider(); + $this->slider = $this->set_slider(); } /** - * Set the question_id for our Question Object - * @param $question = question row from question database table - * @return question_id field from the database - */ + * Set the question_id for our Question Object + * + * @param $question = question row from question database table + * @return question_id field from the database + */ protected function set_question_id() { $question_id = self::$question['question_id']; return $question_id; } /** - * Set the quiz_id for our Question Object - * @param $question = question row from question database table - * @return quiz_id field from the database - */ + * Set the quiz_id for our Question Object + * + * @param $question = question row from question database table + * @return quiz_id field from the database + */ protected function set_quiz_id() { $quiz_id = self::$question['quiz_id']; return $quiz_id; } /** - * Set the question_title for our Quiz Object - * @param $question = question row from question database table - * @return question_title field from the database - */ + * Set the question_title for our Quiz Object + * + * @param $question = question row from question database table + * @return question_title field from the database + */ protected function set_question_title() { - $question_title = stripslashes(self::$question['question_title']); + $question_title = stripslashes( self::$question['question_title'] ); return $question_title; } /** - * Set the question_image path for our Quiz Object - * @param $question = question row from question database table - * @return question_image path from the database - */ + * Set the question_image path for our Quiz Object + * + * @param $question = question row from question database table + * @return question_image path from the database + */ protected function set_question_image() { $question_image = self::$question['question_image']; @@ -155,508 +162,548 @@ protected function set_question_image() { } /** - * Set the question_image for our Quiz Object - * We want to set the url, but the question_image just sets the filename - * we need to build it based on our ENP_QUIZ_IMAGE_URL, quiz_id and question_id - * @param $question = question object - * @return question_image from the object - */ + * Set the question_image for our Quiz Object + * We want to set the url, but the question_image just sets the filename + * we need to build it based on our ENP_QUIZ_IMAGE_URL, quiz_id and question_id + * + * @param $question = question object + * @return question_image from the object + */ public function set_question_image_src() { $question_image_src = ''; - $question_image = $this->question_image; - if(!empty($question_image)) { - $question_image_src = ENP_QUIZ_IMAGE_URL.$this->quiz_id.'/'.$this->question_id.'/'.$question_image; + $question_image = $this->question_image; + if ( ! empty( $question_image ) ) { + $question_image_src = ENP_QUIZ_IMAGE_URL . $this->quiz_id . '/' . $this->question_id . '/' . $question_image; } return $question_image_src; } /** - * Set the question_image for our Quiz Object - * @param $question = question object - * @return question_image from the object - */ + * Set the question_image for our Quiz Object + * + * @param $question = question object + * @return question_image from the object + */ public function set_question_image_srcset() { - if(empty($this->question_image)) { + if ( empty( $this->question_image ) ) { return ''; } // -original is our stored filename so we can explode by that // and generate our new filenames - $filename = explode('-original', $this->question_image); - $name = $filename[0]; - $ext = $filename[1]; - $sizes = array(1000,740,580,320,200); - $srcset = ''; - foreach($sizes as $size) { - $srcset .= ENP_QUIZ_IMAGE_URL.$this->quiz_id.'/'.$this->question_id.'/'.$name.$size.'w'.$ext.' '.($size+10).'w,'; + $filename = explode( '-original', $this->question_image ); + $name = $filename[0]; + $ext = $filename[1]; + $sizes = array( 1000, 740, 580, 320, 200 ); + $srcset = ''; + foreach ( $sizes as $size ) { + $srcset .= ENP_QUIZ_IMAGE_URL . $this->quiz_id . '/' . $this->question_id . '/' . $name . $size . 'w' . $ext . ' ' . ( $size + 10 ) . 'w,'; } // remove the trailing comma - $srcset = rtrim($srcset, ","); + $srcset = rtrim( $srcset, ',' ); return $srcset; } /** - * Set the question_image_alt for our Quiz Object - * @param $question = question row from question database table - * @return question_image_alt field from the database - */ + * Set the question_image_alt for our Quiz Object + * + * @param $question = question row from question database table + * @return question_image_alt field from the database + */ protected function set_question_image_alt() { - $question_image_alt = stripslashes(self::$question['question_image_alt']); + $question_image_alt = stripslashes( self::$question['question_image_alt'] ); return $question_image_alt; } /** - * Set the question_type for our Quiz Object - * @param $question = question row from question database table - * @return question_type field from the database - */ + * Set the question_type for our Quiz Object + * + * @param $question = question row from question database table + * @return question_type field from the database + */ protected function set_question_type() { - $question_type = stripslashes(self::$question['question_type']); + $question_type = stripslashes( self::$question['question_type'] ); return $question_type; } /** - * Set the question_explanation for our Quiz Object - * @param $question = question row from question database table - * @return question_explanation field from the database - */ + * Set the question_explanation for our Quiz Object + * + * @param $question = question row from question database table + * @return question_explanation field from the database + */ protected function set_question_explanation() { - $question_explanation = stripslashes(self::$question['question_explanation']); + $question_explanation = stripslashes( self::$question['question_explanation'] ); return $question_explanation; } /** - * Set the question_order for our Quiz Object - * @param $question = question row from question database table - * @return question_order field from the database - */ + * Set the question_order for our Quiz Object + * + * @param $question = question row from question database table + * @return question_order field from the database + */ protected function set_question_order() { $question_order = self::$question['question_order']; return $question_order; } /** - * Set the question_is_deleted for our Quiz Object - * @param $question = question row from question database table - * @return question_is_deleted field from the database - */ + * Set the question_is_deleted for our Quiz Object + * + * @param $question = question row from question database table + * @return question_is_deleted field from the database + */ protected function set_question_is_deleted() { $question_is_deleted = self::$question['question_is_deleted']; return $question_is_deleted; } /** - * Set the mc_options for our Questions Object - * @param $quiz_id - * @return mc_options array of ids array(3,4,5) from the database - */ + * Set the mc_options for our Questions Object + * + * @param $quiz_id + * @return mc_options array of ids array(3,4,5) from the database + */ protected function set_mc_options() { $question_id = self::$question['question_id']; $pdo = new enp_quiz_Db(); // Do a select query to see if we get a returned row - $params = array( - ":question_id" => $question_id + $params = array( + ':question_id' => $question_id, ); - $sql = "SELECT mc_option_id from ".$pdo->question_mc_option_table." WHERE + $sql = 'SELECT mc_option_id from ' . $pdo->question_mc_option_table . ' WHERE question_id = :question_id AND mc_option_is_deleted = 0 - ORDER BY mc_option_order ASC"; - $stmt = $pdo->runQuery($sql, $params); - $mc_option_rows = $stmt->fetchAll(PDO::FETCH_ASSOC); + ORDER BY mc_option_order ASC'; + $stmt = $pdo->query( $sql, $params ); + $mc_option_rows = $stmt->fetchAll( PDO::FETCH_ASSOC ); $mc_options = array(); - foreach($mc_option_rows as $row => $mc_option) { + foreach ( $mc_option_rows as $row => $mc_option ) { $mc_options[] = (int) $mc_option['mc_option_id']; } // see if we should randomize the order of the options - if(self::$options['mc_options_order'] === 'random') { + if ( self::$options['mc_options_order'] === 'random' ) { // we could use RAND() in the query, but people warn against using RAND() for performance issues. - shuffle($mc_options); + shuffle( $mc_options ); } return $mc_options; } /** - * Set the slider for our Question Object - * @param $quiz_id - * @return slider id from the database - */ + * Set the slider for our Question Object + * + * @param $quiz_id + * @return slider id from the database + */ protected function set_slider() { $question_id = self::$question['question_id']; $pdo = new enp_quiz_Db(); // Do a select query to see if we get a returned row - $params = array( - ":question_id" => $question_id + $params = array( + ':question_id' => $question_id, ); - $sql = "SELECT slider_id from ".$pdo->question_slider_table." WHERE + $sql = 'SELECT slider_id from ' . $pdo->question_slider_table . ' WHERE question_id = :question_id - AND slider_is_deleted = 0"; - $stmt = $pdo->runQuery($sql, $params); + AND slider_is_deleted = 0'; + $stmt = $pdo->query( $sql, $params ); $slider_id = $stmt->fetch(); return $slider_id['slider_id']; } /** - * Set the question_views for our Quiz Object - * @param $question = question row from question database table - * @return question_views field from the database - */ + * Set the question_views for our Quiz Object + * + * @param $question = question row from question database table + * @return question_views field from the database + */ protected function set_question_views() { $question_views = self::$question['question_views']; return $question_views; } /** - * Set the question_responses for our Quiz Object - * @param $question = question row from question database table - * @return question_responses field from the database - */ + * Set the question_responses for our Quiz Object + * + * @param $question = question row from question database table + * @return question_responses field from the database + */ protected function set_question_responses() { $question_responses = self::$question['question_responses']; return $question_responses; } /** - * Set the question_responses_correct for our Quiz Object - * @param $question = question row from question database table - * @return question_responses_correct field from the database - */ + * Set the question_responses_correct for our Quiz Object + * + * @param $question = question row from question database table + * @return question_responses_correct field from the database + */ protected function set_question_responses_correct() { $question_responses_correct = self::$question['question_responses_correct']; return $question_responses_correct; } /** - * Set the question_responses_incorrect for our Quiz Object - * @param $question = question row from question database table - * @return question_responses_incorrect field from the database - */ + * Set the question_responses_incorrect for our Quiz Object + * + * @param $question = question row from question database table + * @return question_responses_incorrect field from the database + */ protected function set_question_responses_incorrect() { $question_responses_incorrect = self::$question['question_responses_incorrect']; return $question_responses_incorrect; } /** - * Set the question_responses_correct_percentage for our Quiz Object - * @param $question = question row from question database table - * @return question_responses_correct_percentage field from the database - */ + * Set the question_responses_correct_percentage for our Quiz Object + * + * @param $question = question row from question database table + * @return question_responses_correct_percentage field from the database + */ protected function set_question_responses_correct_percentage() { $question_responses_correct_percentage = self::$question['question_responses_correct_percentage']; return $question_responses_correct_percentage; } /** - * Set the question_responses_incorrect_percentage for our Quiz Object - * @param $question = question row from question database table - * @return question_responses_incorrect_percentage field from the database - */ + * Set the question_responses_incorrect_percentage for our Quiz Object + * + * @param $question = question row from question database table + * @return question_responses_incorrect_percentage field from the database + */ protected function set_question_responses_incorrect_percentage() { $question_responses_incorrect_percentage = self::$question['question_responses_incorrect_percentage']; return $question_responses_incorrect_percentage; } /** - * Set the question_score_average for our Quiz Object - * @param $question = question row from question database table - * @return question_score_average field from the database - */ + * Set the question_score_average for our Quiz Object + * + * @param $question = question row from question database table + * @return question_score_average field from the database + */ protected function set_question_score_average() { $question_score_average = self::$question['question_score_average']; return $question_score_average; } /** - * Set the question_time_spent for our Quiz Object - * @param $question = question row from question database table - * @return question_time_spent field from the database - */ + * Set the question_time_spent for our Quiz Object + * + * @param $question = question row from question database table + * @return question_time_spent field from the database + */ protected function set_question_time_spent() { $question_time_spent = self::$question['question_time_spent']; return $question_time_spent; } /** - * Set the question_time_spent_average for our Quiz Object - * @param $question = question row from question database table - * @return question_time_spent_average field from the database - */ + * Set the question_time_spent_average for our Quiz Object + * + * @param $question = question row from question database table + * @return question_time_spent_average field from the database + */ protected function set_question_time_spent_average() { $question_time_spent_average = self::$question['question_time_spent_average']; return $question_time_spent_average; } /** - * Get the question_id for our Quiz Object - * @param $question = question object - * @return question_id from the object - */ + * Get the question_id for our Quiz Object + * + * @param $question = question object + * @return question_id from the object + */ public function get_question_id() { $question_id = $this->question_id; return $question_id; } /** - * Get the quiz_id for our Quiz Object - * @param $question = question object - * @return quiz_id from the object - */ + * Get the quiz_id for our Quiz Object + * + * @param $question = question object + * @return quiz_id from the object + */ public function get_quiz_id() { $quiz_id = $this->quiz_id; return $quiz_id; } /** - * Get the question_title for our Quiz Object - * @param $question = question object - * @return question_title from the object - */ + * Get the question_title for our Quiz Object + * + * @param $question = question object + * @return question_title from the object + */ public function get_question_title() { $question_title = $this->question_title; return $question_title; } /** - * Get the question_image for our Quiz Object - * @param $question = question object - * @return question_image from the object - */ + * Get the question_image for our Quiz Object + * + * @param $question = question object + * @return question_image from the object + */ public function get_question_image() { $question_image = $this->question_image; return $question_image; } /** - * Get the question_image_src for our Quiz Object - * @param $question = question object - * @return question_image_src from the object - */ + * Get the question_image_src for our Quiz Object + * + * @param $question = question object + * @return question_image_src from the object + */ public function get_question_image_src() { $question_image_src = $this->question_image_src; return $question_image_src; } /** - * Get the question_image_srcset for our Quiz Object - * @param $question = question object - * @return question_image_srcset from the object - */ + * Get the question_image_srcset for our Quiz Object + * + * @param $question = question object + * @return question_image_srcset from the object + */ public function get_question_image_srcset() { $question_image_srcset = $this->question_image_srcset; return $question_image_srcset; } public function get_question_image_thumbnail() { - if(empty($this->question_image)) { + if ( empty( $this->question_image ) ) { return ''; } - $filename = explode('-original', $this->question_image); - $name = $filename[0]; - $ext = $filename[1]; - $thumbnail = $name.'-w200'.$ext; + $filename = explode( '-original', $this->question_image ); + $name = $filename[0]; + $ext = $filename[1]; + $thumbnail = $name . '-w200' . $ext; return $thumbnail; } /** - * Get the question_image_alt for our Quiz Object - * @param $question = question object - * @return question_image_alt from the object - */ + * Get the question_image_alt for our Quiz Object + * + * @param $question = question object + * @return question_image_alt from the object + */ public function get_question_image_alt() { $question_image_alt = $this->question_image_alt; return $question_image_alt; } /** - * Get the question_type for our Quiz Object - * @param $question = question object - * @return question_type from the object - */ + * Get the question_type for our Quiz Object + * + * @param $question = question object + * @return question_type from the object + */ public function get_question_type() { $question_type = $this->question_type; return $question_type; } /** - * Get the question_explanation for our Quiz Object - * @param $question = question object - * @return question_explanation from the object - */ + * Get the question_explanation for our Quiz Object + * + * @param $question = question object + * @return question_explanation from the object + */ public function get_question_explanation() { $question_explanation = $this->question_explanation; return $question_explanation; } /** - * Get the question_order for our Quiz Object - * @param $question = question object - * @return question_order from the object - */ + * Get the question_order for our Quiz Object + * + * @param $question = question object + * @return question_order from the object + */ public function get_question_order() { $question_order = $this->question_order; return $question_order; } /** - * Get the question_is_deleted for our Quiz Object - * @param $question = question object - * @return question_is_deleted from the object - */ + * Get the question_is_deleted for our Quiz Object + * + * @param $question = question object + * @return question_is_deleted from the object + */ public function get_question_is_deleted() { $question_is_deleted = $this->question_is_deleted; return $question_is_deleted; } /** - * Get the mc_options for our Question Object - * @param $question = question object - * @return array of mc_option_id's as integers - */ + * Get the mc_options for our Question Object + * + * @param $question = question object + * @return array of mc_option_id's as integers + */ public function get_mc_options() { $mc_options = $this->mc_options; return $mc_options; } /** - * Get the slider_id for our Question Object - * @param $question = question object - * @return slider_id - */ + * Get the slider_id for our Question Object + * + * @param $question = question object + * @return slider_id + */ public function get_slider() { $slider = $this->slider; return $slider; } /** - * Get the question_views for our Question Object - * @param $question = question object - * @return int question_views - */ + * Get the question_views for our Question Object + * + * @param $question = question object + * @return int question_views + */ public function get_question_views() { $question_views = $this->question_views; return $question_views; } /** - * Get the question_responses for our Question Object - * @param $question = question object - * @return int question_responses - */ + * Get the question_responses for our Question Object + * + * @param $question = question object + * @return int question_responses + */ public function get_question_responses() { $question_responses = $this->question_responses; return $question_responses; } /** - * Get the question_responses_correct for our Question Object - * @param $question = question object - * @return int question_responses_correct - */ + * Get the question_responses_correct for our Question Object + * + * @param $question = question object + * @return int question_responses_correct + */ public function get_question_responses_correct() { $question_responses_correct = $this->question_responses_correct; return $question_responses_correct; } /** - * Get the question_incorrect for our Question Object - * @param $question = question object - * @return int question_responses_incorrect - */ + * Get the question_incorrect for our Question Object + * + * @param $question = question object + * @return int question_responses_incorrect + */ public function get_question_incorrect() { $question_incorrect = $this->question_incorrect; return $question_incorrect; } /** - * Get the question_responses_correct_percentage for our Question Object - * and format it as a percentage (43%); - * @param $question = question object - * @return string '44%'; - */ + * Get the question_responses_correct_percentage for our Question Object + * and format it as a percentage (43%); + * + * @param $question = question object + * @return string '44%'; + */ public function get_question_responses_correct_percentage() { - $question_responses_correct_percentage = round($this->question_responses_correct_percentage * 100 ); + $question_responses_correct_percentage = round( $this->question_responses_correct_percentage * 100 ); return $question_responses_correct_percentage; } /** - * Get the question_responses_incorrect_percentage for our Question Object - * and format it as a percentage (43%); - * @param $question = question object - * @return string '44%'; - */ + * Get the question_responses_incorrect_percentage for our Question Object + * and format it as a percentage (43%); + * + * @param $question = question object + * @return string '44%'; + */ public function get_question_responses_incorrect_percentage() { - $question_responses_incorrect_percentage = round($this->question_responses_incorrect_percentage * 100 ); + $question_responses_incorrect_percentage = round( $this->question_responses_incorrect_percentage * 100 ); return $question_responses_incorrect_percentage; } /** - * Get the question_score_average for our Question Object - * @param $question = question object - * @return array of mc_option_id's as integers - */ + * Get the question_score_average for our Question Object + * + * @param $question = question object + * @return array of mc_option_id's as integers + */ public function get_question_score_average() { $question_score_average = $this->question_score_average; return $question_score_average; } /** - * Get the question_time_spent for our Question Object - * @param $question = question object - * @return array of mc_option_id's as integers - */ + * Get the question_time_spent for our Question Object + * + * @param $question = question object + * @return array of mc_option_id's as integers + */ public function get_question_time_spent() { $question_time_spent = $this->question_time_spent; return $question_time_spent; } /** - * Get the question_views for our Question Object - * @param $question = question object - * @return array of mc_option_id's as integers - */ + * Get the question_views for our Question Object + * + * @param $question = question object + * @return array of mc_option_id's as integers + */ public function get_question_time_spent_average() { $question_time_spent_average = $this->question_time_spent_average; return $question_time_spent_average; } /** - * Get the built question with all MC Option / Slider data for taking quizzes - * - * @param $question = question object - * @return array with full question data for taking quizzes or converting to JSON - */ + * Get the built question with all MC Option / Slider data for taking quizzes + * + * @param $question = question object + * @return array with full question data for taking quizzes or converting to JSON + */ public function get_take_question_array() { // cast object to array $question_array = (array) $this; // remove what we don't need - unset($question_array['quiz_id']); - unset($question_array['mc_options']); + unset( $question_array['quiz_id'] ); + unset( $question_array['mc_options'] ); // get question type $question_type = $this->get_question_type(); // get question images info - $question_array['question_image_src'] = $this->get_question_image_src(); + $question_array['question_image_src'] = $this->get_question_image_src(); $question_array['question_image_srcset'] = $this->get_question_image_srcset(); // if mc, get mc options - if($question_type === 'mc') { + if ( $question_type === 'mc' ) { // get the mc options $mc_option_ids = $this->get_mc_options(); // create a mc_options_array $question_array['mc_option'] = array(); // create the MC Options - foreach($mc_option_ids as $mc_option_id) { + foreach ( $mc_option_ids as $mc_option_id ) { // build mc option object - $mc_option = new Enp_quiz_MC_option($mc_option_id); + $mc_option = new Enp_quiz_MC_option( $mc_option_id ); // cast object to array in question_array - $mc_option_array = $mc_option->get_take_mc_option_array(); + $mc_option_array = $mc_option->get_take_mc_option_array(); $question_array['mc_option'][] = $mc_option_array; } - } elseif($question_type === 'slider') { - $slider_id = $this->get_slider(); - $slider = new Enp_quiz_Slider($slider_id); + } elseif ( $question_type === 'slider' ) { + $slider_id = $this->get_slider(); + $slider = new Enp_quiz_Slider( $slider_id ); $question_array['slider'] = (array) $slider; } return $question_array; @@ -664,7 +711,7 @@ public function get_take_question_array() { public function get_take_question_json() { $question = $this->get_take_question_array(); - return json_encode($question); + return json_encode( $question ); } /** @@ -672,11 +719,13 @@ public function get_take_question_json() { * get posted if present, if not, get object. This is so we give them their * current entry if we didn't *actually* save yet * (like if there was an error on save they won't lose all their work). + * * @param $string = what you want to get ('question_title', 'question_explanation', whatever) * @param $quetion_id = which question you're trying to get a value from * @return $value */ - /* I don't think we need this anymore. Questions always have an ID now + /* + I don't think we need this anymore. Questions always have an ID now public function get_value($key, $question_id) { $value = ''; if(isset($_POST['enp_question'])) { @@ -704,4 +753,4 @@ public function get_value($key, $question_id) { } */ } -?> + diff --git a/includes/class-enp_quiz-quiz.php b/includes/class-enp_quiz-quiz.php index 1e8bc259..9fc238d3 100644 --- a/includes/class-enp_quiz-quiz.php +++ b/includes/class-enp_quiz-quiz.php @@ -1,28 +1,30 @@ select_quiz_by_id($quiz_id); if(self::$quiz !== false) { @@ -46,11 +48,11 @@ public function get_quiz_by_id($quiz_id) { } /** - * For using PDO to select one quiz row - * - * @param $quiz_id = quiz_id that you want to select - * @return row from database table if found, false if not found - **/ + * For using PDO to select one quiz row + * + * @param $quiz_id = quiz_id that you want to select + * @return row from database table if found, false if not found + **/ public function select_quiz_by_id($quiz_id) { $pdo = new enp_quiz_Db(); // Do a select query to see if we get a returned row @@ -67,12 +69,14 @@ public function select_quiz_by_id($quiz_id) { } /** - * Hook up all the values for the object - * @param $quiz = row from the quiz_table - */ + * Hook up all the values for the object + * @param $quiz = row from the quiz_table + * $this->quiz_title_test = $this->set_quiz_title_test(); + */ protected function set_quiz_object_values() { $this->quiz_id = $this->set_quiz_id(); $this->quiz_title = $this->set_quiz_title(); + $this->quiz_feedback = $this->set_quiz_feedback(); $this->quiz_status = $this->set_quiz_status(); $this->quiz_finish_message = $this->set_quiz_finish_message(); $this->quiz_owner = $this->set_quiz_owner(); @@ -94,9 +98,9 @@ protected function set_quiz_object_values() { } /** - * Queries the quiz options table and sets more quiz object values - * @param $quiz_id - */ + * Queries the quiz options table and sets more quiz object values + * @param $quiz_id + */ protected function set_quiz_options() { $option_rows = $this->select_quiz_options(); foreach($option_rows as $row => $option) { @@ -113,11 +117,11 @@ protected function set_quiz_options() { } /** - * For using PDO to select one quiz row - * - * @param $quiz_id = quiz_id that you want to select - * @return row from database table if found, false if not found - **/ + * For using PDO to select one quiz row + * + * @param $quiz_id = quiz_id that you want to select + * @return row from database table if found, false if not found + **/ protected function select_quiz_options() { $quiz_id = $this->quiz_id; @@ -134,113 +138,134 @@ protected function select_quiz_options() { } /** - * Set the quiz_id for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return quiz_id field from the database - */ + * Set the quiz_id for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return quiz_id field from the database + */ protected function set_quiz_id() { $quiz_id = self::$quiz['quiz_id']; return $quiz_id; } /** - * Set the quiz_title for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return quiz_title field from the database - */ + * Set the quiz_title for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return quiz_title field from the database + */ protected function set_quiz_title() { $quiz_title = stripslashes(self::$quiz['quiz_title']); return $quiz_title; } /** - * Set the quiz_status for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return 'published' or 'draft' - */ + * Set the quiz_title_test for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return quiz_title_test field from the database + */ + // protected function set_quiz_title_test() + // { + // $quiz_title_test = stripslashes(self::$quiz['quiz_title_test']); + // return $quiz_title_test; + // } + + /** + * Set the quiz_feedback for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return quiz_feedback field from the database + */ + protected function set_quiz_feedback() { + $quiz_feedback = stripslashes(self::$quiz['quiz_feedback']); + return $quiz_feedback; + } + + /** + * Set the quiz_status for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return 'published' or 'draft' + */ protected function set_quiz_status() { $quiz_status = self::$quiz['quiz_status']; - if($quiz_status !== 'published') { + if ($quiz_status !== 'published') { $quiz_status = 'draft'; } return $quiz_status; } /** - * Set the quiz_finish_message for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return quiz_finish_message field from the database - */ + * Set the quiz_finish_message for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return quiz_finish_message field from the database + */ protected function set_quiz_finish_message() { $quiz_finish_message = stripslashes(self::$quiz['quiz_finish_message']); return $quiz_finish_message; } /** - * Set the quiz_owner for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return quiz_owner field from the database - */ + * Set the quiz_owner for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return quiz_owner field from the database + */ protected function set_quiz_owner() { $quiz_owner = self::$quiz['quiz_owner']; return $quiz_owner; } /** - * Set the created_by for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return created_by field from the database - */ + * Set the created_by for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return created_by field from the database + */ protected function set_quiz_created_by() { $created_by = self::$quiz['quiz_created_by']; return $created_by; } /** - * Set the created_at for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return created_at field from the database - */ + * Set the created_at for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return created_at field from the database + */ protected function set_quiz_created_at() { $created_at = self::$quiz['quiz_created_at']; return $created_at; } /** - * Set the updated_by for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return updated_by field from the database - */ + * Set the updated_by for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return updated_by field from the database + */ protected function set_quiz_updated_by() { $updated_by = self::$quiz['quiz_updated_by']; return $updated_by; } /** - * Set the updated_at for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return updated_at field from the database - */ + * Set the updated_at for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return updated_at field from the database + */ protected function set_quiz_updated_at() { $updated_at = self::$quiz['quiz_updated_at']; return $updated_at; } /** - * Set the is_deleted for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return is_deleted field from the database - */ + * Set the is_deleted for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return is_deleted field from the database + */ protected function set_quiz_is_deleted() { $is_deleted = self::$quiz['quiz_is_deleted']; return $is_deleted; } /** - * Set the questions for our Quiz Object - * @param $quiz_id - * @return questions array of ids array(3,4,5) from the database - */ + * Set the questions for our Quiz Object + * @param $quiz_id + * @return questions array of ids array(3,4,5) from the database + */ protected function set_questions() { $quiz_id = self::$quiz['quiz_id']; @@ -264,170 +289,191 @@ protected function set_questions() { } /** - * Set the views for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return views field from the database - */ + * Set the views for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return views field from the database + */ protected function set_quiz_views() { $views = self::$quiz['quiz_views']; return $views; } /** - * Set the starts for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return starts field from the database - */ + * Set the starts for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return starts field from the database + */ protected function set_quiz_starts() { $starts = self::$quiz['quiz_starts']; return $starts; } /** - * Set the finishes for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return finishes field from the database - */ + * Set the finishes for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return finishes field from the database + */ protected function set_quiz_finishes() { $finishes = self::$quiz['quiz_finishes']; return $finishes; } /** - * Set the score_average for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return score_average field from the database - */ + * Set the score_average for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return score_average field from the database + */ protected function set_quiz_score_average() { $score_average = self::$quiz['quiz_score_average']; return $score_average; } /** - * Set the time_spent for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return time_spent field from the database - */ + * Set the time_spent for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return time_spent field from the database + */ protected function set_quiz_time_spent() { $time_spent = self::$quiz['quiz_time_spent']; return $time_spent; } /** - * Set the time_spent_average for our Quiz Object - * @param $quiz = quiz row from quiz database table - * @return time_spent_average field from the database - */ + * Set the time_spent_average for our Quiz Object + * @param $quiz = quiz row from quiz database table + * @return time_spent_average field from the database + */ protected function set_quiz_time_spent_average() { $time_spent_average = self::$quiz['quiz_time_spent_average']; return $time_spent_average; } /** - * Get the quiz_id for our Quiz Object - * @param $quiz = quiz object - * @return quiz_id from the object - */ + * Get the quiz_id for our Quiz Object + * @param $quiz = quiz object + * @return quiz_id from the object + */ public function get_quiz_id() { $quiz_id = $this->quiz_id; return $quiz_id; } /** - * Get the quiz_title for our Quiz Object - * @param $quiz = quiz object - * @return quiz_title from the object - */ + * Get the quiz_title for our Quiz Object + * @param $quiz = quiz object + * @return quiz_title from the object + */ public function get_quiz_title() { $quiz_title = $this->quiz_title; return $quiz_title; } /** - * Get the quiz_status for our Quiz Object - * @param $quiz = quiz object - * @return 'published' or 'draft' - */ + * Get the quiz_title_test for our Quiz Object + * @param $quiz = quiz object + * @return quiz_title_test from the object + */ + // public function get_quiz_title_test() + // { + // $quiz_title_test = $this->quiz_title_test; + // return $quiz_title_test; + // } + + /** + * Get the quiz_feedback for our Quiz Object + * @param $quiz = quiz object + * @return quiz_feedback from the object + */ + public function get_quiz_feedback() { + $quiz_feedback = $this->quiz_feedback; + return $quiz_feedback; + } + + /** + * Get the quiz_status for our Quiz Object + * @param $quiz = quiz object + * @return 'published' or 'draft' + */ public function get_quiz_status() { $quiz_status = $this->quiz_status; return $quiz_status; } /** - * Get the quiz_finish_message for our Quiz Object - * @param $quiz = quiz object - * @return quiz_finish_message from the quiz object - */ + * Get the quiz_finish_message for our Quiz Object + * @param $quiz = quiz object + * @return quiz_finish_message from the quiz object + */ public function get_quiz_finish_message() { $quiz_finish_message = $this->quiz_finish_message; return $quiz_finish_message; } /** - * Get the quiz_owner for our Quiz Object - * @param $quiz = quiz object - * @return user_id - */ + * Get the quiz_owner for our Quiz Object + * @param $quiz = quiz object + * @return user_id + */ public function get_quiz_owner() { $quiz_owner = $this->quiz_owner; return $quiz_owner; } /** - * Get the quiz_created_by for our Quiz Object - * @param $quiz = quiz object - * @return user_id - */ + * Get the quiz_created_by for our Quiz Object + * @param $quiz = quiz object + * @return user_id + */ public function get_quiz_created_by() { $quiz_created_by = $this->quiz_created_by; return $quiz_created_by; } /** - * Get the quiz_created_at for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz_created_at for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_created_at() { $quiz_created_at = $this->quiz_created_at; return $quiz_created_at; } /** - * Get the quiz_updated_by for our Quiz Object - * @param $quiz = quiz object - * @return user_id - */ + * Get the quiz_updated_by for our Quiz Object + * @param $quiz = quiz object + * @return user_id + */ public function get_quiz_updated_by() { $quiz_updated_by = $this->quiz_updated_by; return $quiz_updated_by; } /** - * Get the quiz_updated_at for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz_updated_at for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_updated_at() { $quiz_updated_at = $this->quiz_updated_at; return $quiz_updated_at; } /** - * Get the quiz_is_deleted for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz_is_deleted for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_is_deleted() { $quiz_is_deleted = $this->quiz_is_deleted; return $quiz_is_deleted; } /** - * Get a quiz option from our Quiz Object - * @param $key (string) key from the $this->quiz_option array - * @return (Mixed) $value of the item in the array if found, null if not found - */ + * Get a quiz option from our Quiz Object + * @param $key (string) key from the $this->quiz_option array + * @return (Mixed) $value of the item in the array if found, null if not found + */ public function get_quiz_option($key) { $value = null; if(is_array($this->quiz_options) && array_key_exists($key, $this->quiz_options)) { @@ -437,177 +483,266 @@ public function get_quiz_option($key) { } /** - * Get the quiz_title_display for our Quiz Object - * @param $quiz = quiz object - * @return (string) 'show' or 'hide' - */ + * Get the quiz_title_display for our Quiz Object + * @param $quiz = quiz object + * @return (string) 'show' or 'hide' + */ public function get_quiz_title_display() { return $this->get_quiz_option('quiz_title_display'); } + /** + * Get the quiz_title_test_display for our Quiz Object + * @param $quiz = quiz object + * @return (string) 'show' or 'hide' + */ + // public function get_quiz_title_test_display() + // { + // return $this->get_quiz_option('quiz_title_test_display'); + // } + /** - * Get the quiz_width for our Quiz Object - * @param $quiz = quiz object - * @return (string) %, px, em, or rem value (100%, 800px, 20rem, etc) - */ + * Get the quiz_width for our Quiz Object + * @param $quiz = quiz object + * @return (string) %, px, em, or rem value (100%, 800px, 20rem, etc) + */ public function get_quiz_width() { return $this->get_quiz_option('quiz_width'); } /** - * Get the quiz_bg_color for our Quiz Object - * @param $quiz = quiz object - * @return #hex code - */ + * Get the quiz_bg_color for our Quiz Object + * @param $quiz = quiz object + * @return #hex code + */ public function get_quiz_bg_color() { return $this->get_quiz_option('quiz_bg_color'); } /** - * Get the quiz_text_color for our Quiz Object - * @param $quiz = quiz object - * @return #hex code - */ + * Get the quiz_text_color for our Quiz Object + * @param $quiz = quiz object + * @return #hex code + */ public function get_quiz_text_color() { return $this->get_quiz_option('quiz_text_color'); } /** - * Get the quiz_border_color for our Quiz Object - * @param $quiz = quiz object - * @return #hex code - */ + * Get the quiz_border_color for our Quiz Object + * @param $quiz = quiz object + * @return #hex code + */ public function get_quiz_border_color() { return $this->get_quiz_option('quiz_border_color'); } /** - * Get the quiz_button_color for our Quiz Object - * @param $quiz = quiz object - * @return #hex code - */ + * Get the quiz_button_color for our Quiz Object + * @param $quiz = quiz object + * @return #hex code + */ public function get_quiz_button_color() { return $this->get_quiz_option('quiz_button_color'); } /** - * Get the quiz_correct_color for our Quiz Object - * @param $quiz = quiz object - * @return #hex code - */ + * Get the quiz_correct_color for our Quiz Object + * @param $quiz = quiz object + * @return #hex code + */ public function get_quiz_correct_color() { return $this->get_quiz_option('quiz_correct_color'); } /** - * Get the quiz_incorrect_color for our Quiz Object - * @param $quiz = quiz object - * @return #hex code - */ + * Get the quiz_incorrect_color for our Quiz Object + * @param $quiz = quiz object + * @return #hex code + */ public function get_quiz_incorrect_color() { return $this->get_quiz_option('quiz_incorrect_color'); } /** - * Get the quiz_custom_css for our Quiz Object - * @param $quiz = quiz object - * @return saved css - */ + * Get the quiz_custom_css for our Quiz Object + * @param $quiz = quiz object + * @return saved css + */ public function get_quiz_custom_css() { return $this->get_quiz_option('quiz_custom_css'); } /** - * Get the quiz_custom_css_minified for our Quiz Object - * @param $quiz = quiz object - * @return saved css - */ + * Get the quiz_custom_css_minified for our Quiz Object + * @param $quiz = quiz object + * @return saved css + */ public function get_quiz_custom_css_minified() { return $this->get_quiz_option('quiz_custom_css_minified'); } /** - * Get the quiz_custom_css_minified for our Quiz Object - * @param $quiz = quiz object - * @return saved css - */ + * Get the quiz_custom_css_minified for our Quiz Object + * @param $quiz = quiz object + * @return saved css + */ public function get_quiz_mc_options_order() { return $this->get_quiz_option('quiz_mc_options_order'); } /** - * Get the facebook_title_start for our Quiz Object - * @param $quiz = quiz object - * @return string - */ + * Get the facebook_title_start for our Quiz Object + * @param $quiz = quiz object + * @return string + */ public function get_facebook_title() { return $this->get_quiz_option('facebook_title'); } /** - * Get the facebook_description_start for our Quiz Object - * @param $quiz = quiz object - * @return string - */ + * Get the facebook_description_start for our Quiz Object + * @param $quiz = quiz object + * @return string + */ public function get_facebook_description() { return $this->get_quiz_option('facebook_description'); } /** - * Get the facebook_quote_end for our Quiz Object - * @param $quiz = quiz object - * @return string - */ + * Get the quiz_end_fail_title for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_fail_title() { + return $this->get_quiz_option('quiz_end_fail_title'); + } + + /** + * Get the quiz_end_fail_description for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_fail_description() { + return $this->get_quiz_option('quiz_end_fail_description'); + } + + /** + * Get the quiz_end_average_title for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_average_title() { + return $this->get_quiz_option('quiz_end_average_title'); + } + + /** + * Get the quiz_end_average_description for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_average_description() { + return $this->get_quiz_option('quiz_end_average_description'); + } + + /** + * Get the quiz_end_good_title for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_good_title() { + return $this->get_quiz_option('quiz_end_good_title'); + } + + /** + * Get the quiz_end_good_description for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_good_description() { + return $this->get_quiz_option('quiz_end_good_description'); + } + + /** + * Get the quiz_end_perfect_title for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_perfect_title() { + return $this->get_quiz_option('quiz_end_perfect_title'); + } + + /** + * Get the quiz_end_perfect_description for our Quiz Object + * + * @param $quiz = quiz object + * @return string + */ + public function get_quiz_end_perfect_description() { + return $this->get_quiz_option('quiz_end_perfect_description'); + } + /** + * Get the facebook_quote_end for our Quiz Object + * @param $quiz = quiz object + * @return string + */ public function get_facebook_quote_end() { return $this->get_quiz_option('facebook_quote_end'); } /** - * Get the email_subject_start for our Quiz Object - * @param $quiz = quiz object - * @return string - */ + * Get the email_subject_start for our Quiz Object + * @param $quiz = quiz object + * @return string + */ public function get_email_subject() { return $this->get_quiz_option('email_subject'); } /** - * Get the facebook_description_start for our Quiz Object - * @param $quiz = quiz object - * @return string - */ + * Get the facebook_description_start for our Quiz Object + * @param $quiz = quiz object + * @return string + */ public function get_email_body_start() { return $this->get_quiz_option('email_body_start'); } /** - * Get the email_body_end for our Quiz Object - * @param $quiz = quiz object - * @return string - */ + * Get the email_body_end for our Quiz Object + * @param $quiz = quiz object + * @return string + */ public function get_email_body_end() { return $this->get_quiz_option('email_body_end'); } /** - * Get the tweet_end for our Quiz Object - * @param $quiz = quiz object - * @return string - */ + * Get the tweet_end for our Quiz Object + * @param $quiz = quiz object + * @return string + */ public function get_tweet_end() { $tweet = $this->get_quiz_option('tweet_end'); return $tweet; } /** - * Utility function for encoding content - * @param $key (string) of Object var ('tweet_end', 'email_body_start', etc) - * @param $encoding (string) 'rawurl','url','htmlspecialchars' - * @param $mustache BOOLEAN keep mustache variables decoded - * @return encoded string - */ + * Utility function for encoding content + * @param $key (string) of Object var ('tweet_end', 'email_body_start', etc) + * @param $encoding (string) 'rawurl','url','htmlspecialchars' + * @param $mustache BOOLEAN keep mustache variables decoded + * @return encoded string + */ public function get_encoded($key, $encoding = 'url', $mustache = false) { $getter = 'get_'.$key; $value = $this->$getter(); @@ -615,10 +750,10 @@ public function get_encoded($key, $encoding = 'url', $mustache = false) { return $value; } /** - * Get the questions for our Quiz Object - * @param $quiz = quiz object - * @return array of question_id's as integers - */ + * Get the questions for our Quiz Object + * @param $quiz = quiz object + * @return array of question_id's as integers + */ public function get_questions() { $questions = $this->questions; return $questions; @@ -626,49 +761,49 @@ public function get_questions() { /** - * Get the quiz views for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz views for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_views() { $quiz_views = $this->quiz_views; return $quiz_views; } /** - * Get the quiz starts for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz starts for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_starts() { $quiz_starts = $this->quiz_starts; return $quiz_starts; } /** - * Get the quiz finishes for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz finishes for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_finishes() { $quiz_finishes = $this->quiz_finishes; return $quiz_finishes; } /** - * Get the quiz score_average for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz score_average for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_score_average() { $quiz_score_average = $this->quiz_score_average; return $quiz_score_average; } /** - * Utility function to return count of all questions - * @return (int) number of questions in the quiz - */ + * Utility function to return count of all questions + * @return (int) number of questions in the quiz + */ public function get_total_question_count() { $questions = $this->get_questions(); return count($questions); @@ -676,30 +811,30 @@ public function get_total_question_count() { /** - * Get the quiz time_spent for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz time_spent for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_time_spent() { $quiz_time_spent = $this->quiz_time_spent; return $quiz_time_spent; } /** - * Get the quiz time_spent_average for our Quiz Object - * @param $quiz = quiz object - * @return Date formatted Y-m-d H:i:s - */ + * Get the quiz time_spent_average for our Quiz Object + * @param $quiz = quiz object + * @return Date formatted Y-m-d H:i:s + */ public function get_quiz_time_spent_average() { $quiz_time_spent_average = $this->quiz_time_spent_average; return $quiz_time_spent_average; } /** - * Get the individual score data on each take of this quiz - * @param $quiz = quiz object - * @return array of all the scores - */ + * Get the individual score data on each take of this quiz + * @param $quiz = quiz object + * @return array of all the scores + */ public function get_quiz_scores() { $pdo = new enp_quiz_Db(); // Do a select query to see if we get a returned row @@ -715,7 +850,7 @@ public function get_quiz_scores() { $scores = $stmt->fetchAll(PDO::FETCH_ASSOC); $quiz_scores = array(); - foreach($scores as $score) { + foreach ($scores as $score) { $quiz_scores[] = (int) round($score['quiz_score'] * 100); } @@ -724,9 +859,9 @@ public function get_quiz_scores() { } /** - * Outputs an array that returns the count of each possible score - * @return array($score => $how_many_people_got_this_score, 100'=>'12', '50'=>12, '0'=>4); - */ + * Outputs an array that returns the count of each possible score + * @return array($score => $how_many_people_got_this_score, 100'=>'12', '50'=>12, '0'=>4); + */ public function get_quiz_scores_group_count() { $all_quiz_scores = $this->get_quiz_scores(); $all_quiz_scores = array_count_values($all_quiz_scores); @@ -735,13 +870,13 @@ public function get_quiz_scores_group_count() { $default_scores = array(); $total_questions = $this->get_total_question_count(); // return 0 if there are no questions - if($total_questions === 0) { + if ($total_questions === 0) { return $all_quiz_scores; } $i = 0; - while($i <= $total_questions) { - $key = (int) round($i/$total_questions * 100); + while ($i <= $total_questions) { + $key = (int) round($i / $total_questions * 100); $default_scores[$key] = 0; $i++; } @@ -756,15 +891,15 @@ public function get_quiz_scores_group_count() { } /** - * Useful for line charts and tables of quiz score data - * @return array('quiz_scores'=>array(scores grouped by integer), 'quiz_scores_labels'=>array(score labels)) - */ + * Useful for line charts and tables of quiz score data + * @return array('quiz_scores'=>array(scores grouped by integer), 'quiz_scores_labels'=>array(score labels)) + */ public function get_quiz_score_chart_data() { $all_quiz_scores = $this->get_quiz_scores_group_count(); $quiz_scores_labels = array(); $quiz_scores = array(); - foreach($all_quiz_scores as $key => $val) { - $quiz_scores_labels[] = $key.'%'; + foreach ($all_quiz_scores as $key => $val) { + $quiz_scores_labels[] = $key . '%'; $quiz_scores[] = $val; } @@ -777,15 +912,15 @@ public function get_quiz_score_chart_data() { } /** - * Get the Quiz Take URL - */ + * Get the Quiz Take URL + */ public function get_quiz_url() { return ENP_QUIZ_URL.$this->get_quiz_id(); } /** - * Create an entire quiz json object with all question and mc option data - */ + * Create an entire quiz json object with all question and mc option data + */ public function get_quiz_json() { $quiz = $this->get_take_quiz_array(); return json_encode($quiz); @@ -801,10 +936,10 @@ public function get_take_quiz_array() { } /** - * If you ever need the entirely built quiz at once with all questions - * and all MC Option/Slider data - * @return array of quiz and questions - */ + * If you ever need the entirely built quiz at once with all questions + * and all MC Option/Slider data + * @return array of quiz and questions + */ public function get_quiz_with_full_questions_array() { $quiz = $this->get_take_quiz_array(); $question_ids = $this->get_questions(); @@ -827,12 +962,12 @@ public function get_quiz_with_full_questions_array() { /** - * Get the value we should be saving on a quiz - * get posted if present, if not, get object. This is so we give them their - * current entry if we don't *actually* save yet. - * @param $string = what you want to get ('quiz_title', 'quiz_status', whatever) - * @return $value - */ + * Get the value we should be saving on a quiz + * get posted if present, if not, get object. This is so we give them their + * current entry if we don't *actually* save yet. + * @param $string = what you want to get ('quiz_title', 'quiz_status', whatever) + * @return $value + */ public function get_value($string) { $value = ''; if(isset($_POST['enp_quiz'])) { @@ -855,14 +990,14 @@ public function get_value($string) { } /** - * Encode and replace {{mustache}} template vars for share text - * - * @param $content (string) the content you want encoded - * @param $encoding (mixed - string or boolean). - * false = no encoding. rawurl = rawurlencode(). url = urlencode(). htmlspecialchars = htmlspecialchars(); - * @param $mustache (BOOLEAN) Should we search the string to replace {{mustache}} strings? - * @return STRING encoded and {{mustache}} replaced $content - */ + * Encode and replace {{mustache}} template vars for share text + * + * @param $content (string) the content you want encoded + * @param $encoding (mixed - string or boolean). + * false = no encoding. rawurl = rawurlencode(). url = urlencode(). htmlspecialchars = htmlspecialchars(); + * @param $mustache (BOOLEAN) Should we search the string to replace {{mustache}} strings? + * @return STRING encoded and {{mustache}} replaced $content + */ public function encode_content($content = '', $encoding = 'url', $mustache = false) { if($encoding === 'url') { $content = urlencode($content); @@ -882,12 +1017,12 @@ public function encode_content($content = '', $encoding = 'url', $mustache = fal /** - * If a string is URL encoded and you need to make it turn back into - * {{var}}. Right now it only replaces score_percentage, but we could upgrade * it to use regex or an array later (or the Mustache PHP implementation) - * - * @param $str (urlcoded string) - * @return $str with %7B%7Bscore_percentage%7D%7D turned into {{score_percentage}} - */ + * If a string is URL encoded and you need to make it turn back into + * {{var}}. Right now it only replaces score_percentage, but we could upgrade * it to use regex or an array later (or the Mustache PHP implementation) + * + * @param $str (urlcoded string) + * @return $str with %7B%7Bscore_percentage%7D%7D turned into {{score_percentage}} + */ public function prepare_encoded_mustache_string($str) { $str = str_replace('%7B%7Bscore_percentage%7D%7D', '{{score_percentage}}', $str); return $str; @@ -895,11 +1030,11 @@ public function prepare_encoded_mustache_string($str) { /** - * For using PDO to select all a site's rows - * - * @param $site_id = embed_quiz_site that you want to get quizzes on that site - * @return rows from database table if found, false if not found - **/ + * For using PDO to select all a site's rows + * + * @param $site_id = embed_quiz_site that you want to get quizzes on that site + * @return rows from database table if found, false if not found + **/ protected function select_embed_quizzes() { $pdo = new enp_quiz_Db(); // Do a select query to see if we get a returned row diff --git a/package-lock.json b/package-lock.json index 4ff85ab3..f2f15bba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,501 +1,761 @@ { "name": "enp-quiz", "version": "0.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, - "dependencies": { - "@sinonjs/formatio": { + "packages": { + "": { + "name": "enp-quiz", + "version": "0.0.0", + "license": "ISC", + "dependencies": { + "@tinymce/tinymce-jquery": "^2.0.0", + "fs-extra": "^10.1.0", + "jquery": "^3.6.0", + "tinymce": "^6.0.2" + }, + "devDependencies": { + "browser-sync": "^2.4.0", + "chai": "^4.0.2", + "gulp": "^3.8.11", + "gulp-autoprefixer": "^5.0.0", + "gulp-concat": "^2.6.0", + "gulp-concat-util": "^0.5.5", + "gulp-crass": "^0.2.2", + "gulp-cssnano": "^2.1.3", + "gulp-insert": "^0.5.0", + "gulp-plumber": "^1.2.0", + "gulp-rename": "^1.2.2", + "gulp-sass": "^4.0.1", + "gulp-sourcemaps": "^3.0.0", + "gulp-uglify": "^3.0.0", + "mocha": "^5.1.1", + "run-sequence": "^2.2.1", + "sinon": "^5.0.7", + "sinon-chai": "^3.0.0" + } + }, + "node_modules/@gulp-sourcemaps/identity-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", + "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "dev": true, + "dependencies": { + "acorn": "^6.4.1", + "normalize-path": "^3.0.0", + "postcss": "^7.0.16", + "source-map": "^0.6.0", + "through2": "^3.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "dev": true, + "dependencies": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@sinonjs/formatio": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", "dev": true, - "requires": { + "dependencies": { "samsam": "1.3.0" } }, - "abbrev": { + "node_modules/@tinymce/tinymce-jquery": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-jquery/-/tinymce-jquery-2.0.0.tgz", + "integrity": "sha512-afxm4UVIsi8roxyFiZu+SX4pARyYRWDw3XsMFu4E2eQwuTNpO+jA7qdbqCx3zzcl68clie4jAPmxSUUiJMabEQ==" + }, + "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "accepts": { + "node_modules/accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, - "requires": { - "mime-types": "2.1.18", + "dependencies": { + "mime-types": "~2.1.18", "negotiator": "0.6.1" + }, + "engines": { + "node": ">= 0.6" } }, - "after": { + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", "dev": true }, - "amdefine": { + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.2" + } }, - "ansi-colors": { + "node_modules/ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, - "requires": { - "ansi-wrap": "0.1.0" + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ansi-cyan": { + "node_modules/ansi-cyan": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", "dev": true, - "requires": { + "dependencies": { "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ansi-gray": { + "node_modules/ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", "dev": true, - "requires": { + "dependencies": { "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ansi-red": { + "node_modules/ansi-red": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", "dev": true, - "requires": { + "dependencies": { "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "ansi-wrap": { + "node_modules/ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "anymatch": { + "node_modules/anymatch": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "dependencies": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, - "aproba": { + "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "archy": { + "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "are-we-there-yet": { + "node_modules/are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "argparse": { + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "requires": { - "sprintf-js": "1.0.3" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "arr-diff": { + "node_modules/arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, - "requires": { - "arr-flatten": "1.1.0" + "dependencies": { + "arr-flatten": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "arr-flatten": { + "node_modules/arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "arr-union": { + "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-differ": { + "node_modules/array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-each": { + "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-find-index": { + "node_modules/array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-slice": { + "node_modules/array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-uniq": { + "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "array-unique": { + "node_modules/array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "arraybuffer.slice": { + "node_modules/arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", "dev": true }, - "asn1": { + "node_modules/asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, - "assert-plus": { + "node_modules/assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, - "assertion-error": { + "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "assign-symbols": { + "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "async": { + "node_modules/async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, - "async-each": { + "node_modules/async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "async-each-series": { + "node_modules/async-each-series": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "async-foreach": { + "node_modules/async-foreach": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "async-limiter": { + "node_modules/async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", "dev": true }, - "asynckit": { + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "atob": { + "node_modules/atob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, - "autoprefixer": { + "node_modules/autoprefixer": { "version": "8.6.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.4.tgz", "integrity": "sha512-9D0OoxWCqq9Okp9wD+igaCf6ZaNjYNFSCKxgMLAxAGqXwpapaZ+D0PBv265VHQLgam8a7gld4E6KgJJM6SKfQQ==", "dev": true, - "requires": { - "browserslist": "3.2.8", - "caniuse-lite": "1.0.30000859", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "6.0.23", - "postcss-value-parser": "3.3.0" + "dependencies": { + "browserslist": "^3.2.8", + "caniuse-lite": "^1.0.30000859", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.23", + "postcss-value-parser": "^3.2.3" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" } }, - "aws-sign2": { + "node_modules/aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "aws4": { + "node_modules/aws4": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", "dev": true }, - "axios": { + "node_modules/axios": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", "dev": true, - "requires": { - "follow-redirects": "1.5.0", - "is-buffer": "1.1.6" + "dependencies": { + "follow-redirects": "^1.2.5", + "is-buffer": "^1.1.5" } }, - "backo2": { + "node_modules/backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", "dev": true }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { + "node_modules/base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "base64-arraybuffer": { + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6.0" + } }, - "base64id": { + "node_modules/base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, - "batch": { + "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "bcrypt-pbkdf": { + "node_modules/bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, - "requires": { - "tweetnacl": "0.14.5" + "dependencies": { + "tweetnacl": "^0.14.3" } }, - "beeper": { + "node_modules/beeper": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "better-assert": { + "node_modules/better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", "dev": true, - "requires": { + "dependencies": { "callsite": "1.0.0" + }, + "engines": { + "node": "*" } }, - "binary-extensions": { + "node_modules/binary-extensions": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "blob": { + "node_modules/blob": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", "dev": true }, - "block-stream": { + "node_modules/block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, - "requires": { - "inherits": "2.0.3" + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" } }, - "boom": { + "node_modules/boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", "dev": true, - "requires": { - "hoek": "2.16.3" + "dependencies": { + "hoek": "2.x.x" + }, + "engines": { + "node": ">=0.10.40" } }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { - "balanced-match": "1.0.0", + "dependencies": { + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "dependencies": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "browser-stdout": { + "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "browser-sync": { + "node_modules/browser-sync": { "version": "2.24.5", "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.24.5.tgz", "integrity": "sha512-r6ZRYncfYRGerw4Rh5S8Q9x9WKDdrwH572hd3ofsYgn0Px6a6EqXiLBVTCss2+2a45G9ZgjRHSeo9YY56UpgKw==", "dev": true, - "requires": { - "browser-sync-ui": "1.0.1", + "dependencies": { + "browser-sync-ui": "v1.0.1", "bs-recipes": "1.3.4", "chokidar": "1.7.0", "connect": "3.6.6", - "connect-history-api-fallback": "1.5.0", - "dev-ip": "1.0.1", + "connect-history-api-fallback": "^1.5.0", + "dev-ip": "^1.0.1", "easy-extender": "2.3.2", "eazy-logger": "3.0.2", - "etag": "1.8.1", - "fresh": "0.5.2", + "etag": "^1.8.1", + "fresh": "^0.5.2", "fs-extra": "3.0.1", "http-proxy": "1.15.2", "immutable": "3.8.2", @@ -504,7 +764,7 @@ "opn": "4.0.2", "portscanner": "2.1.1", "qs": "6.2.3", - "raw-body": "2.3.3", + "raw-body": "^2.3.2", "resp-modifier": "6.0.2", "rx": "4.1.0", "serve-index": "1.9.1", @@ -513,1088 +773,11701 @@ "socket.io": "2.1.1", "ua-parser-js": "0.7.17", "yargs": "6.4.0" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 0.8.0" } }, - "browser-sync-ui": { + "node_modules/browser-sync-ui": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz", "integrity": "sha512-RIxmwVVcUFhRd1zxp7m2FfLnXHf59x4Gtj8HFwTA//3VgYI3AKkaQAuDL8KDJnE59XqCshxZa13JYuIWtZlKQg==", "dev": true, - "requires": { + "dependencies": { "async-each-series": "0.1.1", - "connect-history-api-fallback": "1.5.0", - "immutable": "3.8.2", + "connect-history-api-fallback": "^1.1.0", + "immutable": "^3.7.6", "server-destroy": "1.0.1", "socket.io-client": "2.0.4", - "stream-throttle": "0.1.3" + "stream-throttle": "^0.1.3" } }, - "browserslist": { + "node_modules/browser-sync/node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/browser-sync/node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/browser-sync/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/browserslist": { "version": "3.2.8", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, - "requires": { - "caniuse-lite": "1.0.30000859", - "electron-to-chromium": "1.3.50" + "dependencies": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + }, + "bin": { + "browserslist": "cli.js" } }, - "bs-recipes": { + "node_modules/bs-recipes": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", "dev": true }, - "builtin-modules": { + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "bytes": { + "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "cache-base": { + "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "callsite": { + "node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "camelcase": { + "node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "camelcase-keys": { + "node_modules/camelcase-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "caniuse-lite": { + "node_modules/caniuse-api/node_modules/browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "dev": true, + "dependencies": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/caniuse-db": { + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001332.tgz", + "integrity": "sha512-/0YiL5sYWdh4EAqCFezyL6+wbLOxVVuLwVNs7f6pyCoV3wRJAOyTeTbR2TGwxiEIpWtK5aGwS7AwhioGi+5MAg==", + "dev": true + }, + "node_modules/caniuse-lite": { "version": "1.0.30000859", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000859.tgz", "integrity": "sha512-BucSdVZocKyKAdThos0fx7Ds941M1jddFazv7U3stFqxyWOc2JrxVn87Qo02DzP9Txb4lw9jIQddh9IT4WA3dQ==", "dev": true }, - "caseless": { + "node_modules/caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, - "chai": { + "node_modules/chai": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, - "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.8" + "dependencies": { + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, - "chalk": { + "node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "check-error": { + "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "chokidar": { + "node_modules/chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", "dev": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.2.4", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "dependencies": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "optionalDependencies": { + "fsevents": "^1.0.0" } }, - "clap": { + "node_modules/clap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, - "requires": { - "chalk": "1.1.3" + "dependencies": { + "chalk": "^1.1.3" + }, + "engines": { + "node": ">=0.10.0" } }, - "class-utils": { + "node_modules/class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "cliui": { + "node_modules/class-utils/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, - "clone": { + "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, - "clone-buffer": { + "node_modules/clone-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, - "clone-stats": { + "node_modules/clone-stats": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", "dev": true }, - "cloneable-readable": { + "node_modules/cloneable-readable": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "dev": true, - "requires": { - "inherits": "2.0.3", - "process-nextick-args": "2.0.0", - "readable-stream": "2.3.6" + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, - "coa": { + "node_modules/coa": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "dev": true, - "requires": { - "q": "1.5.1" + "dependencies": { + "q": "^1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "code-point-at": { + "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "collection-visit": { + "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "color-convert": { + "node_modules/color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "dependencies": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "node_modules/color-convert": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, - "requires": { + "dependencies": { "color-name": "1.1.1" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, - "color-support": { + "node_modules/color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "dependencies": { + "color-name": "^1.0.0" + } + }, + "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true + "dev": true, + "bin": { + "color-support": "bin.js" + } }, - "colors": { + "node_modules/colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "dependencies": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "node_modules/colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, - "combined-stream": { + "node_modules/combined-stream": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, - "requires": { - "delayed-stream": "1.0.0" + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commander": { + "node_modules/commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, - "component-bind": { + "node_modules/component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", "dev": true }, - "component-emitter": { + "node_modules/component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, - "component-inherit": { + "node_modules/component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-with-sourcemaps": { + "node_modules/concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", "dev": true, - "requires": { - "source-map": "0.6.1" - }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "source-map": "^0.6.1" } }, - "connect": { + "node_modules/concat-with-sourcemaps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" } }, - "connect-history-api-fallback": { + "node_modules/connect-history-api-fallback": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, - "console-control-strings": { + "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, - "cookie": { + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "copy-descriptor": { + "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "crass": { + "node_modules/crass": { "version": "0.12.3", "resolved": "https://registry.npmjs.org/crass/-/crass-0.12.3.tgz", "integrity": "sha512-0gOYgXVAr6KF7xNUv/+QmTrVsMowpuYu9y1SWzMHFrERzxTygqpeBTXI9CMg1NI1AwQ96ZrkaGHVT9eTC66+Tw==", "dev": true, - "requires": { - "color-convert": "1.9.2", - "strong-data-uri": "1.0.6", - "svgo": "0.7.2" + "dependencies": { + "color-convert": "^1.7.0", + "strong-data-uri": "^1.0.4", + "svgo": "^0.7.1" + }, + "bin": { + "crass": "bin/crass" + }, + "engines": { + "node": ">=6.11.2" } }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "dev": true, - "requires": { - "lru-cache": "4.1.3", - "which": "1.3.1" - }, "dependencies": { - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, - "cryptiles": { + "node_modules/cross-spawn/node_modules/lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", "dev": true, - "requires": { - "boom": "2.10.1" + "dependencies": { + "boom": "2.x.x" + }, + "engines": { + "node": ">=0.10.40" } }, - "csso": { + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css/node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/css/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css/node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "dependencies": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + } + }, + "node_modules/cssnano/node_modules/autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "dependencies": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + } + }, + "node_modules/cssnano/node_modules/browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "dev": true, + "dependencies": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/cssnano/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssnano/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/cssnano/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/csso": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, - "requires": { - "clap": "1.2.3", - "source-map": "0.5.7" + "dependencies": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + }, + "bin": { + "csso": "bin/csso" + }, + "engines": { + "node": ">=0.10.0" } }, - "csswring": { + "node_modules/csswring": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/csswring/-/csswring-6.0.3.tgz", "integrity": "sha512-Cz2/8nVqI6li/t4hfZbPTQDF7FkE4qP534j1xbBnLxA1cYl51ZRSg0PTDVWzbzlSsR+tfV2Iv/w+0cTmfKS7JA==", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", "dev": true, - "requires": { - "minimist": "1.2.0", - "onecolor": "3.0.5", - "postcss": "6.0.23" + "dependencies": { + "minimist": "^1.2.0", + "onecolor": "^3.0.5", + "postcss": "^6.0.17" + }, + "bin": { + "csswring": "bin/csswring.js" + }, + "engines": { + "node": ">=5.0.0" } }, - "currently-unhandled": { + "node_modules/currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, - "requires": { - "array-find-index": "1.0.2" + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "dashdash": { + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, - "dateformat": { + "node_modules/dashdash/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/dateformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "debug": { + "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "requires": { + "dependencies": { "ms": "2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "node_modules/debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "dependencies": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + } }, - "decode-uri-component": { + "node_modules/debug-fabulous/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/debug-fabulous/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "deep-eql": { + "node_modules/deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, - "requires": { - "type-detect": "4.0.8" + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" } }, - "defaults": { + "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, - "requires": { - "clone": "1.0.4" + "dependencies": { + "clone": "^1.0.2" } }, - "define-property": { + "node_modules/define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "delayed-stream": { + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "delegates": { + "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "depd": { + "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "deprecated": { + "node_modules/deprecated": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.9" + } }, - "destroy": { + "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-file": { + "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "dev-ip": { + "node_modules/detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dev-ip": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", - "dev": true + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "diff": { + "node_modules/diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "duplexer2": { + "node_modules/duplexer2": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, - "requires": { - "readable-stream": "1.1.14" - }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "readable-stream": "~1.1.9" } }, - "duplexify": { + "node_modules/duplexer2/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/duplexify": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "stream-shift": "1.0.0" - }, "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "easy-extender": { + "node_modules/duplexify/node_modules/end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/duplexify/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/easy-extender": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.2.tgz", "integrity": "sha1-PTJI/r4rFZYHMW2PnPSRwWZIIh0=", "dev": true, - "requires": { - "lodash": "3.10.1" + "dependencies": { + "lodash": "^3.10.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "eazy-logger": { + "node_modules/eazy-logger": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", "dev": true, - "requires": { - "tfunk": "3.1.0" + "dependencies": { + "tfunk": "^3.0.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "ecc-jsbn": { + "node_modules/ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, - "requires": { - "jsbn": "0.1.1" + "dependencies": { + "jsbn": "~0.1.0" } }, - "ee-first": { + "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "electron-to-chromium": { + "node_modules/electron-to-chromium": { "version": "1.3.50", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz", "integrity": "sha1-dDi3b5K0G5GfP73TUPvQdX2s3fc=", "dev": true }, - "encodeurl": { + "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "end-of-stream": { + "node_modules/end-of-stream": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", "dev": true, - "requires": { - "once": "1.3.3" + "dependencies": { + "once": "~1.3.0" } }, - "engine.io": { + "node_modules/engine.io": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz", "integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==", "dev": true, - "requires": { - "accepts": "1.3.5", + "dependencies": { + "accepts": "~1.3.4", "base64id": "1.0.0", "cookie": "0.3.1", - "debug": "3.1.0", - "engine.io-parser": "2.1.2", - "ws": "3.3.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" } }, - "engine.io-client": { + "node_modules/engine.io-client": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", "dev": true, - "requires": { + "dependencies": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "3.1.0", - "engine.io-parser": "2.1.2", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", "has-cors": "1.1.0", "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "3.3.3", - "xmlhttprequest-ssl": "1.5.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" - }, + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "ms": "2.0.0" } }, - "engine.io-parser": { + "node_modules/engine.io-parser": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", "dev": true, - "requires": { + "dependencies": { "after": "0.8.2", - "arraybuffer.slice": "0.0.7", + "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.5", "blob": "0.0.4", - "has-binary2": "1.0.3" + "has-binary2": "~1.0.2" } }, - "error-ex": { + "node_modules/engine.io/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "requires": { - "is-arrayish": "0.2.1" + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "escape-html": { + "node_modules/es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "esprima": { + "node_modules/esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } }, - "etag": { + "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "eventemitter3": { + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", "dev": true }, - "expand-brackets": { + "node_modules/expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" + "dependencies": { + "is-posix-bracket": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "expand-range": { + "node_modules/expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, - "requires": { - "fill-range": "2.2.4" + "dependencies": { + "fill-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "expand-tilde": { + "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, - "requires": { - "homedir-polyfill": "1.0.1" + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "extend": { + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + }, + "node_modules/extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, - "extend-shallow": { + "node_modules/extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "extglob": { + "node_modules/extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, - "requires": { - "is-extglob": "1.0.0" + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "extsprintf": { + "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "dev": true, + "engines": [ + "node >=0.6.0" + ] }, - "fancy-log": { + "node_modules/fancy-log": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", "dev": true, - "requires": { - "ansi-gray": "0.1.1", - "color-support": "1.1.3", - "time-stamp": "1.1.0" + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" } }, - "filename-regex": { + "node_modules/filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "fill-range": { + "node_modules/fill-range": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "dependencies": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "finalhandler": { + "node_modules/finalhandler": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "find-index": { + "node_modules/find-index": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", "dev": true }, - "find-up": { + "node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "findup-sync": { + "node_modules/findup-sync": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "dev": true, - "requires": { - "detect-file": "1.0.0", - "is-glob": "3.1.0", - "micromatch": "3.1.10", - "resolve-dir": "1.0.1" + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", + "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "dev": true, + "dependencies": { + "debug": "^3.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/follow-redirects/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fork-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz", + "integrity": "sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA=", + "dev": true + }, + "node_modules/form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "bundleDependencies": [ + "node-pre-gyp" + ], + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fsevents/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/are-we-there-yet": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/fsevents/node_modules/balanced-match": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fsevents/node_modules/chownr": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/code-point-at": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/fsevents/node_modules/deep-extend": { + "version": "0.5.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/detect-libc": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/fsevents/node_modules/fs-minipass": { + "version": "1.2.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/gauge": { + "version": "2.7.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/fsevents/node_modules/glob": { + "version": "7.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/iconv-lite": { + "version": "0.4.21", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/ignore-walk": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fsevents/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ini": { + "version": "1.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/minimist": { + "version": "0.0.8", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minipass": { + "version": "2.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "node_modules/fsevents/node_modules/minizlib": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/mkdirp": { + "version": "0.5.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fsevents/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/needle": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/fsevents/node_modules/node-pre-gyp": { + "version": "0.10.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/fsevents/node_modules/nopt": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/fsevents/node_modules/npm-bundled": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/npm-packlist": { + "version": "1.1.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npmlog": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/fsevents/node_modules/number-is-nan": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/os-homedir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/osenv": { + "version": "0.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/fsevents/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/process-nextick-args": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/rc": { + "version": "1.2.7", + "dev": true, + "inBundle": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/fsevents/node_modules/rc/node_modules/minimist": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fsevents/node_modules/rimraf": { + "version": "2.6.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fsevents/node_modules/safe-buffer": { + "version": "5.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/sax": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/semver": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fsevents/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/signal-exit": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fsevents/node_modules/string-width": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/tar": { + "version": "4.4.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/fsevents/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/wide-align": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2" + } + }, + "node_modules/fsevents/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/yallist": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "dependencies": { + "globule": "~0.1.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "node_modules/generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "dependencies": { + "is-property": "^1.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/getpass/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "dependencies": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "dependencies": { + "is-glob": "^2.0.0" + } + }, + "node_modules/glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "dependencies": { + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/glob-stream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/glob-stream/node_modules/minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", + "dev": true, + "dependencies": { + "brace-expansion": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-stream/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/glob-stream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/glob-stream/node_modules/through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "node_modules/glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "dependencies": { + "gaze": "^0.5.1" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", + "dev": true, + "dependencies": { + "brace-expansion": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "dependencies": { + "find-index": "^0.1.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "dependencies": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/globule/node_modules/glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "dependencies": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globule/node_modules/graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/globule/node_modules/inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "node_modules/globule/node_modules/lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true, + "engines": [ + "node", + "rhino" + ] + }, + "node_modules/globule/node_modules/minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", + "dev": true, + "dependencies": { + "lru-cache": "2", + "sigmund": "~1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/gulp-autoprefixer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-5.0.0.tgz", + "integrity": "sha1-gjfCeKaXdScKHK/n1vEBz81YVUQ=", + "dev": true, + "dependencies": { + "autoprefixer": "^8.0.0", + "fancy-log": "^1.3.2", + "plugin-error": "^1.0.1", + "postcss": "^6.0.1", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dev": true, + "dependencies": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-concat-util": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/gulp-concat-util/-/gulp-concat-util-0.5.5.tgz", + "integrity": "sha1-yPBjO05ulQ/5PEdbPI07hL4Dt9w=", + "dev": true, + "dependencies": { + "concat-with-sourcemaps": "^1.0.4", + "gulp-if": "^2.0.0", + "gulp-util": "^3.0.6", + "lodash.assign": "^3.2.0", + "stream-combiner2": "^1.1.1", + "through2": "^2.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/gulp-concat/node_modules/clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/gulp-concat/node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "node_modules/gulp-concat/node_modules/replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-concat/node_modules/vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-crass": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/gulp-crass/-/gulp-crass-0.2.2.tgz", + "integrity": "sha1-RtD38aTamVwiG2ftxJNw95i/eNs=", + "dev": true, + "dependencies": { + "crass": "*", + "csswring": "^6.0.1", + "gulp-util": "^3.0.4", + "through2": "^2.0.3" + } + }, + "node_modules/gulp-cssnano": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/gulp-cssnano/-/gulp-cssnano-2.1.3.tgz", + "integrity": "sha512-r8qdX5pTXsBb/IRm9loE8Ijz8UiPW/URMC/bKJe4FPNHRaz4aEx8Bev03L0FYHd/7BSGu/ebmfumAkpGuTdenA==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "cssnano": "^3.0.0", + "object-assign": "^4.0.1", + "plugin-error": "^1.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" + } + }, + "node_modules/gulp-if": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", + "integrity": "sha1-pJe351cwBQQcqivIt92jyARE1ik=", + "dev": true, + "dependencies": { + "gulp-match": "^1.0.3", + "ternary-stream": "^2.0.1", + "through2": "^2.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/gulp-insert": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/gulp-insert/-/gulp-insert-0.5.0.tgz", + "integrity": "sha1-MjE/E+SiPPWsylzl8MCAkjx3hgI=", + "dev": true, + "dependencies": { + "readable-stream": "^1.0.26-4", + "streamqueue": "0.0.6" + } + }, + "node_modules/gulp-insert/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/gulp-insert/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/gulp-insert/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/gulp-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.0.3.tgz", + "integrity": "sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4=", + "dev": true, + "dependencies": { + "minimatch": "^3.0.3" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/gulp-plumber": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.2.0.tgz", + "integrity": "sha512-L/LJftsbKoHbVj6dN5pvMsyJn9jYI0wT0nMg3G6VZhDac4NesezecYTi8/48rHi+yEic3sUpw6jlSc7qNWh32A==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "fancy-log": "^1.3.2", + "plugin-error": "^0.1.2", + "through2": "^2.0.3" + }, + "engines": { + "node": ">=0.10", + "npm": ">=1.2.10" + } + }, + "node_modules/gulp-plumber/node_modules/arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "dependencies": { + "kind-of": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "dependencies": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-rename": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.3.0.tgz", + "integrity": "sha512-nEuZB7/9i0IZ8AXORTizl2QLP9tcC9uWc/s329zElBLJw1CfOhmMXBxwVlCRKjDyrWuhVP0uBKl61KeQ32TiCg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-sass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.0.1.tgz", + "integrity": "sha512-OMQEgWNggpog8Tc5v1MuI6eo+5iiPkVeLL76iBhDoEEScLUPfZlpvzmgTnLkpcqdrNodZxpz5qcv6mS2rulk3g==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "lodash.clonedeep": "^4.3.2", + "node-sass": "^4.8.3", + "plugin-error": "^1.0.1", + "replace-ext": "^1.0.0", + "strip-ansi": "^4.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/gulp-sass/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-sass/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-sass/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-sass/node_modules/replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-sass/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-sass/node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-sourcemaps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", + "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", + "dev": true, + "dependencies": { + "@gulp-sourcemaps/identity-map": "^2.0.1", + "@gulp-sourcemaps/map-sources": "^1.0.0", + "acorn": "^6.4.1", + "convert-source-map": "^1.0.0", + "css": "^3.0.0", + "debug-fabulous": "^1.0.0", + "detect-newline": "^2.0.0", + "graceful-fs": "^4.0.0", + "source-map": "^0.6.0", + "strip-bom-string": "^1.0.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gulp-sourcemaps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-uglify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", + "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", + "dev": true, + "dependencies": { + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash": "^4.13.1", + "make-error-cause": "^1.1.1", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "node_modules/gulp-uglify/node_modules/lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "node_modules/gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "deprecated": "gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5", + "dev": true, + "dependencies": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/gulp-util/node_modules/object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp/node_modules/semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" + }, + "bin": { + "har-validator": "bin/har-validator" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "dependencies": { + "isarray": "2.0.1" + } + }, + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", + "dev": true, + "dependencies": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + }, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "dev": true, + "engines": { + "node": ">=0.10.40" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", + "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "dev": true + }, + "node_modules/html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-proxy": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", + "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", + "dev": true, + "dependencies": { + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "dependencies": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true, + "bin": { + "in-install": "in-install.js", + "in-publish": "in-publish.js", + "not-in-install": "not-in-install.js", + "not-in-publish": "not-in-publish.js" + } + }, + "node_modules/indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "dependencies": { + "builtin-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "dependencies": { + "is-primitive": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "node_modules/is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "dev": true, + "dependencies": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, + "node_modules/is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-odd/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "dependencies": { + "html-comment-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isobject/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "node_modules/js-base64": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", + "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jsprim/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/limiter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz", + "integrity": "sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/localtunnel": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.0.tgz", + "integrity": "sha512-wCIiIHJ8kKIcWkTQE3m1VRABvsH2ZuOkiOpZUofUCf6Q42v3VIZ+Q0YfX1Z4sYDRj0muiKL1bLvz1FeoxsPO0w==", + "dev": true, + "dependencies": { + "axios": "0.17.1", + "debug": "2.6.8", + "openurl": "1.1.1", + "yargs": "6.6.0" + }, + "bin": { + "lt": "bin/client" + } + }, + "node_modules/localtunnel/node_modules/debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/localtunnel/node_modules/yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" + } + }, + "node_modules/lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "node_modules/lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "node_modules/lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "node_modules/lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "node_modules/lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "node_modules/lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "dev": true, + "dependencies": { + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "node_modules/lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "node_modules/lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "node_modules/lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "node_modules/lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "node_modules/lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "dev": true, + "dependencies": { + "lodash._baseassign": "^3.0.0", + "lodash._createassigner": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "dependencies": { + "lodash._root": "^3.0.0" + } + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "dev": true + }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "node_modules/lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "node_modules/lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/lolex": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", + "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==", + "dev": true + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, + "node_modules/make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "dependencies": { + "make-error": "^1.2.0" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/math-expression-evaluator": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz", + "integrity": "sha512-M6AMrvq9bO8uL42KvQHPA2/SbAobA0R7gviUmPrcTcGfdwpaLitz4q2Euzx2lP9Oy88vxK3HOrsISgSwKsYS4A==", + "dev": true + }, + "node_modules/math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "dependencies": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true, + "bin": { + "mime": "cli.js" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "deprecated": "Critical bug fixed in v2.0.1, please upgrade to the latest version.", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "dependencies": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "dependencies": { + "duplexer2": "0.0.2" + } + }, + "node_modules/nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true + }, + "node_modules/nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natives": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", + "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", + "deprecated": "This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x.", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/nise": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", + "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==", + "dev": true, + "dependencies": { + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" + } + }, + "node_modules/node-gyp": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz", + "integrity": "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==", + "dev": true, + "dependencies": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": ">=2.9.0 <2.82.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-sass": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", + "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.3.1", + "npmlog": "^4.0.0", + "request": "~2.79.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-sass/node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/node-sass/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-sass/node_modules/globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/node-sass/node_modules/lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "node_modules/node-sass/node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.defaults/node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.defaults/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map/node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "dependencies": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onecolor": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz", + "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY=", + "dev": true, + "engines": { + "node": ">=0.4.8" + } + }, + "node_modules/openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "dev": true + }, + "node_modules/opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "dependencies": { + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" + } + }, + "node_modules/ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "dependencies": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "dependencies": { + "better-assert": "~1.0.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-to-regexp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/plugin-error/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/portscanner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", + "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "dev": true, + "dependencies": { + "async": "1.5.2", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "dependencies": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + } + }, + "node_modules/postcss-calc/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-calc/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-calc/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "dependencies": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + } + }, + "node_modules/postcss-colormin/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-colormin/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-colormin/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "dependencies": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + } + }, + "node_modules/postcss-convert-values/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-convert-values/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "dependencies": { + "postcss": "^5.0.14" + } + }, + "node_modules/postcss-discard-comments/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-discard-comments/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "dependencies": { + "postcss": "^5.0.4" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "dependencies": { + "postcss": "^5.0.14" + } + }, + "node_modules/postcss-discard-empty/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-discard-empty/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "dependencies": { + "postcss": "^5.0.16" + } + }, + "node_modules/postcss-discard-overridden/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-discard-overridden/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "dependencies": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + } + }, + "node_modules/postcss-discard-unused/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-discard-unused/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-discard-unused/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "dependencies": { + "postcss": "^5.0.4" + } + }, + "node_modules/postcss-filter-plugins/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-filter-plugins/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-filter-plugins/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "dependencies": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + } + }, + "node_modules/postcss-merge-idents/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-merge-idents/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-merge-idents/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "dependencies": { + "postcss": "^5.0.4" + } + }, + "node_modules/postcss-merge-longhand/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-merge-longhand/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "dependencies": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "dev": true, + "dependencies": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/postcss-merge-rules/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-merge-rules/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "node_modules/postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "node_modules/postcss-minify-font-values/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-minify-font-values/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "dependencies": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-minify-gradients/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + } + }, + "node_modules/postcss-minify-params/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-minify-params/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-minify-selectors/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "dependencies": { + "postcss": "^5.0.5" + } + }, + "node_modules/postcss-normalize-charset/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-normalize-charset/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + } + }, + "node_modules/postcss-normalize-url/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-normalize-url/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "dependencies": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + } + }, + "node_modules/postcss-ordered-values/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-ordered-values/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "dependencies": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "node_modules/postcss-reduce-idents/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-reduce-idents/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-reduce-idents/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "dependencies": { + "postcss": "^5.0.4" + } + }, + "node_modules/postcss-reduce-initial/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-reduce-initial/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "dependencies": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "dependencies": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "node_modules/postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "dependencies": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + } + }, + "node_modules/postcss-svgo/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-svgo/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-unique-selectors/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "node_modules/postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "dependencies": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "node_modules/postcss-zindex/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-zindex/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/postcss-zindex/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/postcss/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss/node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/randomatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/randomatic/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/randomatic/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "dependencies": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "dependencies": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + } + }, + "node_modules/reduce-css-calc/node_modules/balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "node_modules/reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "dependencies": { + "is-equal-shallow": "^0.1.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1", + "uuid": "^3.0.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/run-sequence": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-2.2.1.tgz", + "integrity": "sha512-qkzZnQWMZjcKbh3CNly2srtrkaO/2H/SI5f2eliMCapdRD3UhMrwjfOAZJAnZ2H8Ju4aBzFZkBGXUqFs9V0yxw==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "fancy-log": "^1.3.2", + "plugin-error": "^0.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/run-sequence/node_modules/arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/run-sequence/node_modules/arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/run-sequence/node_modules/array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/run-sequence/node_modules/extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "dependencies": { + "kind-of": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/run-sequence/node_modules/kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/run-sequence/node_modules/plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "dependencies": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "deprecated": "This package has been deprecated in favour of @sinonjs/samsam", + "dev": true + }, + "node_modules/sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "bin": { + "sassgraph": "bin/sassgraph" + } + }, + "node_modules/sass-graph/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sass-graph/node_modules/lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "node_modules/sass-graph/node_modules/yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "node_modules/sass-graph/node_modules/yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "dependencies": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + } + }, + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "node_modules/sinon": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", + "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", + "dev": true, + "dependencies": { + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.5.0", + "lodash.get": "^4.4.2", + "lolex": "^2.4.2", + "nise": "^1.3.3", + "supports-color": "^5.4.0", + "type-detect": "^4.0.8" + } + }, + "node_modules/sinon-chai": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.2.0.tgz", + "integrity": "sha512-Z72B4a0l0IQe5uWi9yzcqX/Ml6K9e1Hp03NmkjJnRG3gDsKTX7KvLFZsVUmCaz0eqeXLLK089mwTsP1P1W+DUQ==", + "dev": true, + "peerDependencies": { + "chai": "^4.0.0", + "sinon": ">=4.0.0 <7.0.0" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", + "dev": true, + "dependencies": { + "hoek": "2.x.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "dependencies": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "node_modules/socket.io-client": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", + "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", + "dev": true, + "dependencies": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~2.6.4", + "engine.io-client": "~3.1.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.1.1", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io-parser": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", + "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", + "dev": true, + "dependencies": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "has-binary2": "~1.0.2", + "isarray": "2.0.1" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/socket.io/node_modules/engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "dependencies": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "node_modules/socket.io/node_modules/socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "dependencies": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io/node_modules/socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "dependencies": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "dashdash": "^1.12.0", + "getpass": "^0.1.1", + "safer-buffer": "^2.0.2" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + }, + "optionalDependencies": { + "bcrypt-pbkdf": "^1.0.0", + "ecc-jsbn": "~0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + } + }, + "node_modules/sshpk/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2/node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-consume": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", + "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", + "dev": true + }, + "node_modules/stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "node_modules/stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "dev": true, + "dependencies": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/streamqueue": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/streamqueue/-/streamqueue-0.0.6.tgz", + "integrity": "sha1-ZvX17JTpuK8knkrsLdH3Qb/pTeM=", + "dev": true, + "dependencies": { + "readable-stream": "^1.0.26-2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/streamqueue/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/streamqueue/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/streamqueue/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strong-data-uri": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/strong-data-uri/-/strong-data-uri-1.0.6.tgz", + "integrity": "sha512-zhzBZev0uhT2IrFUerenXhfaE0vFUYwAZsnG0gIKGpfM/Gi6jOUQ3cmcvyTsXeDLIPiTubHESeO7EbD6FoPmzw==", + "dev": true, + "dependencies": { + "truncate": "^2.0.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dev": true, + "dependencies": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "dev": true, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "node_modules/ternary-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-2.0.1.tgz", + "integrity": "sha1-Bk5Im0tb9gumpre8fy9cJ07Pgmk=", + "dev": true, + "dependencies": { + "duplexify": "^3.5.0", + "fork-stream": "^0.0.4", + "merge-stream": "^1.0.0", + "through2": "^2.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "deprecated": "no longer maintained", + "dev": true + }, + "node_modules/tfunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", + "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", + "dev": true, + "dependencies": { + "chalk": "^1.1.1", + "object-path": "^0.9.0" + } + }, + "node_modules/through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "dependencies": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "node_modules/tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tinymce": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.0.2.tgz", + "integrity": "sha512-i4OEzcTF6mGxZ+scumOoWiaI9HYn6uya980hJ+9jwnhgLbhBb+73ar2t9Ewfkns3DTl2Ez3r1pQs2tpT+ka29Q==" + }, + "node_modules/to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "dependencies": { + "glob": "^6.0.4" + } + }, + "node_modules/true-case-path/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/truncate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/truncate/-/truncate-2.0.1.tgz", + "integrity": "sha1-3RptFWMFFWY9hHX28k7fL4AOuxs=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/uglify-js": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.2.tgz", + "integrity": "sha512-/kVQDzwiE9Vy7Y63eMkMozF4jIt0C2+xHctF9YpqNWdE/NLOuMurshkpoYGUlAbeYhACPv0HJPIHJul0Ak4/uw==", + "dev": true, + "dependencies": { + "commander": "~2.15.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "node_modules/unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/use/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true, + "bin": { + "user-home": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.0.tgz", + "integrity": "sha512-ijO9N2xY/YaOqQ5yz5c4sy2ZjWmA6AR6zASb/gdpeKZ8+948CxwfMW9RrKVk5may6ev8c0/Xguu32e2Llelpqw==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "dependencies": { + "user-home": "^1.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "dependencies": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "dependencies": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/vinyl-fs/node_modules/graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js", + "dev": true, + "dependencies": { + "natives": "^1.1.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/vinyl-fs/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/vinyl-fs/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/vinyl-fs/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/vinyl-fs/node_modules/strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "dependencies": { + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" + }, + "bin": { + "strip-bom": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-fs/node_modules/through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "dependencies": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "dependencies": { + "source-map": "^0.5.1" + } + }, + "node_modules/whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true, + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yargs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", + "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.1.0" + } + }, + "node_modules/yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + }, + "dependencies": { + "@gulp-sourcemaps/identity-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", + "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "dev": true, + "requires": { + "acorn": "^6.4.1", + "normalize-path": "^3.0.0", + "postcss": "^7.0.16", + "source-map": "^0.6.0", + "through2": "^3.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "dev": true, + "requires": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + } + }, + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "@tinymce/tinymce-jquery": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-jquery/-/tinymce-jquery-2.0.0.tgz", + "integrity": "sha512-afxm4UVIsi8roxyFiZu+SX4pARyYRWDw3XsMFu4E2eQwuTNpO+jA7qdbqCx3zzcl68clie4jAPmxSUUiJMabEQ==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, + "autoprefixer": { + "version": "8.6.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.4.tgz", + "integrity": "sha512-9D0OoxWCqq9Okp9wD+igaCf6ZaNjYNFSCKxgMLAxAGqXwpapaZ+D0PBv265VHQLgam8a7gld4E6KgJJM6SKfQQ==", + "dev": true, + "requires": { + "browserslist": "3.2.8", + "caniuse-lite": "1.0.30000859", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.23", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true + }, + "axios": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", + "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "dev": true, + "requires": { + "follow-redirects": "1.5.0", + "is-buffer": "1.1.6" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browser-sync": { + "version": "2.24.5", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.24.5.tgz", + "integrity": "sha512-r6ZRYncfYRGerw4Rh5S8Q9x9WKDdrwH572hd3ofsYgn0Px6a6EqXiLBVTCss2+2a45G9ZgjRHSeo9YY56UpgKw==", + "dev": true, + "requires": { + "browser-sync-ui": "1.0.1", + "bs-recipes": "1.3.4", + "chokidar": "1.7.0", + "connect": "3.6.6", + "connect-history-api-fallback": "1.5.0", + "dev-ip": "1.0.1", + "easy-extender": "2.3.2", + "eazy-logger": "3.0.2", + "etag": "1.8.1", + "fresh": "0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "1.15.2", + "immutable": "3.8.2", + "localtunnel": "1.9.0", + "micromatch": "2.3.11", + "opn": "4.0.2", + "portscanner": "2.1.1", + "qs": "6.2.3", + "raw-body": "2.3.3", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "2.1.1", + "ua-parser-js": "0.7.17", + "yargs": "6.4.0" + }, + "dependencies": { + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "browser-sync-ui": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz", + "integrity": "sha512-RIxmwVVcUFhRd1zxp7m2FfLnXHf59x4Gtj8HFwTA//3VgYI3AKkaQAuDL8KDJnE59XqCshxZa13JYuIWtZlKQg==", + "dev": true, + "requires": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "1.5.0", + "immutable": "3.8.2", + "server-destroy": "1.0.1", + "socket.io-client": "2.0.4", + "stream-throttle": "0.1.3" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000859", + "electron-to-chromium": "1.3.50" + } + }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001332.tgz", + "integrity": "sha512-/0YiL5sYWdh4EAqCFezyL6+wbLOxVVuLwVNs7f6pyCoV3wRJAOyTeTbR2TGwxiEIpWtK5aGwS7AwhioGi+5MAg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000859", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000859.tgz", + "integrity": "sha512-BucSdVZocKyKAdThos0fx7Ds941M1jddFazv7U3stFqxyWOc2JrxVn87Qo02DzP9Txb4lw9jIQddh9IT4WA3dQ==", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.8" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.4", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "2.0.0", + "readable-stream": "2.3.6" + } + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crass": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/crass/-/crass-0.12.3.tgz", + "integrity": "sha512-0gOYgXVAr6KF7xNUv/+QmTrVsMowpuYu9y1SWzMHFrERzxTygqpeBTXI9CMg1NI1AwQ96ZrkaGHVT9eTC66+Tw==", + "dev": true, + "requires": { + "color-convert": "1.9.2", + "strong-data-uri": "1.0.6", + "svgo": "0.7.2" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "which": "1.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + } + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "csswring": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/csswring/-/csswring-6.0.3.tgz", + "integrity": "sha512-Cz2/8nVqI6li/t4hfZbPTQDF7FkE4qP534j1xbBnLxA1cYl51ZRSg0PTDVWzbzlSsR+tfV2Iv/w+0cTmfKS7JA==", + "dev": true, + "requires": { + "minimist": "1.2.0", + "onecolor": "3.0.5", + "postcss": "6.0.23" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "requires": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "1.0.4" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + } + } + }, + "easy-extender": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.2.tgz", + "integrity": "sha1-PTJI/r4rFZYHMW2PnPSRwWZIIh0=", + "dev": true, + "requires": { + "lodash": "3.10.1" + } + }, + "eazy-logger": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", + "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", + "dev": true, + "requires": { + "tfunk": "3.1.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.50", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz", + "integrity": "sha1-dDi3b5K0G5GfP73TUPvQdX2s3fc=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "1.3.3" + } + }, + "engine.io": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz", + "integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==", + "dev": true, + "requires": { + "accepts": "1.3.5", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "3.1.0", + "engine.io-parser": "2.1.2", + "ws": "3.3.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", + "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "3.1.0", + "engine.io-parser": "2.1.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "3.3.3", + "xmlhttprequest-ssl": "1.5.5", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", + "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary2": "1.0.3" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.4" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "0.1.1", + "color-support": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.0.0", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "1.0.0", + "is-glob": "3.1.0", + "micromatch": "3.1.10", + "resolve-dir": "1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "1.1.6" @@ -1824,6 +12697,12 @@ "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", "dev": true }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, "follow-redirects": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", @@ -1898,14 +12777,13 @@ "dev": true }, "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "3.0.1", - "universalify": "0.1.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "fs.realpath": { @@ -1934,7 +12812,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1955,12 +12834,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1975,17 +12856,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2102,7 +12986,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2114,6 +12999,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "1.0.1" } @@ -2128,6 +13014,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "1.1.11" } @@ -2135,12 +13022,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "5.1.1", "yallist": "3.0.2" @@ -2159,6 +13048,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2239,7 +13129,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2251,6 +13142,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1.0.2" } @@ -2336,7 +13228,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2368,29 +13261,31 @@ "dev": true, "optional": true }, - "string-width": { - "version": "1.0.2", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "safe-buffer": "5.1.1" } }, - "string_decoder": { - "version": "1.1.1", + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "5.1.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "2.1.1" } @@ -2434,12 +13329,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2455,6 +13352,12 @@ "rimraf": "2.6.2" } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -2741,10 +13644,9 @@ } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "growl": { "version": "1.10.5", @@ -2866,6 +13768,19 @@ "through2": "2.0.3" } }, + "gulp-cssnano": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/gulp-cssnano/-/gulp-cssnano-2.1.3.tgz", + "integrity": "sha512-r8qdX5pTXsBb/IRm9loE8Ijz8UiPW/URMC/bKJe4FPNHRaz4aEx8Bev03L0FYHd/7BSGu/ebmfumAkpGuTdenA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "cssnano": "^3.0.0", + "object-assign": "^4.0.1", + "plugin-error": "^1.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" + } + }, "gulp-if": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", @@ -3039,1997 +13954,3116 @@ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "gulp-sourcemaps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", + "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", + "dev": true, + "requires": { + "@gulp-sourcemaps/identity-map": "^2.0.1", + "@gulp-sourcemaps/map-sources": "^1.0.0", + "acorn": "^6.4.1", + "convert-source-map": "^1.0.0", + "css": "^3.0.0", + "debug-fabulous": "^1.0.0", + "detect-newline": "^2.0.0", + "graceful-fs": "^4.0.0", + "source-map": "^0.6.0", + "strip-bom-string": "^1.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "gulp-uglify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", + "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", + "dev": true, + "requires": { + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash": "4.17.10", + "make-error-cause": "1.2.2", + "through2": "2.0.3", + "uglify-js": "3.4.2", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.2", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.1" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.15.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "has-flag": "3.0.0" + "is-buffer": "1.1.6" } } } }, - "gulp-uglify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", - "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash": "4.17.10", - "make-error-cause": "1.2.2", - "through2": "2.0.3", - "uglify-js": "3.4.2", - "vinyl-sourcemaps-apply": "0.2.1" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.2", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", + "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.0" }, "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true } } }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "http-proxy": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", + "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.3.3", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "1.0.0", + "is-windows": "1.0.2" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "glogg": "1.0.1" + "binary-extensions": "1.11.0" } }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "chalk": "1.1.3", - "commander": "2.15.1", - "is-my-json-valid": "2.17.2", - "pinkie-promise": "2.0.1" + "builtin-modules": "1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "kind-of": "3.2.2" } }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "isarray": "2.0.1" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "sparkles": "1.0.1" + "is-primitive": "2.0.0" } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, - "has-value": { + "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "number-is-nan": "1.0.1" } }, - "has-values": { + "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "number-is-nan": "1.0.1" } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "is-extglob": "1.0.0" } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", "dev": true }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "parse-passwd": "1.0.0" + "kind-of": "3.2.2" } }, - "hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "3.3.2" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "depd": "1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": "1.5.0" + "isobject": "3.0.1" }, "dependencies": { - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "http-proxy": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", - "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" + "is-unc-path": "1.0.0" } }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", "dev": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.14.2" + "html-comment-regex": "^1.1.0" } }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "unc-path-regex": "0.1.2" } }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, - "in-publish": { + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "indent-string": { + "isobject": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "repeating": "2.0.1" + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "js-base64": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", + "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" + "argparse": "1.0.10", + "esprima": "2.7.3" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { - "is-relative": "1.0.0", - "is-windows": "1.0.2" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "kind-of": "3.2.2" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", "dev": true }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "is-buffer": "1.1.6" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { + "lcid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "invert-kv": "1.0.0" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "3.0.1", + "findup-sync": "2.0.0", + "fined": "1.1.0", + "flagged-respawn": "1.0.0", + "is-plain-object": "2.0.4", + "object.map": "1.0.1", + "rechoir": "0.6.2", + "resolve": "1.8.1" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "limiter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz", + "integrity": "sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "kind-of": "3.2.2" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "localtunnel": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.0.tgz", + "integrity": "sha512-wCIiIHJ8kKIcWkTQE3m1VRABvsH2ZuOkiOpZUofUCf6Q42v3VIZ+Q0YfX1Z4sYDRj0muiKL1bLvz1FeoxsPO0w==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "axios": "0.17.1", + "debug": "2.6.8", + "openurl": "1.1.1", + "yargs": "6.6.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", "dev": true }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" } }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", "dev": true }, - "is-my-json-valid": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", - "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "is-my-ip-valid": "1.0.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", "dev": true, "requires": { - "lodash.isfinite": "3.3.2" + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", "dev": true, "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } + "lodash._root": "3.0.1" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", "dev": true }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", "dev": true, "requires": { - "is-unc-path": "1.0.0" + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", "dev": true, "requires": { - "unc-path-regex": "0.1.2" + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "lolex": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", + "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==", "dev": true }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", "dev": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", "dev": true, "requires": { - "isarray": "1.0.0" + "make-error": "1.3.4" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "js-base64": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", - "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" + "object-visit": "1.0.1" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "math-expression-evaluator": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz", + "integrity": "sha512-M6AMrvq9bO8uL42KvQHPA2/SbAobA0R7gviUmPrcTcGfdwpaLitz4q2Euzx2lP9Oy88vxK3HOrsISgSwKsYS4A==", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", "dev": true }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" } }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } + "readable-stream": "2.3.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, - "just-extend": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", - "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "is-buffer": "1.1.6" + "mime-db": "1.33.0" } }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "invert-kv": "1.0.0" + "brace-expansion": "1.1.11" } }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "extend": "3.0.1", - "findup-sync": "2.0.0", - "fined": "1.1.0", - "flagged-respawn": "1.0.0", - "is-plain-object": "2.0.4", - "object.map": "1.0.1", - "rechoir": "0.6.2", - "resolve": "1.8.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, - "limiter": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz", - "integrity": "sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } } }, - "localtunnel": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.0.tgz", - "integrity": "sha512-wCIiIHJ8kKIcWkTQE3m1VRABvsH2ZuOkiOpZUofUCf6Q42v3VIZ+Q0YfX1Z4sYDRj0muiKL1bLvz1FeoxsPO0w==", + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", "dev": true, "requires": { - "axios": "0.17.1", - "debug": "2.6.8", - "openurl": "1.1.1", - "yargs": "6.6.0" + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" }, "dependencies": { "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" } }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" } } } }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true, - "requires": { - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9", - "lodash.restparam": "3.6.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._createassigner": "3.1.1", - "lodash.keys": "3.1.2" + "duplexer2": "0.0.2" } }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { - "lodash._root": "3.0.1" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "natives": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", + "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", "dev": true }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "nise": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", + "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "@sinonjs/formatio": "2.0.0", + "just-extend": "1.1.27", + "lolex": "2.7.0", + "path-to-regexp": "1.7.0", + "text-encoding": "0.6.4" } }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true + "node-gyp": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz", + "integrity": "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.79.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.1" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true + "node-sass": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", + "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.3", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.1", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.10.0", + "node-gyp": "3.7.0", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" + }, + "dependencies": { + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "1.2.1" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.10", + "minimatch": "3.0.4" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + } + } }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" + "abbrev": "1.1.1" } }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" + "hosted-git-info": "2.6.1", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, - "lolex": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", - "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "remove-trailing-separator": "1.1.0" } }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "make-error": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", - "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, - "make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, "requires": { - "make-error": "1.3.4" + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" } }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "map-obj": { + "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - } + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "2.3.6" - } + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } } }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", "dev": true }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "mime-db": "1.33.0" + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "array-each": "1.0.1", + "array-slice": "1.1.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-own": "1.0.0", + "make-iterator": "1.0.1" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "for-in": "1.0.2" } } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "minimist": "0.0.8" + "isobject": "3.0.1" }, "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - } + "ee-first": "1.1.1" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onecolor": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz", + "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY=", "dev": true }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "dev": true + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "dev": true, "requires": { - "duplexer2": "0.0.2" + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" } }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "0.1.5", + "sequencify": "0.0.7", + "stream-consume": "0.1.1" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", "dev": true }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "lcid": "1.0.0" } }, - "natives": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", - "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, - "nise": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.2.tgz", - "integrity": "sha512-BxH/DxoQYYdhKgVAfqVy4pzXRZELHOIewzoesxpjYvpU+7YOalQhGNPf7wAx8pLrTNPrHRDlLOkAl8UI0ZpXjw==", + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "just-extend": "1.1.27", - "lolex": "2.7.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" + "is-absolute": "1.0.0", + "map-cache": "0.2.2", + "path-root": "0.1.1" } }, - "node-gyp": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz", - "integrity": "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==", + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.79.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.1" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, - "node-sass": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", - "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "async-foreach": "0.1.3", - "chalk": "1.1.3", - "cross-spawn": "3.0.1", - "gaze": "1.1.3", - "get-stdin": "4.0.1", - "glob": "7.1.2", - "in-publish": "2.0.0", - "lodash.assign": "4.2.0", - "lodash.clonedeep": "4.5.0", - "lodash.mergewith": "4.6.1", - "meow": "3.7.0", - "mkdirp": "0.5.1", - "nan": "2.10.0", - "node-gyp": "3.7.0", - "npmlog": "4.1.2", - "request": "2.79.0", - "sass-graph": "2.2.4", - "stdout-stream": "1.4.0", - "true-case-path": "1.0.2" - }, - "dependencies": { - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "1.2.1" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "dev": true, - "requires": { - "glob": "7.1.2", - "lodash": "4.17.10", - "minimatch": "3.0.4" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - } + "error-ex": "1.3.2" } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "dev": true, "requires": { - "abbrev": "1.1.1" + "better-assert": "1.0.2" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "dev": true, "requires": { - "hosted-git-info": "2.6.1", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "better-assert": "1.0.2" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "pinkie-promise": "2.0.1" } }, - "normalize-range": { + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", "dev": true }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "dev": true, "requires": { - "are-we-there-yet": "1.1.5", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "1.1.0", + "arr-diff": "4.0.0", + "arr-union": "3.1.0", + "extend-shallow": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + } + } + }, + "portscanner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", + "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "dev": true, + "requires": { + "async": "1.5.2", + "is-number-like": "1.0.8" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.4.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "color-convert": "1.9.2" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" } } } }, - "object-path": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", - "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "isobject": "3.0.1" + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } } } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", "dev": true, "requires": { - "array-each": "1.0.1", - "array-slice": "1.1.0", - "for-own": "1.0.0", - "isobject": "3.0.1" + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" }, "dependencies": { - "for-own": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "for-in": "1.0.2" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } } } }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "for-own": "1.0.0", - "make-iterator": "1.0.1" + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" }, "dependencies": { - "for-own": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "for-in": "1.0.2" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" } } } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "isobject": "3.0.1" + "postcss": "^5.0.14" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } } } }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "wrappy": "1.0.2" + "postcss": "^5.0.4" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "onecolor": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz", - "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY=", - "dev": true - }, - "openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", - "dev": true - }, - "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "postcss": "^5.0.14" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "end-of-stream": "0.1.5", - "sequencify": "0.0.7", - "stream-consume": "0.1.1" + "postcss": "^5.0.16" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "lcid": "1.0.0" + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "postcss": "^5.0.4" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "dev": true, "requires": { - "is-absolute": "1.0.0", - "map-cache": "0.2.2", - "path-root": "0.1.1" + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "postcss": "^5.0.4" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", "dev": true, "requires": { - "error-ex": "1.3.2" + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", "dev": true }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", "dev": true, "requires": { - "better-assert": "1.0.2" + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "better-assert": "1.0.2" + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "path-root-regex": "0.1.2" + "postcss": "^5.0.5" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "isarray": "0.0.1" + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } } } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "pinkie": "2.0.4" + "postcss": "^5.0.4" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } } }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "dev": true, "requires": { - "ansi-colors": "1.1.0", - "arr-diff": "4.0.0", - "arr-union": "3.1.0", - "extend-shallow": "3.0.2" + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } } } }, - "portscanner": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", - "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", "dev": true, "requires": { - "async": "1.5.2", - "is-number-like": "1.0.8" + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", "dev": true, "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "color-convert": "1.9.2" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "has-flag": "^1.0.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^1.0.0" } } } @@ -5040,6 +17074,52 @@ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", "dev": true }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -5082,6 +17162,16 @@ "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", "dev": true }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "randomatic": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", @@ -5200,6 +17290,34 @@ "strip-indent": "1.0.1" } }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -5716,7 +17834,8 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.2.0.tgz", "integrity": "sha512-Z72B4a0l0IQe5uWi9yzcqX/Ml6K9e1Hp03NmkjJnRG3gDsKTX7KvLFZsVUmCaz0eqeXLLK089mwTsP1P1W+DUQ==", - "dev": true + "dev": true, + "requires": {} }, "snapdragon": { "version": "0.8.2", @@ -5962,6 +18081,15 @@ } } }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -6179,6 +18307,21 @@ } } }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -6190,15 +18333,6 @@ "strip-ansi": "3.0.1" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, "stringstream": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", @@ -6223,6 +18357,12 @@ "is-utf8": "0.2.1" } }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -6326,6 +18466,21 @@ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", "dev": true }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "tinymce": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.0.2.tgz", + "integrity": "sha512-i4OEzcTF6mGxZ+scumOoWiaI9HYn6uya980hJ+9jwnhgLbhBb+73ar2t9Ewfkns3DTl2Ez3r1pQs2tpT+ka29Q==" + }, "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", @@ -6432,6 +18587,12 @@ "dev": true, "optional": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -6509,6 +18670,18 @@ } } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, "unique-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", @@ -6516,10 +18689,9 @@ "dev": true }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, "unpipe": { "version": "1.0.0", @@ -6645,6 +18817,12 @@ "spdx-expression-parse": "3.0.0" } }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", diff --git a/package.json b/package.json index c8669d09..fc7661d6 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,12 @@ "version": "0.0.0", "description": "wordpress plugin for creating and taking quizzes", "main": "gulpfile.js", - "dependencies": {}, + "dependencies": { + "@tinymce/tinymce-jquery": "^2.0.0", + "fs-extra": "^10.1.0", + "jquery": "^3.6.0", + "tinymce": "^6.0.2" + }, "scripts": { "test": "mocha" }, @@ -17,10 +22,12 @@ "gulp-concat": "^2.6.0", "gulp-concat-util": "^0.5.5", "gulp-crass": "^0.2.2", + "gulp-cssnano": "^2.1.3", "gulp-insert": "^0.5.0", "gulp-plumber": "^1.2.0", "gulp-rename": "^1.2.2", "gulp-sass": "^4.0.1", + "gulp-sourcemaps": "^3.0.0", "gulp-uglify": "^3.0.0", "mocha": "^5.1.1", "run-sequence": "^2.2.1", diff --git a/public/quiz-create/class-enp_quiz-create.php b/public/quiz-create/class-enp_quiz-create.php index ba6098ab..1ef4c4e0 100755 --- a/public/quiz-create/class-enp_quiz-create.php +++ b/public/quiz-create/class-enp_quiz-create.php @@ -22,779 +22,818 @@ */ class Enp_quiz_Create { - /** - * The ID of this plugin. - * - * @since 0.0.1 - * @access protected - * @var string $plugin_name The ID of this plugin. - */ - protected $plugin_name; - - - public static $message, - $nonce, - $saved_quiz_id, - $user_action; - - /** - * Initialize the class and set its properties. - * - * @since 0.0.1 - * @param string $plugin_name The name of the plugin. - */ - public function __construct( $plugin_name ) { - - // set-up class - $this->plugin_name = $plugin_name; - - include_once(WP_CONTENT_DIR.'/enp-quiz-config.php'); - - add_action('init', array($this, 'set_enp_quiz_nonce'), 1); - add_action('init', array($this, 'add_enp_quiz_rewrite_tags')); - - // redirect to the page they should go to - add_action('template_redirect', array($this, 'enp_quiz_template_rewrite_catch' )); - - // add our ajax save to be available - add_action( 'wp_ajax_save_quiz', array($this, 'save_quiz'), 1 ); - add_action( 'wp_ajax_save_ab_test', array($this, 'save_ab_test'), 1 ); - // we're including this as a fallback for the other pages. + /** + * The ID of this plugin. + * + * @since 0.0.1 + * @access protected + * @var string $plugin_name The ID of this plugin. + */ + protected $plugin_name; + + + public static $message, + $nonce, + $saved_quiz_id, + $user_action; + + /** + * Initialize the class and set its properties. + * + * @since 0.0.1 + * @param string $plugin_name The name of the plugin. + */ + public function __construct( $plugin_name ) { + + // set-up class + $this->plugin_name = $plugin_name; + + include_once WP_CONTENT_DIR . '/enp-quiz-config.php'; + + add_action( 'init', array( $this, 'set_enp_quiz_nonce' ), 1 ); + add_action( 'init', array( $this, 'add_enp_quiz_rewrite_tags' ) ); + + // redirect to the page they should go to + add_action( 'template_redirect', array( $this, 'enp_quiz_template_rewrite_catch' ) ); + + // add our ajax save to be available + add_action( 'wp_ajax_save_quiz', array( $this, 'save_quiz' ), 1 ); + add_action( 'wp_ajax_save_ab_test', array( $this, 'save_ab_test' ), 1 ); + // we're including this as a fallback for the other pages. // process save, if necessary // if the enp-quiz-submit is posted, then they probably want to try to // save the quiz. Be nice, try to save the quiz. - if(isset($_POST['enp-quiz-submit'])) { - add_action('template_redirect', array($this, 'save_quiz'), 1); - } elseif(isset($_POST['enp-ab-test-submit'])) { - add_action('template_redirect', array($this, 'save_ab_test'), 1); - } - } - - public function set_enp_quiz_nonce() { - //Start the session - session_start(); - //Start the class - self::$nonce = new Enp_quiz_Nonce(); - } - - public function get_enp_quiz_nonce() { - $return = true; - return self::$nonce->outputKey($return); - } - - /** - * Register and enqueue the stylesheets for quiz create. - * - * @since 0.0.1 - */ - public function enqueue_styles() { - - wp_register_style( $this->plugin_name.'-quiz-create', plugin_dir_url( __FILE__ ) . 'css/enp_quiz-create.min.css', array(), ENP_QUIZ_VERSION ); - wp_enqueue_style( $this->plugin_name.'-quiz-create' ); - - } - - // if we're not an admin, override WP's margin-top reserved for the admin bar - public function override_wp_admin_bar_css() { - print_r(''); - } - - /** - * Register and enqueue the JavaScript for quiz create. - * - * @since 0.0.1 - */ - public function enqueue_scripts() { - - - - } - /* - * Adds a enp_quiz_template parameter for WordPress to look for - * ?enp_quiz_template=dashboard - */ - public function add_enp_quiz_rewrite_tags(){ - add_rewrite_tag( '%enp_quiz_template%', '([^/]+)' ); - add_rewrite_tag( '%enp_quiz_id%', '([^/]+)' ); - } - - /* - * If we find a enp_quiz_template parameter, process it - * and use the right template file - * This deletes the_title and the_content and replaces it - * with our own HTML so we can use their default template, but - * use our own content injected into their template. - * - * @since 0.0.1 - */ - public function enp_quiz_template_rewrite_catch() { - global $wp_query; - // see if enp_quiz_template is one of the query_vars posted - if ( array_key_exists( 'enp_quiz_template', $wp_query->query_vars ) ) { - // if it's there, then see what the value is - $this->template = $wp_query->get( 'enp_quiz_template' ); - $this->template_file = ENP_QUIZ_CREATE_TEMPLATES_PATH.'/'.$this->template.'.php'; - - // make sure we have a user - // and if they're accessing a quiz, that they own it - $this->validate_user(); - - // make sure there's something there - if(!empty($this->template)) { - // convert the dashes (-) to underscores (_) so it will match a function - $this->template_underscored = str_replace('-','_',$this->template); - - // load all the resources we need - $this->load_quiz_create_resources(); - // load the template - $this->load_template(); - - } - } - } - - /* - * Load all the scripts, css, and any other filters/hooks that - * need to run on a quiz create page - */ - public function load_quiz_create_resources() { - // load take quiz styles - add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); - // load take quiz scripts - add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); - // custom action hook for displaying messages - add_action( 'enp_quiz_display_messages', array($this, 'display_messages' )); - // set title tag - add_filter( 'document_title_parts', array($this, 'set_title_tag')); - // don't remove wp_admin bar for admins - $is_admin_user = current_user_can( 'manage_options' ); - if ( $is_admin_user === false) { - add_filter('show_admin_bar', '__return_false'); - add_action('wp_head', array($this, 'override_wp_admin_bar_css')); - } - - } - - /** - * Get the requested quiz_id from the URL - * @return quiz_id if found, else false - * @since 0.0.1 - **/ - public function enp_quiz_id_rewrite_catch() { - global $wp_query; - $quiz_id = false; - // see if enp_quiz_template is one of the query_vars posted - if ( array_key_exists( 'enp_quiz_id', $wp_query->query_vars ) ) { - // if it's there, then see what the value is - $quiz_id = $wp_query->get( 'enp_quiz_id' ); - } - - return $quiz_id; - } - - /** - * Get the requested ab_test_id from the URL - * @return quiz_id if found, else false - * @since 0.0.1 - **/ - public function enp_ab_test_id_rewrite_catch() { - // same as the quiz_id request right now - return $this->enp_quiz_id_rewrite_catch(); - } - - /* - * Load the requested template file. - * If it's not found, show the dashboard instead - * @since 0.0.1 - */ - public function load_template() { - // load our default page template instead of their theme template - add_filter('template_include', array($this, 'load_page_template'), 1, 1); - // add enp-quiz class to the body - add_filter('body_class', array($this, 'add_enp_quiz_body_class')); - // check to make sure the template file exists - if(file_exists($this->template_file)) { - // set our classname to load (ie - load_dashboard) - $load_template = 'load_'.$this->template_underscored; - // load the template dynamically based on the template name - $this->$load_template(); - } else { - // if we can't find it, fallback to the dashboard - $this->load_dashboard(); - } - } - - /* - * Sets Title Tag attribute based on template filename - */ - public function set_title_tag($title) { - // $title is an array returned by WP of all the pieces - // we just need to change the title attribute - $page_title = str_replace('-',' ',$this->template); - $page_title = ucwords($page_title); - $title['title'] = $page_title; - - return $title; - } - - /* - * Loads quiz object based on url query - */ - public function load_quiz() { + if ( isset( $_POST['enp-quiz-submit'] ) ) { + add_action( 'template_redirect', array( $this, 'save_quiz' ), 1 ); + } elseif ( isset( $_POST['enp-ab-test-submit'] ) ) { + add_action( 'template_redirect', array( $this, 'save_ab_test' ), 1 ); + } + } + + public function set_enp_quiz_nonce() { + // Start the session + session_start(); + // Start the class + self::$nonce = new Enp_quiz_Nonce(); + } + + public function get_enp_quiz_nonce() { + $return = true; + return self::$nonce->outputKey( $return ); + } + + /** + * Register and enqueue the stylesheets for quiz create. + * + * @since 0.0.1 + */ + public function enqueue_styles() { + + wp_register_style( $this->plugin_name . '-quiz-create', plugin_dir_url( __FILE__ ) . 'css/enp_quiz-create.min.css', array(), ENP_QUIZ_VERSION ); + wp_enqueue_style( $this->plugin_name . '-quiz-create' ); + + } + + // if we're not an admin, override WP's margin-top reserved for the admin bar + public function override_wp_admin_bar_css() { + print_r( '' ); + } + /** + * Register and enqueue the JavaScript for quiz create. + * + * @since 0.0.1 + */ + public function enqueue_scripts() { + + } + /* + * Adds a enp_quiz_template parameter for WordPress to look for + * ?enp_quiz_template=dashboard + */ + public function add_enp_quiz_rewrite_tags() { + add_rewrite_tag( '%enp_quiz_template%', '([^/]+)' ); + add_rewrite_tag( '%enp_quiz_id%', '([^/]+)' ); + } + + /* + * If we find a enp_quiz_template parameter, process it + * and use the right template file + * This deletes the_title and the_content and replaces it + * with our own HTML so we can use their default template, but + * use our own content injected into their template. + * + * @since 0.0.1 + */ + public function enp_quiz_template_rewrite_catch() { + global $wp_query; + // see if enp_quiz_template is one of the query_vars posted + if ( array_key_exists( 'enp_quiz_template', $wp_query->query_vars ) ) { + // if it's there, then see what the value is + $this->template = $wp_query->get( 'enp_quiz_template' ); + $this->template_file = ENP_QUIZ_CREATE_TEMPLATES_PATH . '/' . $this->template . '.php'; + + // make sure we have a user + // and if they're accessing a quiz, that they own it + $this->validate_user(); + + // make sure there's something there + if ( ! empty( $this->template ) ) { + // convert the dashes (-) to underscores (_) so it will match a function + $this->template_underscored = str_replace( '-', '_', $this->template ); + + // load all the resources we need + $this->load_quiz_create_resources(); + // load the template + $this->load_template(); + + } + } + } + + /* + * Load all the scripts, css, and any other filters/hooks that + * need to run on a quiz create page + */ + public function load_quiz_create_resources() { + // TinyMCE js enqueue + wp_enqueue_script( 'tinymce_cloud', 'https://cdn.tiny.cloud/1/tpynz31lszn8p1eu7c0q58q5ua138xorj80slits2knm9zao/tinymce/5/tinymce.min.js', false ); + // load take quiz styles + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) ); + // load take quiz scripts + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); + // custom action hook for displaying messages + add_action( 'enp_quiz_display_messages', array( $this, 'display_messages' ) ); + // set title tag + add_filter( 'document_title_parts', array( $this, 'set_title_tag' ) ); + // don't remove wp_admin bar for admins + $is_admin_user = current_user_can( 'manage_options' ); + if ( $is_admin_user === false ) { + add_filter( 'show_admin_bar', '__return_false' ); + add_action( 'wp_head', array( $this, 'override_wp_admin_bar_css' ) ); + } + + } + + /** + * Get the requested quiz_id from the URL + * + * @return quiz_id if found, else false + * @since 0.0.1 + **/ + public function enp_quiz_id_rewrite_catch() { + global $wp_query; + $quiz_id = false; + // see if enp_quiz_template is one of the query_vars posted + if ( array_key_exists( 'enp_quiz_id', $wp_query->query_vars ) ) { + // if it's there, then see what the value is + $quiz_id = $wp_query->get( 'enp_quiz_id' ); + } + + return $quiz_id; + } + + /** + * Get the requested ab_test_id from the URL + * + * @return quiz_id if found, else false + * @since 0.0.1 + **/ + public function enp_ab_test_id_rewrite_catch() { + // same as the quiz_id request right now + return $this->enp_quiz_id_rewrite_catch(); + } + + /* + * Load the requested template file. + * If it's not found, show the dashboard instead + * @since 0.0.1 + */ + public function load_template() { + // load our default page template instead of their theme template + add_filter( 'template_include', array( $this, 'load_page_template' ), 1, 1 ); + // add enp-quiz class to the body + add_filter( 'body_class', array( $this, 'add_enp_quiz_body_class' ) ); + // check to make sure the template file exists + if ( file_exists( $this->template_file ) ) { + // set our classname to load (ie - load_dashboard) + $load_template = 'load_' . $this->template_underscored; + // load the template dynamically based on the template name + $this->$load_template(); + } else { + // if we can't find it, fallback to the dashboard + $this->load_dashboard(); + } + } + + /* + * Sets Title Tag attribute based on template filename + */ + public function set_title_tag( $title ) { + // $title is an array returned by WP of all the pieces + // we just need to change the title attribute + $page_title = str_replace( '-', ' ', $this->template ); + $page_title = ucwords( $page_title ); + $title['title'] = $page_title; + + return $title; + } + + /* + * Loads quiz object based on url query + */ + public function load_quiz() { // prepare the quiz object $quiz_id = $this->enp_quiz_id_rewrite_catch(); - // set-up variables - $quiz = new Enp_quiz_Quiz($quiz_id); - // check to see if the user owns this quiz + // set-up variables + $quiz = new Enp_quiz_Quiz( $quiz_id ); + // check to see if the user owns this quiz return $quiz; } - /* - * Loads quiz object based on url query - */ - public function load_ab_test_object() { + /* + * Loads quiz object based on url query + */ + public function load_ab_test_object() { // prepare the quiz object $ab_test_id = $this->enp_ab_test_id_rewrite_catch(); - // set-up variables - $ab_test = new Enp_quiz_AB_test($ab_test_id); - // check to see if the user owns this quiz + // set-up variables + $ab_test = new Enp_quiz_AB_test( $ab_test_id ); + // check to see if the user owns this quiz return $ab_test; } - /* - * Checks to see if a quiz is valid or not, - * then redirects to quiz create page if invalid - * - * @param $quiz = quiz object - * @param $publish = 'publish' Publish quiz on URL if valid - * if they clicked the publish link instead of the button, go ahead and publish it - * and redirect to the publish page (if JS is on, we'll just divert the link to click - * the publish button) - * It won't SAVE their previous settings, but they will still be able to edit them. - */ - public function validate_quiz_redirect($quiz, $publish = false) { - $response = new Enp_quiz_Save_quiz_Response(); - $validate = $response->validate_quiz_and_questions($quiz); - if($validate === 'invalid') { - // combine the arrays - if(is_array(self::$message['error'])) { - self::$message['error'] = array_merge(self::$message['error'], $response->get_error_messages()); - } else { - self::$message['error'] = $response->get_error_messages(); - } - - // check to make sure there's actually a quiz... - if($quiz->get_quiz_id() === null) { - // nope... redirect to quiz create - $this->redirect_to_quiz_create('new'); - } else { - // There's a quiz, it's just an invalid quiz. - // Send them back to the create page to fix it. - $this->redirect_to_quiz_create($quiz->get_quiz_id()); - } - - } elseif($validate === 'valid' && $publish === 'publish') { - - // let's just send them to the preview page if they're trying to - // access the publish URL on a NON-published quiz - if($quiz->get_quiz_status() !== 'published') { - // add error message - // add error message - self::$message['error'][] = "Please use the Publish Button to publish a quiz instead of the Breadcrumb Publish link."; - // redirect to preview page - $this->redirect_to_quiz_preview($quiz->get_quiz_id()); - } - } - } - - /* - * If a quiz is published, we won't let them access the create page - * and redirect them to preview page - */ - public function quiz_published_redirect($quiz) { - if($quiz->get_quiz_status() === 'published') { - // add error message - self::$message['note'][] = "You can only make text and image changes to published quizzes. Please create a new quiz if you need to add questions or change answers."; + /* + * Checks to see if a quiz is valid or not, + * then redirects to quiz create page if invalid + * + * @param $quiz = quiz object + * @param $publish = 'publish' Publish quiz on URL if valid + * if they clicked the publish link instead of the button, go ahead and publish it + * and redirect to the publish page (if JS is on, we'll just divert the link to click + * the publish button) + * It won't SAVE their previous settings, but they will still be able to edit them. + */ + public function validate_quiz_redirect( $quiz, $publish = false ) { + $response = new Enp_quiz_Save_quiz_Response(); + $validate = $response->validate_quiz_and_questions( $quiz ); + if ( $validate === 'invalid' ) { + // combine the arrays + if ( is_array( self::$message['error'] ) ) { + self::$message['error'] = array_merge( self::$message['error'], $response->get_error_messages() ); + } else { + self::$message['error'] = $response->get_error_messages(); + } + + // check to make sure there's actually a quiz... + if ( $quiz->get_quiz_id() === null ) { + // nope... redirect to quiz create + $this->redirect_to_quiz_create( 'new' ); + } else { + // There's a quiz, it's just an invalid quiz. + // Send them back to the create page to fix it. + $this->redirect_to_quiz_create( $quiz->get_quiz_id() ); + } + } elseif ( $validate === 'valid' && $publish === 'publish' ) { + + // let's just send them to the preview page if they're trying to + // access the publish URL on a NON-published quiz + if ( $quiz->get_quiz_status() !== 'published' ) { + // add error message + // add error message + self::$message['error'][] = 'Please use the Publish Button to publish a quiz instead of the Breadcrumb Publish link.'; + // redirect to preview page + $this->redirect_to_quiz_preview( $quiz->get_quiz_id() ); + } + } + } + + /* + * If a quiz is published, we won't let them access the create page + * and redirect them to preview page + */ + public function quiz_published_redirect( $quiz ) { + if ( $quiz->get_quiz_status() === 'published' ) { + // add error message + self::$message['note'][] = 'You can only make text and image changes to published quizzes. Please create a new quiz if you need to add questions or change answers.'; // uh oh, invalid quiz. Send them back to the create page to fix it. // $this->redirect_to_quiz_preview($quiz->get_quiz_id()); } - } - - /* - * for child classes to set the variable on the user_action - */ - public function load_user_action() { - if(!empty(self::$user_action)) { - return self::$user_action; - } elseif(isset($_GET['enp_user_action'])) { - return $_GET['enp_user_action']; - } else { - return false; - } - - } - - public function add_enp_quiz_body_class($classes) { - $classes[] = 'enp-quiz'; - $classes[] = 'enp-'.$this->template; - return $classes; - } - - public function load_page_template() { - return ENP_QUIZ_CREATE_MAIN_TEMPLATE_PATH; - } - - public function load_ab_test() { - include_once(dirname(__FILE__).'/includes/class-enp_quiz-ab_test_view.php'); - new Enp_quiz_AB_test_view(); - } - - public function load_ab_results() { - include_once(dirname(__FILE__).'/includes/class-enp_quiz-quiz_results.php'); - include_once(dirname(__FILE__).'/includes/class-enp_quiz-ab_results.php'); - new Enp_quiz_AB_results(); - } - - public function load_dashboard() { - include_once(dirname(__FILE__).'/includes/class-enp_quiz-dashboard.php'); - new Enp_quiz_Dashboard(); - } - - public function load_quiz_create() { - $this->load_breadcrumbs(); - include_once(dirname(__FILE__).'/includes/class-enp_quiz-quiz_create.php'); - - new Enp_quiz_Quiz_create(); - } - - public function load_quiz_preview() { - $this->load_breadcrumbs(); - include_once(dirname(__FILE__).'/includes/class-enp_quiz-quiz_preview.php'); - new Enp_quiz_Quiz_preview(); - } - - public function load_quiz_publish() { - $this->load_breadcrumbs(); - include_once(dirname(__FILE__).'/includes/class-enp_quiz-quiz_publish.php'); - new Enp_quiz_Quiz_publish(); - } - - public function load_quiz_results() { - include_once(dirname(__FILE__).'/includes/class-enp_quiz-quiz_results.php'); - new Enp_quiz_Quiz_results(); - } - - public function load_breadcrumbs() { - include_once(dirname(__FILE__).'/includes/class-enp_quiz-breadcrumbs.php'); - } - - - public function save_quiz() { - // make sure they're logged in and own this quiz - // returns current_user_id if valid - $user_id = $this->validate_user(); - - $params = array(); - - if(isset($_POST['enp_quiz'])) { - $posted_quiz = $_POST['enp_quiz']; - if(isset($posted_quiz['new_quiz'])) { - $new_quiz_flag = $posted_quiz['new_quiz']; - } else { - $new_quiz_flag = '0'; - } - } - if(isset($_POST['enp_question'])) { - $posted_question = $_POST['enp_question']; - } - - if(isset($_POST['enp-quiz-submit'])) { - $posted_user_action = $_POST['enp-quiz-submit']; - } - - if(isset($_POST['enp_quiz_nonce'])) { - $posted_nonce = $_POST['enp_quiz_nonce']; - } - - //Is it a POST request? - if($_SERVER['REQUEST_METHOD'] === 'POST') { - - //Validate the form key - if(!isset($posted_nonce) || !self::$nonce->validate($posted_nonce)) { - // Form key is invalid, - // return them to the page (they're probably refreshing the page) - self::$message['error'][] = 'Quiz was not resaved'; - - return false; - } - } - // initiate the save_quiz object - // get access to wpdb - global $wpdb; - // set-up an empty array for our quiz submission - $quiz = array(); - - // extract values - // set the date_time to pass - $date_time = date("Y-m-d H:i:s"); - // build our array to save - if(isset($posted_quiz)) { - $quiz = array( - 'quiz' => $posted_quiz, - 'quiz_updated_by' => $user_id, - 'quiz_updated_at' => $date_time, - ); - } - - if(isset($posted_question) && !empty($posted_question)) { - $quiz['question'] = $posted_question; - } - - if(isset($posted_user_action) && !empty($posted_user_action)) { - // get the value of the button they clicked - $quiz['user_action'] = $posted_user_action; - } else { - // no submit button clicked? Should never happen - self::$message['error'][] = 'The form was not submitted right. Please contact our support and let them know how you reached this error'; - return false; - } - - // initiate the save_quiz object - $save_quiz = new Enp_quiz_Save_quiz(); - // save the quiz by passing our $quiz array to the save function - $response = $save_quiz->save($quiz); - // set it as our messages to return to the user - self::$message = $this->set_message($response); - - // get the ID of the quiz that was just created (if there) - $quiz_id = $response->quiz_id; - // set-up vars for our next steps - $save_action = $response->action; - // set the user_action so we know what the user was wanting to do - self::$user_action = $response->user_action; - - // check to see if we have a successful save response from the save class - // REMEMBER: A successful save can still have an error message - // such as "Quiz Updated. Hey! You don't have any questions though!" - if($response->status !== 'success') { - // No successful save, so return them to the same page and display error messages - return false; - } - //*************************// - // SUCCESS! Now what...? // - //*************************// - - if (defined('DOING_AJAX') && DOING_AJAX) { - $json_response = $response; - $json_response = json_encode($json_response); - wp_send_json($json_response); - // always end ajax with exit() - exit(); - } - // if they want to go to the preview page AND there are no errors, - // let them move on to the preview page - elseif(self::$user_action['action'] === 'next' && self::$user_action['element'] === 'preview' && empty(self::$message['error'])) { - // unset the cookies for the current quiz - // in case they deleted questions and just in general - // to make it feel as expected (starting quiz from beginning) - $preview_quiz = new Enp_quiz_Quiz($quiz_id); - $this->unset_quiz_take_cookies($preview_quiz); - $this->redirect_to_quiz_preview($quiz_id); - } - // if they want to move on to the quiz-publish page and there are no errors, let them - elseif(self::$user_action['action'] === 'next' && self::$user_action['element'] === 'publish' && empty(self::$message['error'])) { - // unset the cookies for the current quiz - $published_quiz = new Enp_quiz_Quiz($quiz_id); - $this->unset_quiz_take_cookies($published_quiz); - // redirect to the quiz publish page - $this->redirect_to_quiz_publish($quiz_id); - } - // catch if we're just creating the new quiz, send them to the new quiz page - elseif($save_action === 'insert' || $new_quiz_flag === '1') { - // they don't want to move on yet, but they're inserting, - // so we need to send them to their newly created quiz create page - $this->redirect_to_quiz_create($quiz_id); - } - // we're just updating the same page, return false to send them back - else { - // we have errors! Oh no! Send them back to fix it - return false; - } - - } - - protected function redirect_to_quiz_create($quiz_id) { - // set a messages array to pass to url on redirect - $url_query = http_build_query(array('enp_messages' => self::$message, 'enp_user_action'=> self::$user_action)); - // they just created a new page (quiz) so we need to redirect them to it and post our messages - wp_redirect( ENP_QUIZ_CREATE_URL.$quiz_id.'/?'.$url_query ); - exit; - } - - protected function redirect_to_quiz_preview($quiz_id) { - // set a messages array to pass to url on redirect - $url_query = http_build_query(array('enp_messages' => self::$message, 'enp_user_action'=> self::$user_action)); - - wp_redirect( ENP_QUIZ_PREVIEW_URL.$quiz_id.'/?'.$url_query ); - exit; - } - - protected function redirect_to_quiz_publish($quiz_id) { - // set a messages array to pass to url on redirect - $url_query = http_build_query(array('enp_messages' => self::$message, 'enp_user_action'=> self::$user_action)); - wp_redirect( ENP_QUIZ_PUBLISH_URL.$quiz_id.'/?'.$url_query ); - exit; - } - - - public function save_ab_test() { - // make sure they're logged in and own this quiz - // returns current_user_id if valid - $user_id = $this->validate_user(); - - if(isset($_POST['enp_quiz_nonce'])) { - $posted_nonce = $_POST['enp_quiz_nonce']; - } - - //Is it a POST request? - if($_SERVER['REQUEST_METHOD'] === 'POST') { - - //Validate the form key - if(!isset($posted_nonce) || !self::$nonce->validate($posted_nonce)) { - // Form key is invalid, - // return them to the page (they're probably refreshing the page) - self::$message['error'][] = 'AB Test was not saved'; - - return false; - } - } - - $params = $_POST; - $params['ab_test_updated_by'] = $user_id; - $save_ab_test = new Enp_quiz_Save_ab_test(); - if($params['enp-ab-test-submit'] === 'enp-ab-test-create') { - $response = $save_ab_test->save($params); - } elseif($params['enp-ab-test-submit'] === 'delete-ab-test') { - $response = $save_ab_test->delete($params); - } else { - self::$message['error'][] = 'We\'re not sure what you want to do. Please contact us and let us know how you got to this error message.'; - } - - self::$message = $response['message']; - - if (defined('DOING_AJAX') && DOING_AJAX) { - $json_response = $response; - $json_response = json_encode($json_response); - wp_send_json($json_response); - // always end ajax with exit() - exit(); - } - // if we're not doing AJAX, find out what we need to do - elseif(empty(self::$message['error']) && $response['status'] === 'success' && $response['action'] === 'insert' && isset($response['ab_test_id'])) { - // successful insert, so redirect them to the embed code section of the results page - // set a messages array to pass to url on redirect - $url_query = http_build_query(array('enp_messages' => self::$message, 'enp_user_action' => 'ab_test_created')); - // they just created a new page (quiz) so we need to redirect them to it and post our messages - wp_redirect( ENP_AB_RESULTS_URL.$response['ab_test_id'].'/?'.$url_query ); - exit; - } - - return $response; - - } - - /** - * Set the success/error message(s) off of the response from quiz_save - * @param $response (object) response from quiz_save - * @return messages set - */ - public function set_message($response) { - if(isset($response->message)) { - return $response->message; - } else { - return false; - } - } - - /** - * Process any error/success messages and output - * them to the browser. - * @return false if message, HTML output with messages if found - * @usage Display in templates using an action hook - * do_action('enp_quiz_display_messages'); - * To set error messages from child classes, add - * parent::$messages['error'][] = 'error message'; - */ - public function display_messages() { - // try to get self::$message first bc they might - // have reloaded a page with a $_GET variable or something - // and we want our self::$message ones to override that - if(!empty(self::$message)) { - // check for self first - $messages = self::$message; - } elseif(isset($_GET['enp_messages'])) { - // check URL second - $messages = $_GET['enp_messages']; - } else { - // no messages. Fail. - return false; - } + } + + /* + * for child classes to set the variable on the user_action + */ + public function load_user_action() { + if ( ! empty( self::$user_action ) ) { + return self::$user_action; + } elseif ( isset( $_GET['enp_user_action'] ) ) { + return $_GET['enp_user_action']; + } else { + return false; + } + + } + + public function add_enp_quiz_body_class( $classes ) { + $classes[] = 'enp-quiz'; + $classes[] = 'enp-' . $this->template; + return $classes; + } + + public function load_page_template() { + return ENP_QUIZ_CREATE_MAIN_TEMPLATE_PATH; + } + + public function load_ab_test() { + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-ab_test_view.php'; + new Enp_quiz_AB_test_view(); + } + + public function load_ab_results() { + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-quiz_results.php'; + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-ab_results.php'; + new Enp_quiz_AB_results(); + } + + public function load_dashboard() { + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-dashboard.php'; + new Enp_quiz_Dashboard(); + } + + public function load_quiz_create() { + $this->load_breadcrumbs(); + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-quiz_create.php'; + + new Enp_quiz_Quiz_create(); + } + + public function load_quiz_preview() { + $this->load_breadcrumbs(); + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-quiz_preview.php'; + new Enp_quiz_Quiz_preview(); + } + + public function load_quiz_publish() { + $this->load_breadcrumbs(); + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-quiz_publish.php'; + new Enp_quiz_Quiz_publish(); + } + + public function load_quiz_results() { + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-quiz_results.php'; + new Enp_quiz_Quiz_results(); + } + + public function load_breadcrumbs() { + include_once dirname( __FILE__ ) . '/includes/class-enp_quiz-breadcrumbs.php'; + } + + + public function save_quiz() { + // make sure they're logged in and own this quiz + // returns current_user_id if valid + $user_id = $this->validate_user(); + + $params = array(); + + if ( isset( $_POST['enp_quiz'] ) ) { + $posted_quiz = $_POST['enp_quiz']; + if ( isset( $posted_quiz['new_quiz'] ) ) { + $new_quiz_flag = $posted_quiz['new_quiz']; + } else { + $new_quiz_flag = '0'; + } + } + + if ( isset( $_POST['enp_question'] ) ) { + $posted_question = $_POST['enp_question']; + } + + if ( isset( $_POST['enp-quiz-submit'] ) ) { + $posted_user_action = $_POST['enp-quiz-submit']; + } + + if ( isset( $_POST['enp_quiz_nonce'] ) ) { + $posted_nonce = $_POST['enp_quiz_nonce']; + } + + // Is it a POST request? + if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) { + + // Validate the form key + if ( ! isset( $posted_nonce ) || ! self::$nonce->validate( $posted_nonce ) ) { + // Form key is invalid, + // return them to the page (they're probably refreshing the page) + self::$message['error'][] = 'Quiz was not resaved'; + + return false; + } + } + // initiate the save_quiz object + // get access to wpdb + global $wpdb; + // set-up an empty array for our quiz submission + $quiz = array(); + + // extract values + // set the date_time to pass + $date_time = date( 'Y-m-d H:i:s' ); + // build our array to save + if ( isset( $posted_quiz ) ) { + $quiz = array( + 'quiz' => $posted_quiz, + 'quiz_updated_by' => $user_id, + 'quiz_updated_at' => $date_time, + ); + } + + if ( isset( $posted_question ) && ! empty( $posted_question ) ) { + $quiz['question'] = $posted_question; + } + + if ( isset( $posted_user_action ) && ! empty( $posted_user_action ) ) { + // get the value of the button they clicked + $quiz['user_action'] = $posted_user_action; + } else { + // no submit button clicked? Should never happen + self::$message['error'][] = 'The form was not submitted right. Please contact our support and let them know how you reached this error'; + return false; + } + + // initiate the save_quiz object + // // // // // // // // // // // // // + // At this point, we need to exclude the question_exlanation from being stripped of its HTML content. + $save_quiz = new Enp_quiz_Save_quiz(); + // save the quiz by passing our $quiz array to the save function + + $response = $save_quiz->save( $quiz ); + + // set it as our messages to return to the user + self::$message = $this->set_message( $response ); + + // get the ID of the quiz that was just created (if there) + $quiz_id = $response->quiz_id; + // set-up vars for our next steps + $save_action = $response->action; + // set the user_action so we know what the user was wanting to do + self::$user_action = $response->user_action; + + // check to see if we have a successful save response from the save class + // REMEMBER: A successful save can still have an error message + // such as "Quiz Updated. Hey! You don't have any questions though!" + if ( $response->status !== 'success' ) { + // No successful save, so return them to the same page and display error messages + return false; + } + + // *************************// + // SUCCESS! Now what...? // + // *************************// + + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + $json_response = $response; + $json_response = json_encode( $json_response ); + wp_send_json( $json_response ); + // always end ajax with exit() + exit(); + } + // if they want to go to the preview page AND there are no errors, + // let them move on to the preview page + elseif ( self::$user_action['action'] === 'next' && self::$user_action['element'] === 'preview' && empty( self::$message['error'] ) ) { + // unset the cookies for the current quiz + // in case they deleted questions and just in general + // to make it feel as expected (starting quiz from beginning) + $preview_quiz = new Enp_quiz_Quiz( $quiz_id ); + $this->unset_quiz_take_cookies( $preview_quiz ); + $this->redirect_to_quiz_preview( $quiz_id ); + } + // if they want to move on to the quiz-publish page and there are no errors, let them + elseif ( self::$user_action['action'] === 'next' && self::$user_action['element'] === 'publish' && empty( self::$message['error'] ) ) { + // unset the cookies for the current quiz + $published_quiz = new Enp_quiz_Quiz( $quiz_id ); + $this->unset_quiz_take_cookies( $published_quiz ); + // redirect to the quiz publish page + $this->redirect_to_quiz_publish( $quiz_id ); + } + // catch if we're just creating the new quiz, send them to the new quiz page + elseif ( $save_action === 'insert' || $new_quiz_flag === '1' ) { + // they don't want to move on yet, but they're inserting, + // so we need to send them to their newly created quiz create page + $this->redirect_to_quiz_create( $quiz_id ); + } + // we're just updating the same page, return false to send them back + else { + // we have errors! Oh no! Send them back to fix it + return false; + } + } + + protected function redirect_to_quiz_create( $quiz_id ) { + // set a messages array to pass to url on redirect + $url_query = http_build_query( + array( + 'enp_messages' => self::$message, + 'enp_user_action' => self::$user_action, + ) + ); + // they just created a new page (quiz) so we need to redirect them to it and post our messages + wp_redirect( ENP_QUIZ_CREATE_URL . $quiz_id . '/?' . $url_query ); + exit; + } + + protected function redirect_to_quiz_preview( $quiz_id ) { + // set a messages array to pass to url on redirect + $url_query = http_build_query( + array( + 'enp_messages' => self::$message, + 'enp_user_action' => self::$user_action, + ) + ); + + wp_redirect( ENP_QUIZ_PREVIEW_URL . $quiz_id . '/?' . $url_query ); + exit; + } + + protected function redirect_to_quiz_publish( $quiz_id ) { + // set a messages array to pass to url on redirect + $url_query = http_build_query( + array( + 'enp_messages' => self::$message, + 'enp_user_action' => self::$user_action, + ) + ); + wp_redirect( ENP_QUIZ_PUBLISH_URL . $quiz_id . '/?' . $url_query ); + exit; + } + + + public function save_ab_test() { + // make sure they're logged in and own this quiz + // returns current_user_id if valid + $user_id = $this->validate_user(); + + if ( isset( $_POST['enp_quiz_nonce'] ) ) { + $posted_nonce = $_POST['enp_quiz_nonce']; + } + + // Is it a POST request? + if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) { + + // Validate the form key + if ( ! isset( $posted_nonce ) || ! self::$nonce->validate( $posted_nonce ) ) { + // Form key is invalid, + // return them to the page (they're probably refreshing the page) + self::$message['error'][] = 'AB Test was not saved'; + + return false; + } + } + + $params = $_POST; + $params['ab_test_updated_by'] = $user_id; + $save_ab_test = new Enp_quiz_Save_ab_test(); + if ( $params['enp-ab-test-submit'] === 'enp-ab-test-create' ) { + $response = $save_ab_test->save( $params ); + } elseif ( $params['enp-ab-test-submit'] === 'delete-ab-test' ) { + $response = $save_ab_test->delete( $params ); + } else { + self::$message['error'][] = 'We\'re not sure what you want to do. Please contact us and let us know how you got to this error message.'; + } + + self::$message = $response['message']; + + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + $json_response = $response; + $json_response = json_encode( $json_response ); + wp_send_json( $json_response ); + // always end ajax with exit() + exit(); + } + // if we're not doing AJAX, find out what we need to do + elseif ( empty( self::$message['error'] ) && $response['status'] === 'success' && $response['action'] === 'insert' && isset( $response['ab_test_id'] ) ) { + // successful insert, so redirect them to the embed code section of the results page + // set a messages array to pass to url on redirect + $url_query = http_build_query( + array( + 'enp_messages' => self::$message, + 'enp_user_action' => 'ab_test_created', + ) + ); + // they just created a new page (quiz) so we need to redirect them to it and post our messages + wp_redirect( ENP_AB_RESULTS_URL . $response['ab_test_id'] . '/?' . $url_query ); + exit; + } + + return $response; + + } + + /** + * Set the success/error message(s) off of the response from quiz_save + * + * @param $response (object) response from quiz_save + * @return messages set + */ + public function set_message( $response ) { + if ( isset( $response->message ) ) { + return $response->message; + } else { + return false; + } + } + + /** + * Process any error/success messages and output + * them to the browser. + * + * @return false if message, HTML output with messages if found + * @usage Display in templates using an action hook + * do_action('enp_quiz_display_messages'); + * To set error messages from child classes, add + * parent::$messages['error'][] = 'error message'; + */ + public function display_messages() { + // try to get self::$message first bc they might + // have reloaded a page with a $_GET variable or something + // and we want our self::$message ones to override that + if ( ! empty( self::$message ) ) { + // check for self first + $messages = self::$message; + } elseif ( isset( $_GET['enp_messages'] ) ) { + // check URL second + $messages = $_GET['enp_messages']; + } else { + // no messages. Fail. + return false; + } $message_content = ''; - if(!empty($messages['error'])) { - $message_type = 'error'; - $message_content .= $this->display_message_html($messages['error'], $message_type); + if ( ! empty( $messages['error'] ) ) { + $message_type = 'error'; + $message_content .= $this->display_message_html( $messages['error'], $message_type ); + } + if ( ! empty( $messages['success'] ) ) { + $message_type = 'success'; + $message_content .= $this->display_message_html( $messages['success'], $message_type ); } - if(!empty($messages['success'])) { - $message_type = 'success'; - $message_content .= $this->display_message_html($messages['success'], $message_type); + if ( ! empty( $messages['note'] ) ) { + $message_type = 'note'; + $message_content .= $this->display_message_html( $messages['note'], $message_type ); } - if(!empty($messages['note'])) { - $message_type = 'note'; - $message_content .= $this->display_message_html($messages['note'], $message_type); - } - if(!empty($message_content)) { + if ( ! empty( $message_content ) ) { echo $message_content; } else { - return false; - } - - } - - public function display_message_html($messages, $message_type) { - $message_html = ''; - if(!empty($messages) && !empty($message_type)) { - $message_html .= '
-

'.$message_type.'

- -
'; - } - - return $message_html; - } - - - /** - * Validate that the user is allowed to be doing this - * Checks if they're logged in - * Checks if they own the quiz they're trying to access - * @return get_current_user_id(); OR Redirect to login page - * @since 0.0.1 - */ - public function validate_user() { - if(is_user_logged_in() === false) { - auth_redirect(); - } else { - $current_user_id = get_current_user_id(); - - // see if user is admin or not - if(current_user_can('manage_options') === false) { - // do error checks for validation if the user isn't an admin - $this->validate_user__check_if_owner($current_user_id); - } - - return $current_user_id; - } - } - - public function validate_user__check_if_owner($current_user_id) { - - // if we're loading a template, find out which one and set the vars accordingly - if(!empty($this->template)) { - if($this->template === 'ab-test' || $this->template === 'ab-results') { - // load the ab_test_object - // they're logged in, but do they own this quiz? - // get the quiz, if any - $ab_test = $this->load_ab_test_object(); - if(is_object($ab_test)) { - $ab_test_id = $ab_test->get_ab_test_id(); - $ab_test_owner = $ab_test->get_ab_test_owner(); - // looks like we have a real quiz - if($ab_test_id !== null && $ab_test_owner !== null) { - // see if the owner matches the current user - if((int) $ab_test_owner !== $current_user_id) { - // Hey! Get outta here! - self::$message['error'][] = "You don't have permission to view this AB Test."; - $url_query = http_build_query(array('enp_messages' => self::$message, 'enp_user_action'=> self::$user_action)); - wp_redirect( ENP_QUIZ_DASHBOARD_URL.'user/?'.$url_query ); - exit; - } else { - // valid! - } - } - } - } else { - // we're probably on a quiz - // they're logged in, but do they own this quiz? - // get the quiz, if any - $quiz = $this->load_quiz(); - if(is_object($quiz)) { - $quiz_id = $quiz->get_quiz_id(); - $quiz_owner = $quiz->get_quiz_owner(); - // looks like we have a real quiz - if($quiz_id !== null && $quiz_owner !== null) { - // see if the owner matches the current user - if((int) $quiz_owner !== $current_user_id) { - // Hey! Get outta here! - self::$message['error'][] = "You don't have permission to edit that quiz."; - $url_query = http_build_query(array('enp_messages' => self::$message, 'enp_user_action'=> self::$user_action)); - wp_redirect( ENP_QUIZ_DASHBOARD_URL.'user/?'.$url_query ); - exit; - } else { - // valid! - } - } - } - } - } - } - - - /** - * Utility function for returning a percentage - * @param $part (int) The number you want to see what it's a percentage of - * @param $whole (int) The whole you want a percentage of - * @param $decimals (int) How many decimal places you want returned. Defaults to no modification. - */ - public function percentagize($part, $whole, $decimals = false) { - $part = (int) $part; - $whole = (int) $whole; - // check to make sure it's valid - if($whole === 0) { - return 0; - } - // percentage function - $percentage = ($part / $whole) * 100; - // if they want some decimals, round it to that amount of decimals - if($decimals !== false) { - $percentage = round($percentage, $decimals); - } - // return the percentage - return $percentage; - } - - /** - * Reset all cookies for a quiz - */ - public function unset_quiz_take_cookies($quiz) { - // get the path that the cookies are set on - $path = parse_url(ENP_QUIZ_URL, PHP_URL_PATH).$quiz->get_quiz_id(); - // open the cookie manager for taking quizzes - $cookie_manager = new Enp_quiz_Cookies_Quiz_take($path); - // unset all the cookies for this quiz - $cookie_manager->unset_quiz_cookies($quiz); - } - - public function dashboard_breadcrumb_link() { - return ''; - } + return false; + } + + } + + public function display_message_html( $messages, $message_type ) { + $message_html = ''; + if ( ! empty( $messages ) && ! empty( $message_type ) ) { + $message_html .= '
+

' . $message_type . '

+ +
'; + } + + return $message_html; + } + + + /** + * Validate that the user is allowed to be doing this + * Checks if they're logged in + * Checks if they own the quiz they're trying to access + * + * @return get_current_user_id(); OR Redirect to login page + * @since 0.0.1 + */ + public function validate_user() { + if ( is_user_logged_in() === false ) { + auth_redirect(); + } else { + $current_user_id = get_current_user_id(); + + // see if user is admin or not + if ( current_user_can( 'manage_options' ) === false ) { + // do error checks for validation if the user isn't an admin + $this->validate_user__check_if_owner( $current_user_id ); + } + + return $current_user_id; + } + } + + public function validate_user__check_if_owner( $current_user_id ) { + + // if we're loading a template, find out which one and set the vars accordingly + if ( ! empty( $this->template ) ) { + if ( $this->template === 'ab-test' || $this->template === 'ab-results' ) { + // load the ab_test_object + // they're logged in, but do they own this quiz? + // get the quiz, if any + $ab_test = $this->load_ab_test_object(); + if ( is_object( $ab_test ) ) { + $ab_test_id = $ab_test->get_ab_test_id(); + $ab_test_owner = $ab_test->get_ab_test_owner(); + // looks like we have a real quiz + if ( $ab_test_id !== null && $ab_test_owner !== null ) { + // see if the owner matches the current user + if ( (int) $ab_test_owner !== $current_user_id ) { + // Hey! Get outta here! + self::$message['error'][] = "You don't have permission to view this AB Test."; + $url_query = http_build_query( + array( + 'enp_messages' => self::$message, + 'enp_user_action' => self::$user_action, + ) + ); + wp_redirect( ENP_QUIZ_DASHBOARD_URL . 'user/?' . $url_query ); + exit; + } else { + // valid! + } + } + } + } else { + // we're probably on a quiz + // they're logged in, but do they own this quiz? + // get the quiz, if any + $quiz = $this->load_quiz(); + if ( is_object( $quiz ) ) { + $quiz_id = $quiz->get_quiz_id(); + $quiz_owner = $quiz->get_quiz_owner(); + // looks like we have a real quiz + if ( $quiz_id !== null && $quiz_owner !== null ) { + // see if the owner matches the current user + if ( (int) $quiz_owner !== $current_user_id ) { + // Hey! Get outta here! + self::$message['error'][] = "You don't have permission to edit that quiz."; + $url_query = http_build_query( + array( + 'enp_messages' => self::$message, + 'enp_user_action' => self::$user_action, + ) + ); + wp_redirect( ENP_QUIZ_DASHBOARD_URL . 'user/?' . $url_query ); + exit; + } else { + // valid! + } + } + } + } + } + } + + + /** + * Utility function for returning a percentage + * + * @param $part (int) The number you want to see what it's a percentage of + * @param $whole (int) The whole you want a percentage of + * @param $decimals (int) How many decimal places you want returned. Defaults to no modification. + */ + public function percentagize( $part, $whole, $decimals = false ) { + $part = (int) $part; + $whole = (int) $whole; + // check to make sure it's valid + if ( $whole === 0 ) { + return 0; + } + // percentage function + $percentage = ( $part / $whole ) * 100; + // if they want some decimals, round it to that amount of decimals + if ( $decimals !== false ) { + $percentage = round( $percentage, $decimals ); + } + // return the percentage + return $percentage; + } + + /** + * Reset all cookies for a quiz + */ + public function unset_quiz_take_cookies( $quiz ) { + // get the path that the cookies are set on + $path = parse_url( ENP_QUIZ_URL, PHP_URL_PATH ) . $quiz->get_quiz_id(); + // open the cookie manager for taking quizzes + $cookie_manager = new Enp_quiz_Cookies_Quiz_take( $path ); + // unset all the cookies for this quiz + $cookie_manager->unset_quiz_cookies( $quiz ); + } + + public function dashboard_breadcrumb_link() { + return ''; + } } diff --git a/public/quiz-create/css/enp_quiz-create.min.css b/public/quiz-create/css/enp_quiz-create.min.css index ed81d32d..14826d98 100644 --- a/public/quiz-create/css/enp_quiz-create.min.css +++ b/public/quiz-create/css/enp_quiz-create.min.css @@ -1 +1,2 @@ -html{font-size:1pc!important}html #enp-quiz{box-sizing:border-box}body #enp-quiz{background:#fff;overflow:hidden}#enp-quiz *,#enp-quiz *:after,#enp-quiz *:before{box-sizing:inherit}#enp-quiz ol,#enp-quiz ul{margin:0 0 1.6rem 1.25rem;padding:0}#enp-quiz textarea{margin-bottom:1rem}#enp-quiz button,#enp-quiz button:active,#enp-quiz button:focus,#enp-quiz button:hover,#enp-quiz iframe,#enp-quiz input[type=button],#enp-quiz input[type=button]:active,#enp-quiz input[type=button]:focus,#enp-quiz input[type=button]:hover,#enp-quiz input[type=reset],#enp-quiz input[type=reset]:active,#enp-quiz input[type=reset]:focus,#enp-quiz input[type=reset]:hover,#enp-quiz input[type=submit],#enp-quiz input[type=submit]:active,#enp-quiz input[type=submit]:focus,#enp-quiz input[type=submit]:hover{border:0}#enp-quiz .enp-screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;left:-625pc;overflow:hidden;position:absolute!important;top:auto;width:1px}#enp-quiz .enp-screen-reader-text:active,#enp-quiz .enp-screen-reader-text:focus,#enp-quiz .enp-screen-reader-text:hover{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#enp-quiz .enp-accordion-header{background:#fff;border:0;border-radius:0;box-shadow:inset 1px 1px 0 #ccc,inset -1px -1px 0 #ccc;color:#444;cursor:pointer;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:.9rem;font-weight:400;letter-spacing:0;line-height:1.5;margin:1.6rem 0 0;min-height:3.065rem;padding:1rem 2rem 1rem 1rem;position:relative;text-align:left;text-transform:none;transition:all .2s cubic-bezier(0,0,.3,1);width:100%;z-index:9}#enp-quiz .enp-accordion-header:first-of-type{margin-top:0}#enp-quiz .enp-accordion-header .enp-accordion-header__icon{bottom:.75rem;fill:#666;position:absolute;right:.75rem;transition:all .35s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-accordion-header--open .enp-accordion-header__icon{-webkit-transform:rotatex(180deg) translatey(2px);transform:rotatex(180deg) translatey(2px)}#enp-quiz .enp-accordion-content{background:#fff;box-shadow:inset 1px -1px 0 #ccc,inset -1px -1px 0 #ccc;display:block;height:auto;margin-bottom:1.6rem;overflow:visible;position:relative;width:100%}#enp-quiz .enp-accordion-content--closed{-webkit-animation:slideOutTop .25s cubic-bezier(0,0,.3,1) forwards;animation:slideOutTop .25s cubic-bezier(0,0,.3,1) forwards;display:none;margin-top:0;padding-top:0}#enp-quiz .enp-accordion-content--open{-webkit-animation:slideInTop .45s cubic-bezier(0,0,.3,1) forwards;animation:slideInTop .45s cubic-bezier(0,0,.3,1) forwards;margin-bottom:2rem;padding-top:1.6rem}#enp-quiz .enp-quiz-message{background:#fff;border:1px solid #eee;border-bottom:1px solid #ccc;margin-bottom:1.6rem;margin-left:auto;margin-right:auto;max-width:32pc;padding:1rem .375rem;position:relative}#enp-quiz .enp-quiz-message:after{clear:both;content:"";display:table}#enp-quiz .enp-quiz-message__title{font-size:.85rem;text-transform:uppercase}#enp-quiz .enp-message__list{font-size:1.1rem;list-style:none;margin-bottom:0;margin-left:0}#enp-quiz .enp-quiz-message--error{border-left:6px solid #f14021;color:#db2c0e}#enp-quiz .enp-quiz-message__title--error{color:#db2c0e}#enp-quiz .enp-quiz-message--success{border-left:6px solid #3bb275;color:#319461}#enp-quiz .enp-quiz-message__title--success{color:#319461}#enp-quiz .enp-quiz-message--note{border-left:6px solid #cca562}#enp-quiz .enp-quiz-message__title--note{color:#242f42}#enp-quiz .enp-quiz-message__close{background:0;border:0;box-shadow:none;margin:0;padding:0;position:absolute;right:5px;top:5px}#enp-quiz .enp-quiz-message--ajax{-webkit-animation:slideInBottom .3s;animation:slideInBottom .3s;margin-bottom:.6rem}#enp-quiz .enp-quiz-message-ajax-container{bottom:10px;position:fixed;z-index:9999}#enp-quiz .enp-quiz-message--saving__spinner{margin-left:-10px}#enp-quiz .enp-quiz-message--saving__text{font-size:1rem}#enp-quiz input.limited-chars,#enp-quiz textarea.limited-chars{margin-bottom:.2rem}#enp-quiz .limited-chars__container{color:#7a7a7a;display:block;font-size:.8rem;margin-bottom:1.2rem;text-align:right}#enp-quiz .limited-chars__counter{color:#666}#enp-quiz .limited-chars__container--error,#enp-quiz .limited-chars__container--error .limited-chars__counter{color:#db2c0e}#enp-quiz input.has-error,#enp-quiz textarea.has-error{border:1px solid #f14021}#enp-quiz input.has-error:focus,#enp-quiz textarea.has-error:focus{outline-color:#f14021}#enp-quiz .enp-tooltip{position:relative}#enp-quiz .enp-tooltip__activator:focus+.enp-tooltip__description,#enp-quiz .enp-tooltip__activator:focus>.enp-tooltip__description{display:block}#enp-quiz .enp-tooltip__description{background:#f5f5f5;border-radius:3px;display:none;font-size:.9rem;left:103%;margin-bottom:2rem;max-width:200px;padding:.9rem;position:absolute}.enp-sticky{left:0;position:relative;right:0;top:0;z-index:999}.enp-sticky.enp-sticky--fixed{position:fixed}.enp-breadcrumb-link{font-size:.85rem}.enp-breadcrumb-link__icon{left:.4rem;position:relative;top:.45rem}body #enp-quiz{color:#444;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1em;font-weight:400;line-height:1.6}@media(min-width:700px){body #enp-quiz{font-size:1.3em}}#enp-quiz h1,#enp-quiz h2,#enp-quiz h3,#enp-quiz h4,#enp-quiz h5,#enp-quiz h6{clear:both;color:#5d5e5f;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-weight:700;line-height:1.2em;margin:0 0 .2rem}#enp-quiz h1{font-size:2em}#enp-quiz h2{font-size:1.75em}#enp-quiz h3{font-size:1.475em}#enp-quiz h4{font-size:1.3em}#enp-quiz h5{font-size:1.125em}#enp-quiz h6{font-size:1em}#enp-quiz p+h1,#enp-quiz p+h2,#enp-quiz p+h3,#enp-quiz p+h4,#enp-quiz p+h5,#enp-quiz p+h6,#enp-quiz ul+h1,#enp-quiz ul+h2,#enp-quiz ul+h3,#enp-quiz ul+h4,#enp-quiz ul+h5,#enp-quiz ul+h6{margin-top:1.8em}#enp-quiz p{font-size:.85em;font-weight:300;margin-bottom:1.125em}#enp-quiz ol,#enp-quiz ul{margin:0 0 1.6em 1.25em}#enp-quiz ul{list-style:disc}#enp-quiz ol{list-style:decimal}#enp-quiz li>ol,#enp-quiz li>ul{margin-bottom:0;margin-left:1.6em}#enp-quiz b,#enp-quiz strong{font-weight:700}#enp-quiz cite,#enp-quiz dfn,#enp-quiz em{font-family:georgia,times,serif;font-style:italic}#enp-quiz pre{background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.95em;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em}#enp-quiz .code,#enp-quiz code,#enp-quiz kbd,#enp-quiz tt,#enp-quiz var{font:.7em Monaco,Consolas,"Andale Mono","DejaVu Sans Mono",monospace}#enp-quiz table{border:0}#enp-quiz table th{border:0;border-bottom:1px solid #ddd;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:.8rem;text-transform:uppercase}#enp-quiz table td{border:0;border-bottom:1px solid #eee;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1rem}#enp-quiz table tr:nth-child(even) td{background:#f8f8f8}#enp-quiz table tr:last-child td{border-bottom:0}#enp-quiz figure{margin:0}#enp-quiz img{height:auto;max-width:100%}#enp-quiz a{color:#4477b5;text-decoration:none;touch-action:manipulation;transition:color .2s}#enp-quiz a .enp-icon{fill:#4477b5}#enp-quiz a:active,#enp-quiz a:focus,#enp-quiz a:hover{color:#396497}#enp-quiz a:active .enp-icon,#enp-quiz a:focus .enp-icon,#enp-quiz a:hover .enp-icon{fill:#396497}#enp-quiz button:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn{background:#4477b5;border:0;border-radius:3px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);color:#fff;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;padding:.85em 1.4em .75em;text-align:center;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-btn:focus,#enp-quiz .enp-btn:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-btn:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-btn:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn:disabled,#enp-quiz .enp-btn:disabled:focus,#enp-quiz .enp-btn:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-btn--add{background:0;border:3px dashed #666;border-radius:3px;box-shadow:none;color:#545454;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;padding:.85em 1.4em .75em;text-align:center;text-transform:uppercase;transition:all .2s;width:100%}#enp-quiz .enp-btn--add:focus,#enp-quiz .enp-btn--add:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-btn--add:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-btn--add:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn--add:disabled,#enp-quiz .enp-btn--add:disabled:focus,#enp-quiz .enp-btn--add:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-btn--add:focus,#enp-quiz .enp-btn--add:hover{background:hsla(0,0%,100%,.9);border:3px dashed #444;color:#444}#enp-quiz .enp-btn--disabled{cursor:default;opacity:.65}#enp-quiz .enp-btn--enabled{-webkit-animation:expand .6s;animation:expand .6s}#enp-quiz .enp-icon{height:24px;transition:all .2s;width:24px}#enp-quiz .enp-page-title{font-size:1.6rem}@-webkit-keyframes slideInBottom{0%{-webkit-transform:translate3d(0,75pt,0);opacity:0;transform:translate3d(0,75pt,0)}to{-webkit-transform:translate3d(0,0,0);opacity:1;transform:translate3d(0,0,0)}}@keyframes slideInBottom{0%{-webkit-transform:translate3d(0,75pt,0);opacity:0;transform:translate3d(0,75pt,0)}to{-webkit-transform:translate3d(0,0,0);opacity:1;transform:translate3d(0,0,0)}}@-webkit-keyframes slideInTop{0%{-webkit-transform:translate3d(0,-20px,0);height:auto;opacity:0;transform:translate3d(0,-20px,0)}to{-webkit-transform:translate3d(0,0,0);height:auto;opacity:1;transform:translate3d(0,0,0)}}@keyframes slideInTop{0%{-webkit-transform:translate3d(0,-20px,0);height:auto;opacity:0;transform:translate3d(0,-20px,0)}to{-webkit-transform:translate3d(0,0,0);height:auto;opacity:1;transform:translate3d(0,0,0)}}@-webkit-keyframes slideInTop--reduced-opacity{0%{-webkit-transform:translate3d(0,-20px,0);height:auto;opacity:0;transform:translate3d(0,-20px,0)}to{-webkit-transform:translate3d(0,0,0);height:auto;opacity:.8;transform:translate3d(0,0,0)}}@keyframes slideInTop--reduced-opacity{0%{-webkit-transform:translate3d(0,-20px,0);height:auto;opacity:0;transform:translate3d(0,-20px,0)}to{-webkit-transform:translate3d(0,0,0);height:auto;opacity:.8;transform:translate3d(0,0,0)}}@-webkit-keyframes slideOutTop{0%{-webkit-transform:translate3d(0,0,0);height:75pt;opacity:1;overflow:hidden;transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,-20px,0);height:0;opacity:0;transform:translate3d(0,-20px,0)}}@keyframes slideOutTop{0%{-webkit-transform:translate3d(0,0,0);height:75pt;opacity:1;overflow:hidden;transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(0,-20px,0);height:0;opacity:0;transform:translate3d(0,-20px,0)}}@-webkit-keyframes removeElement{0%{-webkit-transform:translate3d(0,0,0);opacity:1;transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-200px,0,0);height:0;margin:0;opacity:0;padding:0;transform:translate3d(-200px,0,0);z-index:-1}}@keyframes removeElement{0%{-webkit-transform:translate3d(0,0,0);opacity:1;transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-200px,0,0);height:0;margin:0;opacity:0;padding:0;transform:translate3d(-200px,0,0);z-index:-1}}@-webkit-keyframes removeAnswers{0%{-webkit-transform:translate3d(0,0,0);opacity:1;transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-200px,0,0);display:none;height:0;opacity:0;padding:0;transform:translate3d(-200px,0,0);z-index:-1}}@keyframes removeAnswers{0%{-webkit-transform:translate3d(0,0,0);opacity:1;transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-200px,0,0);display:none;height:0;opacity:0;padding:0;transform:translate3d(-200px,0,0);z-index:-1}}@-webkit-keyframes removeQuestion{0%{-webkit-transform:translatex(0);opacity:1;transform:translatex(0)}to{-webkit-transform:translatex(-200px);opacity:0;transform:translatex(-200px)}}@keyframes removeQuestion{0%{-webkit-transform:translatex(0);opacity:1;transform:translatex(0)}to{-webkit-transform:translatex(-200px);opacity:0;transform:translatex(-200px)}}@-webkit-keyframes showNextQuestion{0%{-webkit-transform:translatex(200px);opacity:0;transform:translatex(200px)}to{-webkit-transform:translatex(0);opacity:1;transform:translatex(0)}}@keyframes showNextQuestion{0%{-webkit-transform:translatex(200px);opacity:0;transform:translatex(200px)}to{-webkit-transform:translatex(0);opacity:1;transform:translatex(0)}}@-webkit-keyframes expand{0%{-webkit-transform:scale3d(1,1,1);box-shadow:0 0 0 rgba(0,0,0,.3);opacity:.8;transform:scale3d(1,1,1)}to{-webkit-transform:scale3d(1,1,1);box-shadow:0 0 0 rgba(0,0,0,.3),inset 0 2px 0 rgba(0,0,0,.2);opacity:1;transform:scale3d(1,1,1)}40%{opacity:1}70%{-webkit-transform:scale3d(1.1,1.1,1);box-shadow:0 0 8px rgba(0,0,0,.4);opacity:1;transform:scale3d(1.1,1.1,1)}}@keyframes expand{0%{-webkit-transform:scale3d(1,1,1);box-shadow:0 0 0 rgba(0,0,0,.3);opacity:.8;transform:scale3d(1,1,1)}to{-webkit-transform:scale3d(1,1,1);box-shadow:0 0 0 rgba(0,0,0,.3),inset 0 2px 0 rgba(0,0,0,.2);opacity:1;transform:scale3d(1,1,1)}40%{opacity:1}70%{-webkit-transform:scale3d(1.1,1.1,1);box-shadow:0 0 8px rgba(0,0,0,.4);opacity:1;transform:scale3d(1.1,1.1,1)}}@-webkit-keyframes checkmark{0%,to{-webkit-transform:scale3d(.2,.2,1);opacity:0;transform:scale3d(.2,.2,1)}10%,92%{-webkit-transform:scale3d(1.4,1.4,1);transform:scale3d(1.4,1.4,1)}12%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}5%{opacity:1}90%{-webkit-transform:scale3d(1,1,1);opacity:1;transform:scale3d(1,1,1)}}@keyframes checkmark{0%,to{-webkit-transform:scale3d(.2,.2,1);opacity:0;transform:scale3d(.2,.2,1)}10%,92%{-webkit-transform:scale3d(1.4,1.4,1);transform:scale3d(1.4,1.4,1)}12%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}5%{opacity:1}90%{-webkit-transform:scale3d(1,1,1);opacity:1;transform:scale3d(1,1,1)}}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes navSlideIn{0%{-webkit-transform:translate3d(0,-200px,0);transform:translate3d(0,-200px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes navSlideIn{0%{-webkit-transform:translate3d(0,-200px,0);transform:translate3d(0,-200px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.spinner{margin:0 auto;text-align:center;width:70px}.spinner>div{-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both;background-color:#333;border-radius:100%;display:inline-block;height:18px;width:18px}.spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}#enp-quiz{transition:background .25s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-container{margin-left:auto;margin-right:auto;max-width:40pc;padding-left:20px;padding-right:20px}#enp-quiz .enp-container:after{clear:both;content:"";display:table}#enp-quiz .enp-aside{background:#fff;border:1px solid #eee;border-bottom-color:#ccc;font-size:1.2rem;margin-bottom:1.6rem;margin-left:auto;margin-right:auto;max-width:32pc;padding:1.6rem 20px}@media(min-width:700px){#enp-quiz .enp-aside{margin-bottom:2.6rem;padding:1.6rem 2rem}}#enp-quiz .enp-aside:after{clear:both;content:"";display:table}#enp-quiz .enp-aside__title{font-size:.85rem;font-weight:600;text-transform:uppercase}#enp-quiz fieldset{border:0;margin:0;padding:0}#enp-quiz .enp-label{color:#5e5e5e;display:block;font-size:.85rem;font-weight:400;text-transform:uppercase}#enp-quiz .enp-legend{border:0;color:#5e5e5e;display:block;font-size:.85rem;font-weight:400;margin-bottom:.2rem;padding-top:1.6rem;text-transform:uppercase}#enp-quiz .enp-input{background:#fff;border:1px solid #aaa;border-radius:3px;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1rem;margin-bottom:1.2rem;max-width:100%;padding:.8rem .5rem;width:20rem}@media(min-width:700px){#enp-quiz .enp-input{padding:.8rem}}#enp-quiz .enp-input.enp-input--has-description{margin-bottom:.2rem}#enp-quiz .enp-input-description,#enp-quiz .enp-textarea-description{font-size:.85rem;margin-bottom:1rem}#enp-quiz .enp-input-description--before,#enp-quiz .enp-textarea-description--before{margin-bottom:0}#enp-quiz .enp-input:-ms-input-placeholder,#enp-quiz .enp-input::-ms-input-placeholder,#enp-quiz .enp-input::-webkit-input-placeholder,#enp-quiz .enp-input::placeholder,#enp-quiz .enp-textarea:-ms-input-placeholder,#enp-quiz .enp-textarea::-ms-input-placeholder,#enp-quiz .enp-textarea::-webkit-input-placeholder,#enp-quiz .enp-textarea::placeholder{color:#aaa;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-weight:300}#enp-quiz .enp-textarea{background:#fff;border:1px solid #aaa;border-radius:3px;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1rem;line-height:1.5;margin-bottom:1.2rem;max-width:100%;padding:.8rem .5rem;width:100%}@media(min-width:700px){#enp-quiz .enp-textarea{padding:.8rem}}#enp-quiz .enp-textarea:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-textarea.enp-textarea--has-description{margin-bottom:.2rem}#enp-quiz .enp-textarea.enp-textarea--has-description--before{margin-bottom:1.2rem}#enp-quiz .enp-embed-code{background:#fff;border:1px solid #aaa;border-radius:3px;font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9rem;line-height:1.5;margin-bottom:1.2rem;max-width:100%;padding:1.6rem;width:100%}@media(min-width:700px){#enp-quiz .enp-embed-code{padding:.8rem}}#enp-quiz .enp-embed-code:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-preview-page-container,#enp-quiz .enp-publish-page-container,#enp-quiz .enp-quiz-form-container{background:#f8f8f8;margin-left:auto;margin-right:auto;max-width:40pc;padding:6rem 20px 4rem;position:relative}#enp-quiz .enp-preview-page-container:after,#enp-quiz .enp-publish-page-container:after,#enp-quiz .enp-quiz-form-container:after{clear:both;content:"";display:table}@media(min-width:700px){#enp-quiz .enp-preview-page-container,#enp-quiz .enp-publish-page-container,#enp-quiz .enp-quiz-form-container{max-width:840px}}@media(min-width:750pt){#enp-quiz .enp-preview-page-container,#enp-quiz .enp-publish-page-container,#enp-quiz .enp-quiz-form-container{max-width:750pt}}#enp-quiz .enp-quiz-form{margin-left:auto;margin-right:auto;max-width:32pc;padding-left:0;padding-right:0}#enp-quiz .enp-quiz-form:after{clear:both;content:"";display:table}#enp-quiz .enp-quiz-form .enp-input,#enp-quiz .enp-quiz-form .enp-textarea{width:100%}#enp-quiz .enp-quiz-title__label{color:#5e5e5e;display:block;font-size:.85rem;font-weight:500;text-transform:uppercase}#enp-quiz .enp-quiz-title__textarea{background:#fff;border:1px solid #aaa;border-radius:3px;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1.6rem;font-weight:700;margin-bottom:1rem;max-width:100%;padding:.8rem .5rem;width:20rem}@media(min-width:700px){#enp-quiz .enp-quiz-title__textarea{padding:.8rem}}#enp-quiz .enp-quiz-title__textarea:-ms-input-placeholder,#enp-quiz .enp-quiz-title__textarea::-ms-input-placeholder,#enp-quiz .enp-quiz-title__textarea::-webkit-input-placeholder,#enp-quiz .enp-quiz-title__textarea::placeholder{font-weight:700}#enp-quiz .enp-accordion-container{margin-bottom:1.6rem;position:relative}#enp-quiz .enp-question-content{background:#fff;padding-top:0;position:relative;width:100%}#enp-quiz .enp-question-inner{padding:1.6rem 1.6rem 1rem}@media(min-width:700px){#enp-quiz .enp-question-inner{padding-left:2.9rem;padding-right:2.8rem}}#enp-quiz .enp-question-title__label{color:#5e5e5e;display:block;font-size:.85rem;font-weight:500;text-transform:uppercase}#enp-quiz .enp-question-title__textarea{background:#fff;border:1px solid #aaa;border-radius:3px;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1.3rem;margin-bottom:1.2rem;max-width:100%;padding:1rem 1.2rem;width:20rem}@media(min-width:700px){#enp-quiz .enp-question-title__textarea{padding:.8rem}}#enp-quiz .enp-question-image-upload{-webkit-transform:translate3d(0,0,0);background:#f5f5f5;border:2px dashed #bbb;border-radius:3px;box-shadow:none;color:#666;cursor:pointer;font-size:.85rem;font-weight:400;letter-spacing:.05em;line-height:1.6;margin-bottom:2rem;padding:.85em 1.4em .75em;position:relative;text-align:center;text-transform:uppercase;transform:translate3d(0,0,0);transition:all .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-question-image-upload:focus,#enp-quiz .enp-question-image-upload:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-question-image-upload:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-question-image-upload:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-question-image-upload:disabled,#enp-quiz .enp-question-image-upload:disabled:focus,#enp-quiz .enp-question-image-upload:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-question-image-upload:focus,#enp-quiz .enp-question-image-upload:hover{background:hsla(0,0%,100%,.9);border:2px dashed #999;color:#444}#enp-quiz .enp-question-image-upload .enp-question-image-upload__icon--photo{-webkit-transform:translate3d(0,0,0);height:2.8rem;left:0;margin:0 auto;opacity:0;position:absolute;right:0;top:0;transform:translate3d(0,0,0);transition:opacity .2s,transform .3s cubic-bezier(0,0,.3,1),-webkit-transform .3s cubic-bezier(0,0,.3,1);width:2.8rem;z-index:-1}#enp-quiz .enp-question-image-upload .enp-question-image-upload__icon--add{background:#666;border-radius:50%;fill:#f5f5f5;height:1rem;margin-right:5px;padding:.02rem;position:relative;top:.2rem;width:1rem}#enp-quiz .enp-question-image-upload:active,#enp-quiz .enp-question-image-upload:focus,#enp-quiz .enp-question-image-upload:hover{padding-bottom:2rem;padding-top:5rem}#enp-quiz .enp-question-image-upload:active .enp-question-image-upload__icon--photo,#enp-quiz .enp-question-image-upload:focus .enp-question-image-upload__icon--photo,#enp-quiz .enp-question-image-upload:hover .enp-question-image-upload__icon--photo{-webkit-transform:translate3d(0,1.75rem,0);opacity:1;transform:translate3d(0,1.75rem,0);z-index:1}#enp-quiz .enp-question-image-upload:active .enp-question-image-upload__icon--add,#enp-quiz .enp-question-image-upload:focus .enp-question-image-upload__icon--add,#enp-quiz .enp-question-image-upload:hover .enp-question-image-upload__icon--add{background:#444;fill:#fff}#enp-quiz .enp-question-image__container{margin-bottom:1rem;position:relative}#enp-quiz .enp-question-image{margin-bottom:1.2rem}#enp-quiz .enp-question-type__legend{border:0;color:#5e5e5e;display:block;font-size:.85rem;font-weight:400;margin-bottom:.2rem;padding-top:1.6rem;text-transform:uppercase}#enp-quiz .enp-question-type__input{clip:rect(1px,1px,1px,1px);height:1px;left:-625pc;overflow:hidden;position:absolute!important;top:auto;width:1px}#enp-quiz .enp-question-type__label{border-radius:3px;cursor:pointer;display:inline-block;padding:.2rem .5rem;text-transform:capitalize}#enp-quiz .enp-question-type__input:checked+.enp-question-type__label{background:#3bb275;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.7)}#enp-quiz .enp-question-type__input:focus+.enp-question-type__label{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px;z-index:8}#enp-quiz .enp-question-type__label{position:relative;z-index:9}#enp-quiz .enp-mc-options,#enp-quiz .enp-slider-options{-webkit-animation:slideOutTop .25s cubic-bezier(0,0,.3,1) forwards;-webkit-animation-delay:0s,.05s;animation:slideOutTop .25s cubic-bezier(0,0,.3,1) forwards;animation-delay:0s,.05s;display:none;margin-top:0}#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options,#enp-quiz .enp-question-type__input--slider:checked~.enp-slider-options{-webkit-animation:fadeIn .45s cubic-bezier(0,0,.3,1) forwards;animation:fadeIn .45s cubic-bezier(0,0,.3,1) forwards;display:block;visibility:visible}#enp-quiz .enp-mc-options__list{list-style:none;margin-left:0}#enp-quiz .enp-mc-option{padding-left:6px;position:relative}@media(min-width:700px){#enp-quiz .enp-mc-option{padding-left:0}}#enp-quiz .enp-mc-options__legend{color:#5e5e5e;display:block;font-size:.85rem;font-weight:500;text-transform:uppercase}#enp-quiz .enp-mc-option__add,#enp-quiz .enp-mc-option__button--correct,#enp-quiz .enp-mc-option__button--delete{display:none}#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options .enp-mc-option__add,#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options .enp-mc-option__button--correct,#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options .enp-mc-option__button--delete{display:block}#enp-quiz .enp-button__question-image-delete,#enp-quiz .enp-mc-option__button--delete{background:0;border:0;box-shadow:none;cursor:pointer;fill:#bbb;margin:0;padding:0;position:absolute;right:-24px;top:9px}@media(min-width:700px){#enp-quiz .enp-button__question-image-delete,#enp-quiz .enp-mc-option__button--delete{right:-30px}}#enp-quiz .enp-button__question-image-delete:focus,#enp-quiz .enp-button__question-image-delete:hover,#enp-quiz .enp-mc-option__button--delete:focus,#enp-quiz .enp-mc-option__button--delete:hover{fill:#f14021}#enp-quiz .enp-mc-option__button--correct{background:0;border:0;box-shadow:none;left:-24px;margin:0;padding:0;position:absolute;top:8px}@media(min-width:700px){#enp-quiz .enp-mc-option__button--correct{left:-35px}}#enp-quiz .enp-mc-option__button--correct .enp-mc-option__icon--correct{background:#fff;border:2px solid #e97763;border-radius:50%;cursor:pointer;fill:#fff;height:28px;padding:.05em;transition:all .2s;width:28px}@media(min-width:700px){#enp-quiz .enp-mc-option__button--correct .enp-mc-option__icon--correct{padding:.15em}}#enp-quiz .enp-mc-option__button--correct:focus .enp-mc-option__icon--correct,#enp-quiz .enp-mc-option__button--correct:hover .enp-mc-option__icon--correct{background:#fff;border-color:#3bb275;fill:#3bb275}#enp-quiz .enp-mc-option__button--correct:disabled{opacity:1}#enp-quiz .enp-mc-option__button--correct:disabled .enp-mc-option__icon--correct{border:2px solid transparent;cursor:default;fill:#fff}#enp-quiz .enp-mc-option--correct .enp-mc-option__input{border:1px solid #3bb275;box-shadow:inset 0 0 3px #3bb275}#enp-quiz .enp-mc-option--correct .enp-mc-option__button--correct:focus .enp-mc-option__icon--correct,#enp-quiz .enp-mc-option--correct .enp-mc-option__button--correct:hover .enp-mc-option__icon--correct,#enp-quiz .enp-mc-option--correct .enp-mc-option__icon--correct{background:#3bb275;border-color:#3bb275;fill:#fff}#enp-quiz .enp-mc-option__add{background:#f5f5f5;border:2px dashed #bbb;border-radius:3px;box-shadow:none;color:#666;cursor:pointer;font-size:.85rem;font-weight:400;letter-spacing:.05em;line-height:1.6;padding:.7rem .75rem .8rem;text-align:left;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-mc-option__add:focus,#enp-quiz .enp-mc-option__add:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-mc-option__add:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-mc-option__add:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-mc-option__add:disabled,#enp-quiz .enp-mc-option__add:disabled:focus,#enp-quiz .enp-mc-option__add:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-mc-option__add:focus,#enp-quiz .enp-mc-option__add:hover{background:hsla(0,0%,100%,.9);border:2px dashed #999;color:#444}#enp-quiz .enp-mc-option__add .enp-mc-option__add__icon{background:#666;border-radius:50%;fill:#f5f5f5;height:1rem;margin-right:5px;padding:.02rem;position:relative;top:.2rem;width:1rem}#enp-quiz .enp-mc-option__add:hover .enp-mc-option__add__icon{background:#444;fill:#fff}#enp-quiz .enp-slider-options .enp-input{max-width:11.8rem}#enp-quiz .enp-slider-correct__container .enp-input,#enp-quiz .enp-slider-range__container .enp-input{max-width:8.8rem}@media(min-width:25pc){#enp-quiz .enp-slider-correct__container .enp-input,#enp-quiz .enp-slider-range__container .enp-input{max-width:11.8rem}}#enp-quiz .enp-slider-preview{border:1px solid #ddd;margin-bottom:1.6rem;margin-top:.2rem;padding:1.6rem 1.6rem .6rem;position:relative}#enp-quiz .enp-slider-preview .enp-label--slider-preview{font-size:.75rem;left:.4rem;position:absolute;text-transform:uppercase;top:.2rem;width:100%}#enp-quiz .enp-slider-correct__container,#enp-quiz .enp-slider-range__container{align-items:center;display:flex;justify-content:space-between}#enp-quiz .enp-slider-correct__helper,#enp-quiz .enp-slider-range__helper{background:#fff;color:#777;font-size:.85rem;padding:0 .3rem;position:relative}#enp-quiz .enp-slider-correct__helper:before,#enp-quiz .enp-slider-range__helper:before{background:#ddd;content:"";height:4px;left:-60px;position:absolute;top:44%;transition:width .7s cubic-bezier(0,0,.3,1),background 1.6s cubic-bezier(0,0,.3,1);width:90pt;z-index:-1}#enp-quiz .enp-slider-options{margin-bottom:2rem}#enp-quiz .enp-slider-options .enp-accordion-header{font-size:.85rem;padding:.675rem;text-transform:uppercase}#enp-quiz .enp-slider-options .enp-slider-advanced-options__content{border:0;box-shadow:none;margin-bottom:0;padding-bottom:0;padding-top:1rem}#enp-quiz .enp-slider-correct-high__container{position:relative}#enp-quiz .enp-slider-correct-high__input-container--hidden{display:none}#enp-quiz .enp-slider-correct__helper--hidden:before{background:#3bb275;width:0}#enp-quiz .enp-slider-correct-answer-range--add-range{background:#f5f5f5;border:2px dashed #bbb;border-radius:3px;box-shadow:none;color:#666;cursor:pointer;font-size:.7rem;font-weight:400;letter-spacing:.05em;line-height:1.6;margin-left:.8rem;padding:.85em 1.4em .75em;text-align:center;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-slider-correct-answer-range--add-range:focus,#enp-quiz .enp-slider-correct-answer-range--add-range:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-slider-correct-answer-range--add-range:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-slider-correct-answer-range--add-range:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-slider-correct-answer-range--add-range:disabled,#enp-quiz .enp-slider-correct-answer-range--add-range:disabled:focus,#enp-quiz .enp-slider-correct-answer-range--add-range:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-slider-correct-answer-range--add-range:focus,#enp-quiz .enp-slider-correct-answer-range--add-range:hover{background:hsla(0,0%,100%,.9);border:2px dashed #999;color:#444}@media(min-width:25pc){#enp-quiz .enp-slider-correct-answer-range--add-range{font-size:.8rem;padding:.7rem}}@media(min-width:700px){#enp-quiz .enp-slider-correct-answer-range--add-range{min-width:11.4rem;padding:.7rem 1.2rem}}#enp-quiz .enp-slider-correct-answer-range--add-range .enp-slider-correct-answer-range__icon{background:#666;border-radius:50%;fill:#f5f5f5;height:1rem;left:-.2rem;margin-right:5px;padding:.02rem;position:relative;width:1rem}#enp-quiz .enp-slider-correct-answer-range--add-range:hover .enp-slider-correct-answer-range__icon{background:#444;fill:#fff}#enp-quiz .enp-slider-correct-answer-range--remove-range{background:0;border:0;bottom:1.6rem;box-shadow:none;padding:0 .1rem;position:absolute;right:-1.6rem}#enp-quiz .enp-slider-correct-answer-range--remove-range .enp-slider-correct-answer-range__icon{fill:#666;height:1.2em;width:1.2em}#enp-quiz .enp-slider-correct-answer-range--remove-range:focus .enp-slider-correct-answer-range__icon,#enp-quiz .enp-slider-correct-answer-range--remove-range:hover .enp-slider-correct-answer-range__icon{fill:#f14021}@media(min-width:700px){#enp-quiz .enp-slider-correct-answer-range--remove-range{bottom:auto;right:-.2rem;top:-.2rem}}#enp-quiz .enp-slider-options .enp-input:-moz-read-only,#enp-quiz .enp-slider-options .enp-input:read-only{background:#f5f5f5}#enp-quiz .enp-answer-explanation{background:#eaf4ff;box-shadow:inset 1px 0 0 #ccc,inset -1px -1px 0 #ccc,inset 0 1px 0 #ddd;padding-top:2rem}#enp-quiz .enp-answer-explanation__label{color:#5e5e5e;display:block;font-size:.85rem;font-weight:500;text-transform:uppercase}#enp-quiz .enp-question__button--delete{background:0;border:0;box-shadow:none;cursor:pointer;fill:#bbb;margin:0;padding:0;position:absolute;right:9px;top:9px}@media(min-width:700px){#enp-quiz .enp-question__button--delete{right:-30px}}#enp-quiz .enp-question__button--delete:hover{fill:#f14021}#enp-quiz .enp-question__move{left:15px;position:absolute}@media(min-width:700px){#enp-quiz .enp-question__move{left:-40px}}#enp-quiz .enp-sort__placeholder{background:#ddd;height:60px;margin-bottom:1.6rem;max-height:90pt;width:100%}#enp-quiz .ui-sortable .ui-sortable-helper .ui-sortable-handle{cursor:-webkit-grabbing}#enp-quiz .enp-question__button--move{background:0;border:0;box-shadow:none;cursor:pointer;fill:#bbb;margin:0;padding:0;position:absolute}#enp-quiz .enp-question__button--move:focus,#enp-quiz .enp-question__button--move:hover{fill:#333}#enp-quiz .enp-question__button--move:disabled{opacity:.5}#enp-quiz .enp-question__button--move--up{left:-9px;top:0}#enp-quiz .enp-question__button--move--down{right:-9px;top:3px}#enp-quiz .enp-quiz-form__add-question{background:0;border:3px dashed #666;border-radius:3px;box-shadow:none;color:#545454;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;margin-bottom:2rem;margin-top:1.6rem;padding:1rem 1.4em;text-align:center;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-quiz-form__add-question:focus,#enp-quiz .enp-quiz-form__add-question:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-quiz-form__add-question:active{box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-quiz-form__add-question:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-form__add-question:disabled,#enp-quiz .enp-quiz-form__add-question:disabled:focus,#enp-quiz .enp-quiz-form__add-question:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-quiz-form__add-question:focus,#enp-quiz .enp-quiz-form__add-question:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-quiz-form__add-question:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-quiz-form__add-question:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-form__add-question:disabled,#enp-quiz .enp-quiz-form__add-question:disabled:focus,#enp-quiz .enp-quiz-form__add-question:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-quiz-form__add-question:focus,#enp-quiz .enp-quiz-form__add-question:hover{background:hsla(0,0%,100%,.9);border:3px dashed #444;color:#444}#enp-quiz .enp-quiz-form__add-question .enp-add-question__icon{background:#666;border-radius:50%;fill:#f5f5f5;height:1.2rem;margin-right:5px;padding:.02rem;position:relative;top:.2rem;width:1.2rem}#enp-quiz .enp-quiz-form__add-question:hover .enp-add-question__icon{background:#444;fill:#fff}#enp-quiz .enp-quiz-form__save{background:#4477b5;border:0;border-radius:3px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);color:#fff;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;margin-bottom:1rem;opacity:.8;padding:.85em 1.4em .75em;text-align:center;text-shadow:0 -1px 2px rgba(0,0,0,.6);text-transform:uppercase;transition:all .2s;width:100%}#enp-quiz .enp-quiz-form__save:focus,#enp-quiz .enp-quiz-form__save:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-quiz-form__save:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-quiz-form__save:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-form__save:disabled,#enp-quiz .enp-quiz-form__save:disabled:focus,#enp-quiz .enp-quiz-form__save:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-quiz-form__save:focus,#enp-quiz .enp-quiz-form__save:hover{opacity:1}@media(min-width:25pc){#enp-quiz .enp-quiz-form__save{margin-right:3%;margin-top:1.6rem;padding:1.2rem 1.8rem 1.1rem;position:relative;top:-2px;width:27%}}#enp-quiz .enp-quiz-form__save--reveal{-webkit-animation:slideInTop--reduced-opacity .3s cubic-bezier(0,0,.3,1);animation:slideInTop--reduced-opacity .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-btn--next-step{background:#4477b5;border:0;border-radius:3px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);color:#fff;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;text-align:center;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-btn--next-step:focus,#enp-quiz .enp-btn--next-step:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-btn--next-step:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-btn--next-step:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn--next-step:disabled,#enp-quiz .enp-btn--next-step:disabled:focus,#enp-quiz .enp-btn--next-step:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-btn--next-step__icon{background:#fff;border-radius:50%;fill:#4477b5;height:1.2rem;margin-left:.5em;position:relative;top:.15rem;width:1.2rem}#enp-quiz .enp-btn--next-step__icon:hover{background:#fff;fill:#396497}#enp-quiz .enp-btn--next-step{padding:1rem 1.4rem;width:100%}@media(min-width:25pc){#enp-quiz .enp-btn--next-step{width:68%}}#enp-quiz .enp-btn--next-step--reveal{-webkit-animation:slideInTop .3s cubic-bezier(0,0,.3,1);animation:slideInTop .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-accordion-header--inserting,#enp-quiz .enp-mc-option--inputs{-webkit-animation:slideInBottom .4s cubic-bezier(0,0,.3,1) forwards;animation:slideInBottom .4s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-mc-option--remove,#enp-quiz .enp-question--remove,#enp-quiz .enp-question__image--remove{-webkit-animation:removeElement .5s cubic-bezier(0,0,.3,1) forwards;animation:removeElement .5s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-image-upload-wait{background:#f5f5f5;border:2px dashed #bbb;border-radius:3px;box-shadow:none;color:#666;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;margin-bottom:1rem;padding:4rem 1.4em;text-align:center;text-transform:uppercase;transition:all .2s;width:100%}#enp-quiz .enp-image-upload-wait:focus,#enp-quiz .enp-image-upload-wait:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-image-upload-wait:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-image-upload-wait:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-image-upload-wait:disabled,#enp-quiz .enp-image-upload-wait:disabled:focus,#enp-quiz .enp-image-upload-wait:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-image-upload-wait:focus,#enp-quiz .enp-image-upload-wait:hover{background:hsla(0,0%,100%,.9);border:2px dashed #999;color:#444}#enp-quiz .enp-accordion-header.question-has-error{box-shadow:0 0 3px #f14021;color:#f14021}.enp-quiz.ui-sortable--sorting #enp-quiz .enp-accordion-content{display:none}@media(min-width:750pt){#enp-quiz .enp-quiz-settings-container{float:left;margin:0;width:40%}#enp-quiz .enp-quiz-preview-container{float:left;width:60%}}#enp-quiz .enp-quiz-settings__title,#enp-quiz .enp-quiz-share__legend{font-size:.85rem;font-weight:600;padding-top:0;position:relative;text-transform:uppercase}#enp-quiz .enp-quiz-settings__form{margin-bottom:3rem}@media(min-width:750pt){#enp-quiz .enp-quiz-settings__form{margin-bottom:0;padding:0}}@media(min-width:700px){#enp-quiz .enp-fieldset{position:relative}}@media(min-width:700px){#enp-quiz .enp-title-display__legend{padding-top:.4rem}}#enp-quiz .enp-quiz-share__input,#enp-quiz .enp-quiz-styles__input{width:100%}#enp-quiz .enp-quiz-styles__textarea--custom-css{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9rem;min-height:200px}#enp-quiz .enp-fieldset--section{padding:1.6rem 1rem}#enp-quiz .enp-fieldset--section.enp-accordion-content--open{margin-bottom:0}#enp-quiz .enp-quiz-share--facebook{margin-bottom:2rem}#enp-quiz .enp-title-display__legend{border:0;color:#5e5e5e;display:block;font-size:.85rem;font-weight:400;margin-bottom:.2rem;padding-top:1.6rem;text-transform:uppercase}#enp-quiz .enp-title-display__input{clip:rect(1px,1px,1px,1px);height:1px;left:-625pc;overflow:hidden;position:absolute!important;top:auto;width:1px}#enp-quiz .enp-title-display__label{border-radius:3px;cursor:pointer;display:inline-block;padding:.2rem .5rem;text-transform:capitalize}#enp-quiz .enp-title-display__input:checked+.enp-title-display__label{background:#3bb275;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.7)}#enp-quiz .enp-title-display__input:focus+.enp-title-display__label{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px;z-index:8}#enp-quiz .enp-mc-options-order__legend{border:0;color:#5e5e5e;display:block;font-size:.85rem;font-weight:400;margin-bottom:.2rem;padding-top:1.6rem;text-transform:uppercase}#enp-quiz .enp-mc-options-order__input{clip:rect(1px,1px,1px,1px);height:1px;left:-625pc;overflow:hidden;position:absolute!important;top:auto;width:1px}#enp-quiz .enp-mc-options-order__label{border-radius:3px;cursor:pointer;display:inline-block;padding:.2rem .5rem;text-transform:capitalize}#enp-quiz .enp-mc-options-order__input:checked+.enp-mc-options-order__label{background:#3bb275;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.7)}#enp-quiz .enp-mc-options-order__input:focus+.enp-mc-options-order__label{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px;z-index:8}#enp-quiz .enp-mc-options-order{margin-bottom:1.6rem}#enp-quiz .enp-quiz-share__textarea{margin-bottom:2rem;min-height:7.6rem}@media(min-width:700px){#enp-quiz .enp-quiz-share__textarea{min-height:4.6rem}}@media(min-width:750pt){#enp-quiz .enp-quiz-share__textarea{min-height:7.6rem}}#enp-quiz .enp-preview-form__submit{margin-top:1.6rem}#enp-quiz .enp-quiz-preview__title{font-size:.85rem;font-weight:600;text-transform:uppercase}#enp-quiz .enp-preview-form__submit{background:#4477b5;border:0;border-radius:3px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);color:#fff;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;margin-bottom:1rem;opacity:.8;padding:.85rem 1.4em;text-align:center;text-shadow:0 -1px 2px rgba(0,0,0,.6);text-transform:uppercase;transition:all .2s;width:100%}#enp-quiz .enp-preview-form__submit:focus,#enp-quiz .enp-preview-form__submit:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-preview-form__submit:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-preview-form__submit:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-preview-form__submit:disabled,#enp-quiz .enp-preview-form__submit:disabled:focus,#enp-quiz .enp-preview-form__submit:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-preview-form__submit:focus,#enp-quiz .enp-preview-form__submit:hover{opacity:1}#enp-quiz .enp-preview-form__submit--publish{padding:1.05rem 1.8rem .95rem;position:relative;width:100%;z-index:99999999}#enp-quiz .enp-quiz-styles__iris-wrapper{position:relative}#enp-quiz .iris-picker{box-sizing:content-box;margin-bottom:1rem;padding-bottom:3rem;padding-right:30px;position:relative;top:-1.2rem;z-index:9999999999}@media(min-width:750pt){#enp-quiz .iris-picker{left:36%;position:absolute;top:-4px}}#enp-quiz .iris-picker:last-of-type{margin-bottom:0}#enp-quiz .iris-picker .ui-draggable-handle:focus .ui-slider-handle,#enp-quiz .iris-picker .ui-slider-handle:focus{box-shadow:0 0 3px rgba(0,0,0,.75)}#enp-quiz .enp-quiz-styles__set-default{background:transparent;border:2px solid #4477b5;border-radius:3px;bottom:10px;box-shadow:none;color:#4477b5;cursor:pointer;font-size:.75rem;font-weight:400;left:10px;letter-spacing:.05em;line-height:1.6;padding:.85em 1.4em .75em;position:absolute;text-align:center;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-quiz-styles__set-default:focus,#enp-quiz .enp-quiz-styles__set-default:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-quiz-styles__set-default:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-quiz-styles__set-default:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-styles__set-default:disabled,#enp-quiz .enp-quiz-styles__set-default:disabled:focus,#enp-quiz .enp-quiz-styles__set-default:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-quiz-styles__set-default:focus,#enp-quiz .enp-quiz-styles__set-default:hover{background:transparent;border:2px solid #396497;color:#396497}#enp-quiz .enp-iris__close{background:0;border:0;box-shadow:none;cursor:pointer;fill:#888;margin:0;padding:0;position:absolute;right:5px;top:5px}#enp-quiz .enp-quiz-styles__input--color{padding-left:45px}#enp-quiz .enp-quiz-styles__color-demo{border:1px solid #ccc;border-radius:3px;height:30px;left:8px;position:absolute;top:8px;width:30px}#enp-quiz .enp-share-quiz__url{display:block;font-size:1rem;line-height:1.4;word-wrap:break-word}#enp-quiz #enp-open__btn{cursor:pointer}#enp-quiz #enp-modal__background{background-color:rgba(0,0,0,.2);display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:1}#enp-quiz #enp-modal{-webkit-animation-duration:.4s;-webkit-animation-name:fadeIn;-webkit-transform:translate(-50%,-50%);align-items:center;animation-duration:.4s;animation-name:fadeIn;background-color:#fff;border-radius:5px;box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);display:flex;flex-direction:column;left:50%;padding:10px 20px;position:absolute;top:50%;transform:translate(-50%,-50%)}#enp-quiz #enp-close__btn{align-self:flex-end}#enp-quiz #enp-close__btn:hover{color:#444;cursor:pointer}#enp-quiz .enp-share-quiz{align-content:center;align-items:center;display:flex;list-style:none;margin-left:0}#enp-quiz .enp-share-quiz__item{margin-right:20px}#enp-quiz .enp-share-quiz__item:last-child{margin-right:0}#enp-quiz .enp-share-quiz__item__icon{background:#5887c0;border-radius:50%;fill:#fff!important;height:2.4rem;padding:.6rem;width:2.4rem}#enp-quiz .enp-share-quiz__item__icon--facebook{background-color:#3a5795}#enp-quiz .enp-share-quiz__item__icon--twitter{background-color:#4099ff}#enp-quiz .enp-share-quiz{justify-content:space-around;margin-bottom:0}#enp-quiz .enp-ab-create__container{background:#f8f8f8;margin-left:auto;margin-right:auto;max-width:40pc;padding:3rem 20px;width:100%}#enp-quiz .enp-ab-create__container:after{clear:both;content:"";display:table}@media(min-width:700px){#enp-quiz .enp-ab-create__container{max-width:840px}}@media(min-width:750pt){#enp-quiz .enp-ab-create__container{max-width:750pt}}#enp-quiz .enp-ab-create__form{margin-left:auto;margin-right:auto;max-width:32pc;padding-left:20px;padding-right:20px}#enp-quiz .enp-ab-create__form:after{clear:both;content:"";display:table}#enp-quiz .enp-ab-create__label{color:#5e5e5e;display:block;font-size:.85rem;font-weight:500;text-transform:uppercase}#enp-quiz .enp-ab-create-title__textarea{background:#fff;border:1px solid #aaa;border-radius:3px;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1.6rem;font-weight:700;margin-bottom:1rem;max-width:100%;padding:.8rem .5rem;width:100%}@media(min-width:700px){#enp-quiz .enp-ab-create-title__textarea{padding:.8rem}}#enp-quiz .enp-ab-create-title__textarea:-ms-input-placeholder,#enp-quiz .enp-ab-create-title__textarea::-ms-input-placeholder,#enp-quiz .enp-ab-create-title__textarea::-webkit-input-placeholder,#enp-quiz .enp-ab-create-title__textarea::placeholder{font-weight:700}#enp-quiz .enp-ab-create__select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:url(../svg/chevron-down.svg) 100% 50% no-repeat;background-color:#fff;border:1px solid #bbb;border-radius:3px;box-shadow:inset -26px 0 0 rgba(0,0,0,.1);font-size:.85rem;margin-bottom:1.6rem;padding:.7rem 2pc .7rem .8rem;width:100%}#enp-quiz .enp-ab-create__submit{padding-bottom:1em;padding-top:1em;width:100%}#enp-quiz .enp-dash-container{background:#f8f8f8;margin-left:auto;margin-right:auto;max-width:40pc;padding:2rem 20px;transition:all .25s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash-container:after{clear:both;content:"";display:table}@media(min-width:700px){#enp-quiz .enp-dash-container{max-width:840px}}@media(min-width:750pt){#enp-quiz .enp-dash-container{max-width:750pt}}#enp-quiz .enp-dash__section-header{display:block;margin-bottom:.325rem}@media(min-width:700px){#enp-quiz .enp-dash__section-header{align-content:flex-end;align-items:flex-end;display:flex;justify-content:space-between}}#enp-quiz .enp-search-quizzes{display:block}@media(min-width:25pc){#enp-quiz .enp-search-quizzes{align-content:flex-end;align-items:flex-end;display:flex}}#enp-quiz .enp-search-quizzes__form-item{display:block;margin-bottom:.6rem}@media(min-width:25pc){#enp-quiz .enp-search-quizzes__form-item{margin-bottom:0;margin-right:1rem}#enp-quiz .enp-search-quizzes__form-item:last-of-type{margin-right:0}}#enp-quiz .enp-quiz-search{position:relative}#enp-quiz .enp-search-quizzes__label{clip:rect(1px,1px,1px,1px);height:1px;left:-625pc;margin-bottom:0;overflow:hidden;position:absolute!important;top:auto;width:1px}#enp-quiz .enp-quiz-search__input{font-size:.85rem;margin:0 0 .1rem;max-width:10pc;padding:.3rem .3rem .3rem 26px}#enp-quiz .enp-quiz-search__icon{bottom:.3rem;height:21px;left:.2rem;position:absolute;width:21px}#enp-quiz .enp-search-quizzes__button{padding:.2rem .8rem}#enp-quiz .enp-search-results-description{font-size:.85rem}#enp-quiz .enp-search-results-description__link{white-space:nowrap}#enp-quiz .enp-search-results-description__icon{height:1.3em;left:2px;position:relative;top:4px;width:1.3em}#enp-quiz .enp-dash__section-title{font-size:.85rem;margin-bottom:.325rem;text-transform:uppercase}#enp-quiz .enp-view-toggle{cursor:pointer;display:none;opacity:.5}@media(min-width:700px){#enp-quiz .enp-view-toggle{display:flex}}#enp-quiz .enp-view-toggle__active{opacity:1}#enp-quiz .enp-sort-by{margin-left:5px}#enp-quiz .enp-dash-list{align-items:stretch;display:flex;flex-flow:row wrap;list-style:none;margin-left:0}#enp-quiz .enp-dash-item{align-content:flex-end;background:#fff;border:0;display:flex;flex-basis:100%;flex-direction:column;justify-content:flex-end;list-style:none;margin:0 0 .8rem;padding:1rem 1.2rem;transition:all .35s cubic-bezier(0,0,.3,1)}@media(min-width:700px){#enp-quiz .enp-dash-item{flex-basis:49%;margin:0 2% .8rem 0;max-width:49%}#enp-quiz .enp-dash-item:nth-child(2n){margin-right:0}}@media(min-width:750pt){#enp-quiz .enp-dash-item{flex-basis:32.5%;margin-right:1.25%;max-width:32.5%}#enp-quiz .enp-dash-item:nth-child(2n){margin-right:1.25%}#enp-quiz .enp-dash-item:nth-child(3n){margin-right:0}}#enp-quiz .enp-dash-item--published{box-shadow:inset 4px 0 0 #3bb275,0 1px 0 rgba(0,0,0,.1)}#enp-quiz .enp-dash-item--draft{box-shadow:inset 4px 0 0 #92dbb6,0 1px 0 rgba(0,0,0,.1)}#enp-quiz .enp-dash-item--remove{-webkit-animation:removeElement .5s cubic-bezier(0,0,.3,1) forwards;animation:removeElement .5s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-dash-list--list-view .enp-dash-item{flex-basis:100%;margin:0 0 .8rem}#enp-quiz .enp-dash-item__spinner{-webkit-animation:fadeIn .3s cubic-bezier(0,0,.3,1);align-content:center;align-items:center;animation:fadeIn .3s cubic-bezier(0,0,.3,1);background:hsla(0,59%,90%,.8);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;width:100%;z-index:999}#enp-quiz .enp-dash-item__header{background:#fff;border-bottom:1px solid #ddd;position:relative;z-index:99}#enp-quiz .enp-dash-item__title{font-size:1rem;padding:0 24px .375rem 0}#enp-quiz .enp-dash-item__content{padding:0 0 .375rem;position:relative;transition:all .2s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash-item__meta{color:#565656;font-size:.75rem;font-weight:300}#enp-quiz .enp-dash-item__username{border-left:1px solid #ddd;margin-left:.2rem;padding-left:.4rem;word-wrap:break-word}#enp-quiz .enp-dash-item__title--ab-test{padding-bottom:0}#enp-quiz .enp-dash-item__ab-quizzes{color:#666;font-size:.85rem;list-style:none;margin-bottom:.8rem;margin-left:0}#enp-quiz .enp-dash-item__nav{font-size:.85rem;list-style:none;margin-bottom:0;margin-left:0}#enp-quiz .enp-dash-item__nav__item{display:inline-block;font-size:.85rem;margin-bottom:0;margin-right:10px;padding-bottom:0}#enp-quiz .enp-dash-item__nav__item a{font-weight:400}#enp-quiz .enp-dash-item__nav__item a:focus{outline:1px dotted #4477b5;outline-offset:1px}#enp-quiz .enp-dash-item__nav__item:last-of-type{margin-right:0}#enp-quiz .enp-dash-item__delete{background:0;border:0;box-shadow:none;cursor:pointer;margin:0;padding:0;position:relative;top:4px}#enp-quiz .enp-dash-item__delete__icon{fill:#bbb;height:20px;width:20px}#enp-quiz .enp-dash-item__delete__icon:focus,#enp-quiz .enp-dash-item__delete__icon:hover{fill:#f14021}#enp-quiz .enp-dash-item__nav--collapsible{-webkit-transform:translate3d(0,0,0);background:#fff;bottom:auto;display:none;margin-top:.2rem;position:absolute;right:auto;top:100%;transform:translate3d(0,0,0);transition:all .2s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash-item__nav--collapsible .enp-dash-item__nav__item{padding:0 0 .4rem}#enp-quiz .enp-dash-item__menu-action{background:0;border:0;bottom:.2rem;color:#444;cursor:pointer;height:24px;padding:0;position:absolute;right:0}#enp-quiz .enp-dash-item__menu-action__icon{fill:#444;height:24px;transition:all .3s cubic-bezier(0,0,.3,1);width:24px}#enp-quiz .enp-dash-item__menu-action__icon--bottom{left:0;position:absolute}#enp-quiz .enp-dash-item--menu-active{-webkit-transform:translate3d(0,-3px,0);transform:translate3d(0,-3px,0)}#enp-quiz .enp-dash-item--menu-active.enp-dash-item--published{box-shadow:inset 4px 0 0 #3bb275,0 2px 2px rgba(0,0,0,.2)}#enp-quiz .enp-dash-item--menu-active.enp-dash-item--draft{box-shadow:inset 4px 0 0 #92dbb6,0 2px 2px rgba(0,0,0,.2)}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__menu-action__icon--bottom{-webkit-transform:translatey(-15.5%);transform:translatey(-15.5%)}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__menu-action__icon--top{-webkit-transform:rotatex(-180deg) translatey(0);transform:rotatex(-180deg) translatey(0)}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__nav--collapsible{-webkit-animation:slideInTop .25s cubic-bezier(0,0,.3,1) forwards;animation:slideInTop .25s cubic-bezier(0,0,.3,1) forwards;display:block}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__content{-webkit-transform:translate3d(0,.675rem,0);opacity:.4;transform:translate3d(0,.675rem,0)}#enp-quiz .enp-quiz-results{display:flex;justify-content:space-around;list-style:none;margin:.8rem 0 0;padding:0;text-align:center}#enp-quiz .enp-quiz-results__item{color:#454545;margin:0 2% 0 0;padding:0}@media(max-width:280px){#enp-quiz .enp-quiz-results__item{margin-bottom:.6rem;padding:0;width:100%}}#enp-quiz .enp-quiz-results__number{font-size:1.6rem;line-height:1;position:relative}#enp-quiz .enp-dash-item--draft .enp-quiz-results__number{opacity:.5}#enp-quiz .enp-quiz-results__number--average-score{color:#319461}#enp-quiz .enp-quiz-results__number--average-score:after{content:"%";font-size:.9rem;position:absolute;right:-1rem;top:.3rem}#enp-quiz .enp-quiz-results__label{color:#888;font-size:.7rem;font-weight:300;text-transform:uppercase}#enp-quiz .enp-quiz-list__view{align-content:flex-end;align-items:flex-end;display:flex}#enp-quiz .enp-dash-item--add-new{background:0;border:0;padding:0;position:relative}@media(min-width:700px){#enp-quiz .enp-dash-item--add-new{min-height:7rem}}#enp-quiz .enp-dash-link--add-new{background:0;border:2px dashed #bbb;border-radius:3px;box-shadow:none;color:#4477b5;cursor:pointer;font-size:15px;font-weight:400;justify-content:flex-start;letter-spacing:.05em;line-height:1.6;padding:1rem 1.2rem;text-align:center;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-dash-link--add-new:focus,#enp-quiz .enp-dash-link--add-new:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-dash-link--add-new:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-dash-link--add-new:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-dash-link--add-new:disabled,#enp-quiz .enp-dash-link--add-new:disabled:focus,#enp-quiz .enp-dash-link--add-new:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-dash-link--add-new:focus,#enp-quiz .enp-dash-link--add-new:hover{background:hsla(0,0%,100%,.9);border:2px dashed #999;color:#444}@media(min-width:700px){#enp-quiz .enp-dash-link--add-new{align-content:center;align-items:center;bottom:0;display:flex;flex-direction:column;font-size:.85rem;justify-content:center;left:0;position:absolute;right:0;text-transform:uppercase;top:0}}#enp-quiz .enp-dash-link--add-new .enp-dash-link__icon{background:#5887c0;border-radius:50%;fill:#fff;height:1.2rem;margin-right:5px;width:1.2rem}@media(min-width:700px){#enp-quiz .enp-dash-link--add-new .enp-dash-link__icon{height:2rem;margin:.8rem 0 .2rem;width:2rem}}#enp-quiz .enp-dash-link--add-new:hover{color:#396497}#enp-quiz .enp-dash-link--add-new:hover .enp-dash-link__icon{background:#396497;fill:#fff}#enp-quiz .enp-quiz-message--welcome p{color:#444}#enp-quiz .enp-paginate{align-content:center;align-items:center;display:flex;font-size:1rem;justify-content:center;list-style:none;margin-left:0}#enp-quiz .enp-paginate__link{align-content:center;align-items:center;border-radius:3px;display:flex;font-weight:400;justify-content:center;margin:0 .2rem;padding:0 .4rem}#enp-quiz .enp-paginate__link--current-page{border:2px solid #5887c0}#enp-quiz .enp-paginate__item--first-page,#enp-quiz .enp-paginate__item--last-page{display:flex}#enp-quiz .enp-paginate__item--first-page:after,#enp-quiz .enp-paginate__item--last-page:before{bottom:.2rem;content:"...";font-size:1rem;opacity:.6;position:relative}#enp-quiz .enp-paginate__item--no-gap:after,#enp-quiz .enp-paginate__item--no-gap:before{content:""}#enp-quiz .enp-paginate__item--next-page{margin-left:.2rem}#enp-quiz .enp-paginate__item--previous-page{margin-right:.2rem}#enp-quiz .enp-quiz-breadcrumbs{align-content:center;align-items:center;background:#fff;border-bottom:1px solid #ddd;display:flex;justify-content:center;left:-500%;margin-left:auto;margin-right:auto;padding:10px;position:absolute;right:-500%;top:0;width:1000%;z-index:99999}#enp-quiz .enp-quiz-breadcrumbs__list{display:flex;list-style:none;margin-bottom:0;margin-left:0}#enp-quiz .enp-quiz-breadcrumbs__item{align-content:center;align-items:center;display:flex;fill:#4477b5;justify-content:center;margin-right:5px}#enp-quiz .enp-quiz-breadcrumbs__item:last-of-type{margin-right:0}@media(min-width:25pc){#enp-quiz .enp-quiz-breadcrumbs__item{margin-right:10px}}#enp-quiz .enp-quiz-breadcrumbs__link--disabled{cursor:default;opacity:.65}#enp-quiz .enp-quiz-breadcrumbs__link--active{background:transparent;border:2px solid #4477b5;border-radius:3px;box-shadow:none;color:#4477b5;cursor:pointer;font-size:15px;font-weight:400;letter-spacing:.05em;line-height:1.6;padding:.4em 1em;text-align:center;text-transform:uppercase;transition:all .2s}#enp-quiz .enp-quiz-breadcrumbs__link--active:focus,#enp-quiz .enp-quiz-breadcrumbs__link--active:hover{background:#396497;box-shadow:none;color:#fff}#enp-quiz .enp-quiz-breadcrumbs__link--active:active{background:#a2bcdc;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);color:#fff}#enp-quiz .enp-quiz-breadcrumbs__link--active:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-breadcrumbs__link--active:disabled,#enp-quiz .enp-quiz-breadcrumbs__link--active:disabled:focus,#enp-quiz .enp-quiz-breadcrumbs__link--active:disabled:hover{background:#4477b5;cursor:default;opacity:.5}#enp-quiz .enp-quiz-breadcrumbs__link--active:focus,#enp-quiz .enp-quiz-breadcrumbs__link--active:hover{background:transparent;border:2px solid #396497;color:#396497}#enp-quiz .enp-quiz-breadcrumbs__link{font-size:1rem;font-weight:400;letter-spacing:0;text-transform:none}#enp-quiz .enp-quiz-breadcrumbs--fixed{-webkit-animation:navSlideIn .25s;animation:navSlideIn .25s;position:fixed;top:0}#enp-quiz .enp-results-title{background:#f8f8f8;border-bottom:1px solid #ddd;font-size:1.6rem;margin:-1.2rem 0 2rem;padding:3.2rem 20px 2.6rem;text-align:center}#enp-quiz .enp-results-title:after{content:"RESULTS";display:block;font-size:.85rem;font-weight:400;text-transform:uppercase}#enp-quiz .enp-results__container{display:block;margin-left:auto;margin-right:auto;max-width:40pc;padding-left:20px;padding-right:20px}#enp-quiz .enp-results__container:after{clear:both;content:"";display:table}@media(min-width:700px){#enp-quiz .enp-results__container{max-width:840px}}@media(min-width:750pt){#enp-quiz .enp-results__container{display:flex;justify-content:space-between;max-width:750pt}}#enp-quiz .enp-quiz-scores__container,#enp-quiz .enp-results-flow__container{width:100%}@media(min-width:750pt){#enp-quiz .enp-quiz-scores__container,#enp-quiz .enp-results-flow__container{width:48%}}#enp-quiz .enp-quiz-score__line-chart{height:300px;margin-bottom:1rem}#enp-quiz .enp-quiz-score__line-chart .ct-label{color:#444}#enp-quiz .enp-quiz-score__line-chart .ct-grid{stroke:#dadada;stroke-dasharray:0}#enp-quiz .enp-quiz-score__line-chart .ct-line{stroke:#3bb275;stroke-width:2px}#enp-quiz .enp-quiz-score__line-chart .ct-point{stroke:#3bb275;stroke-width:8px}#enp-quiz .enp-quiz-scores-table{margin:0 auto;max-width:500px;width:100%}#enp-quiz .enp-quiz-scores-table tr th{background-color:#fff}#enp-quiz .enp-quiz-scores-table__label{padding-left:5%}#enp-quiz .enp-quiz-scores-table__score{padding-right:5%;text-align:right}#enp-quiz .enp-results-flow{border-radius:50%;height:20pc;margin:2rem auto;position:relative;width:20pc}@media(min-width:25pc){#enp-quiz .enp-results-flow{height:390px;width:390px}}@media(min-width:700px){#enp-quiz .enp-results-flow{height:450px;width:450px}}@media(min-width:750pt){#enp-quiz .enp-results-flow{height:25pc;width:25pc}}#enp-quiz .enp-results-flow__section-title{clip:rect(1px,1px,1px,1px);height:1px;left:-625pc;overflow:hidden;position:absolute!important;top:auto;width:1px}#enp-quiz .enp-results-flow__item{-webkit-animation:.85s slideInBottom cubic-bezier(0,0,.3,1) forwards;animation:.85s slideInBottom cubic-bezier(0,0,.3,1) forwards;border:2px solid #3bb275;border-radius:50%;height:100%;left:0;letter-spacing:.05rem;margin:0 auto;padding:12.5% 0 0;right:0;text-align:center;width:100%}#enp-quiz .enp-results-flow__item--total-views{background:#fff}#enp-quiz .enp-results-flow__item--quiz-starts{background:#eaf8f1;bottom:2.5%;height:65%;padding-top:8%;position:absolute;width:65%}#enp-quiz .enp-results-flow__item--quiz-finishes{background:#b8e8cf;bottom:5%;height:35%;position:absolute;width:35%}#enp-quiz .enp-results-flow__title{color:#444;font-size:.7rem;margin-bottom:0;text-transform:uppercase}@media(min-width:700px){#enp-quiz .enp-results-flow__title{font-weight:700;margin-bottom:2px}}#enp-quiz .enp-results-flow__number{font-size:1.4rem;font-weight:700;line-height:1.2}#enp-quiz .enp-results-flow__number--total-views{font-size:2rem}#enp-quiz .enp-results-flow__number--quiz-starts{font-size:1.65rem}#enp-quiz .enp-results-flow__percentage{color:#444;display:inline-block;font-size:.8rem;font-weight:400;left:-.1rem;position:relative;top:-.7em}#enp-quiz .enp-results-flow__percentage:after{color:#444;content:"%";font-size:.7rem;position:absolute;right:-.75rem}#enp-quiz .enp-results-questions__section{background:#f5f5f5;border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:3rem;margin-top:5rem;padding-bottom:3rem;padding-top:5rem}#enp-quiz .enp-results-questions__header{align-items:flex-start;flex-direction:column}@media(min-width:25pc){#enp-quiz .enp-results-questions__header{align-items:flex-end;display:flex;flex-direction:row;justify-content:space-between}}#enp-quiz .enp-results-questions__key,#enp-quiz .enp-results-questions__title{font-size:.85rem;text-transform:uppercase}#enp-quiz .enp-results-questions{list-style:none;margin-left:0}#enp-quiz .enp-results-question{font-size:1rem;margin-bottom:1rem;padding:0;width:100%}#enp-quiz .enp-results-question__header{padding:1rem 1.2rem;position:relative}#enp-quiz .enp-results-question__question,#enp-quiz .enp-results-question__stats{font-size:1rem;line-height:1.4}#enp-quiz .enp-results-question__question{font-weight:400}@media(min-width:25pc){#enp-quiz .enp-results-question__question{margin-bottom:0;padding-right:7em}}#enp-quiz .enp-results-question__stats{font-size:.9rem}@media(min-width:25pc){#enp-quiz .enp-results-question__stats{bottom:1rem;position:absolute;right:1.2rem;text-align:right}}#enp-quiz .enp-results-question__stats,#enp-quiz .enp-results-questions__key{font-weight:300}#enp-quiz .enp-results-question__content{padding:2rem 1.2rem 1.2rem}#enp-quiz .enp-results-question__deep-stats{display:flex;justify-content:space-around;list-style:none;margin-left:0;text-align:center}#enp-quiz .enp-results-question__deep-stat__number{font-size:1.8rem;line-height:1;position:relative}#enp-quiz .enp-results-question__deep-stat__number--correct,#enp-quiz .enp-results-question__deep-stat__number--finishes{color:#319461}#enp-quiz .enp-results-question__deep-stat__number--incorrect{color:#e97763}#enp-quiz .enp-results-question__deep-stat__number--correct:after,#enp-quiz .enp-results-question__deep-stat__number--finishes:after,#enp-quiz .enp-results-question__deep-stat__number--incorrect:after{content:"%";font-size:.9rem;position:absolute;right:-1rem;top:.3rem}#enp-quiz .enp-results-question__deep-stat__label{font-size:.8rem;text-transform:uppercase}#enp-quiz .enp-results-question__options{list-style:none;margin-bottom:0;margin-left:0}#enp-quiz .enp-results-question__option{border-top:1px solid #ddd;padding:.8rem .8rem .8rem .4rem}@media(min-width:25pc){#enp-quiz .enp-results-question__option{display:flex;flex-direction:row;justify-content:space-between}}#enp-quiz .enp-results-question__option:first-of-type{margin-top:1.4rem}#enp-quiz .enp-results-question__option--correct{background:#eaf8f1}#enp-quiz .enp-results-question__option__text{flex-grow:100;margin-right:1rem}#enp-quiz .enp-results-question__option__text__helper{font-size:.85rem;font-weight:300;margin-right:.4rem;text-transform:uppercase}@media(min-width:25pc){#enp-quiz .enp-results-question__option__icon{margin-right:.3rem;min-width:1.6rem}}#enp-quiz .enp-results-question__option__icon--incorrect{fill:#e97763;opacity:.5}#enp-quiz .enp-results-question__option__icon--correct{fill:#319461;opacity:1}#enp-quiz .enp-results-question__option__percentage--incorrect{color:#e97763}#enp-quiz .enp-results-question__option__percentage--correct{color:#319461}#enp-quiz .enp-results-question__option__number-selected{font-weight:300}#enp-quiz .enp-slider-responses__title{font-size:.85rem;font-weight:400;margin-top:1.6rem;text-transform:uppercase}#enp-quiz .enp-slider-responses__line-chart .ct-point{stroke-width:8px}#enp-quiz .enp-slider-responses__line-chart--high,#enp-quiz .enp-slider-responses__line-chart--low{stroke:#f14021}#enp-quiz .enp-slider-responses__line-chart--correct{stroke:#3bb275}#enp-quiz .enp-slider-responses-table{width:100%}#enp-quiz .enp-slider-responses-table tr:nth-child(even) td{background-color:#fff}#enp-quiz .enp-slider-responses-table tr.enp-slider-responses-table__response--correct td{background-color:#eaf8f1}#enp-quiz .enp-slider-responses-table__content{box-shadow:none;padding-top:1rem}#enp-quiz .enp-slider-responses-table--hide-zero .enp-slider-responses-table__frequency--zero{display:none}#enp-quiz .enp-slider-responses-table__response-frequency{align-items:center;display:flex;justify-content:space-between}#enp-quiz .enp-slider-responses-table__toggle-zero-frequency{background:#fff;border:0;border-radius:0;box-shadow:inset 1px 1px 0 #ccc,inset -1px -1px 0 #ccc;color:#444;cursor:pointer;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:.9rem;font-weight:400;letter-spacing:0;line-height:1.5;margin:0;min-height:3.065rem;padding:0 .6rem;position:relative;text-align:left;text-transform:none;transition:all .2s cubic-bezier(0,0,.3,1);width:auto;z-index:9}.enp-quiz-results #enp-quiz .enp-aside{border:0}.enp-quiz-results .enp-results-questions__title__quiz-title{clip:rect(1px,1px,1px,1px);height:1px;left:-625pc;overflow:hidden;position:absolute!important;top:auto;width:1px}#enp-quiz .enp-results--ab{display:block;margin-bottom:3rem}@media(min-width:750pt){#enp-quiz .enp-results--ab{align-content:flex-end;display:flex;flex-wrap:wrap;padding:10px;width:50%}#enp-quiz .enp-results--a{border-right:1px solid #ddd;padding-right:1rem}#enp-quiz .enp-results--b{padding-left:1rem}}#enp-quiz .enp-results-title--ab,#enp-quiz .enp-results__container--ab .enp-results-flow__container{min-width:100%}#enp-quiz .enp-results--loser .enp-results-flow__item{border:2px solid #f14021}#enp-quiz .enp-results--loser .enp-results-flow__item--quiz-starts{background:#feedea}#enp-quiz .enp-results--loser .enp-results-flow__item--quiz-finishes{background:#fbccc4}#enp-quiz .enp-results--loser .enp-results-questions__title,#enp-quiz .enp-results--loser th{color:#db2c0e}#enp-quiz .enp-results--winner .enp-results-questions__title,#enp-quiz .enp-results--winner th{color:#319461}#enp-quiz .enp-results-title--a,#enp-quiz .enp-results-title--b{background:transparent}#enp-quiz .enp-ab-scores{margin-left:auto;margin-right:auto;max-width:40pc;padding-left:20px;padding-right:20px}#enp-quiz .enp-ab-scores:after{clear:both;content:"";display:table}@media(min-width:700px){#enp-quiz .enp-ab-scores{max-width:840px}}@media(min-width:750pt){#enp-quiz .enp-ab-scores{max-width:750pt}}#enp-quiz .enp-ab-scores th.enp-quiz-scores-table__label,#enp-quiz .enp-ab-scores th.enp-quiz-scores-table__score{padding-left:0;padding-right:0}#enp-quiz .enp-ab-scores__title{font-size:.85rem;padding-left:50px;text-transform:uppercase}#enp-quiz .enp-quiz-score__line-chart .enp-test-loser .ct-line,#enp-quiz .enp-quiz-score__line-chart .enp-test-loser .ct-point{stroke:#f14021}#enp-quiz .enp-quiz-scores{margin-top:0}#enp-quiz .enp-ab-scores .enp-quiz-scores-table,#enp-quiz .enp-question-results{margin-bottom:1.6rem}@media(min-width:750pt){#enp-quiz .enp-ab-scores .enp-quiz-scores-table,#enp-quiz .enp-question-results{float:left;margin:0;width:48%}#enp-quiz .enp-ab-scores .enp-quiz-scores-table:first-of-type,#enp-quiz .enp-question-results:first-of-type{margin-right:4%}}#enp-quiz .enp-question-results__container{margin-left:auto;margin-right:auto;max-width:40pc;padding-left:20px;padding-right:20px}#enp-quiz .enp-question-results__container:after{clear:both;content:"";display:table}@media(min-width:700px){#enp-quiz .enp-question-results__container{max-width:840px}}@media(min-width:750pt){#enp-quiz .enp-question-results__container{max-width:750pt}}#enp-quiz .enp-question-results--ab .enp-results-questions__section{background:#fff;border:0;margin:1.6rem auto;padding:1.6rem 0}#enp-quiz .enp-question-results--ab .enp-results-questions__container{padding:0}#enp-quiz .enp-ab-new-embed-code__section{margin-bottom:2rem;margin-left:auto;margin-right:auto;max-width:540px;padding-bottom:2rem;padding-left:20px;padding-right:20px}#enp-quiz .enp-ab-new-embed-code__section:after{clear:both;content:"";display:table}#enp-quiz .enp-ab-new-embed-code__section .enp-ab-embed-code{margin:0;padding:0}#enp-quiz .enp-ab-embed-code__section{background:#f5f5f5;border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:3rem;margin-top:5rem;padding-bottom:3rem;padding-top:5rem}#enp-quiz .enp-ab-embed-code{margin-left:auto;margin-right:auto;max-width:40pc;padding-left:20px;padding-right:20px}#enp-quiz .enp-ab-embed-code:after{clear:both;content:"";display:table}#enp-quiz .enp-ab-embed-code__title{font-size:.85rem;text-transform:uppercase}#enp-quiz .enp-embed-code__textarea{margin-bottom:0}#enp-quiz .enp-embed-code__instructions{font-size:1.1rem}#enp-quiz .enp-slider{margin-bottom:1.6rem}#enp-quiz .enp-slider-input__container{align-items:center;display:flex;justify-content:center;margin:1.6rem auto;position:relative}#enp-quiz .enp-slider-input__label{color:#5e5e5e;display:block;font-size:.85rem;font-weight:400;text-transform:uppercase}#enp-quiz .enp-slider-input__prefix,#enp-quiz .enp-slider-input__suffix{font-size:1rem}#enp-quiz .enp-slider-input__prefix{margin-right:.2rem;white-space:pre}#enp-quiz .enp-slider-input__suffix{margin-left:.2rem;white-space:pre}#enp-quiz .enp-slider-input__input{background:#fff;border:1px solid #aaa;border-radius:3px;font-family:tablet-gothic,helvetica neue,helvetica,arial,sans-serif;font-size:1rem;margin-bottom:0;max-width:100%;padding:.75rem;transition:all .25s cubic-bezier(0,0,.3,1);width:auto}@media(min-width:700px){#enp-quiz .enp-slider-input__input{padding:.8rem}}#enp-quiz .enp-slider-input__input--incorrect{color:#f14021}#enp-quiz .enp-slider-input__input--correct{color:#319461}#enp-quiz .enp-slider-input__input--invalid-animation{box-shadow:0 0 2px 1px #e97763}#enp-quiz .enp-slider_input__range-helper{bottom:-1.2rem;font-size:.8rem;position:absolute}#enp-quiz .enp-slider_input__range-helper--low{left:0}#enp-quiz .enp-slider_input__range-helper--high{right:0}#enp-quiz .enp-slider-input__range-helper__number{color:#666;position:relative}#enp-quiz .ui-slider-range-show-correct__tooltip-container{position:relative}#enp-quiz .ui-slider-range-show-correct__tooltip{background-color:#fff;border:2px solid #3bb275;border-radius:50%;height:1.1rem;margin-left:-.55rem;position:absolute;top:-.4rem;width:1.1rem;z-index:9999}#enp-quiz .ui-slider-range-show-correct__tooltip--low{left:0}#enp-quiz .ui-slider-range-show-correct__tooltip--high{right:-.55rem}#enp-quiz .ui-slider-range-show-correct__tooltip__text{color:#287950;display:inline-block;font-size:.825rem;min-width:100%;position:relative;text-align:center;text-shadow:0 1px 0 #fff;top:-1.35rem}#enp-quiz .enp-slider{background:#ddd;position:relative;text-align:left}#enp-quiz .enp-slider .ui-helper-hidden{display:none}#enp-quiz .enp-slider .ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}#enp-quiz .enp-slider .ui-helper-reset{border:0;font-size:100%;line-height:1.3;list-style:none;margin:0;outline:0;padding:0;text-decoration:none}#enp-quiz .enp-slider .ui-helper-clearfix:after,#enp-quiz .enp-slider .ui-helper-clearfix:before{border-collapse:collapse;content:"";display:table}#enp-quiz .enp-slider .ui-helper-clearfix:after{clear:both}#enp-quiz .enp-slider .ui-helper-clearfix{min-height:0}#enp-quiz .enp-slider .ui-helper-zfix{filter:alpha(opacity=0);height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}#enp-quiz .enp-slider .ui-front{z-index:100}#enp-quiz .enp-slider .ui-state-disabled{cursor:default!important}#enp-quiz .enp-slider .ui-icon{background-repeat:no-repeat;display:block;overflow:hidden;text-indent:-99999px}#enp-quiz .enp-slider .ui-widget-overlay{height:100%;left:0;position:fixed;top:0;width:100%}#enp-quiz .enp-slider .ui-slider-handle{background:#fff;border:1px solid #aaa;border-radius:50%;cursor:default;height:1.2rem;margin-left:-.6rem;position:absolute;top:-.4rem;touch-action:none;transition:opacity .2s cubic-bezier(0,0,.3,1),height .18s cubic-bezier(0,0,.3,1),width .18s cubic-bezier(0,0,.3,1),transform .18s cubic-bezier(0,0,.3,1),-webkit-transform .18s cubic-bezier(0,0,.3,1);width:1.2rem;z-index:2}#enp-quiz .enp-slider .ui-slider-handle:focus{box-shadow:0 0 3px 1px #4d90fe;outline:0}#enp-quiz .enp-slider .ui-slider-handle--correct,#enp-quiz .enp-slider .ui-slider-handle--incorrect{height:1.1rem;margin-left:-.55rem;top:-.4rem;width:1.1rem}#enp-quiz .enp-slider .ui-slider-handle--incorrect{border:2px solid #f14021;z-index:1}#enp-quiz .enp-slider .ui-slider-handle--correct{border:2px solid #3bb275;z-index:99999}#enp-quiz .enp-slider .ui-slider-range{background-position:0 0;border:0;display:block;font-size:.7rem;height:100%;position:absolute;top:0;z-index:1}#enp-quiz .enp-slider .ui-slider-range-show-correct{background:#3bb275;z-index:9}#enp-quiz .enp-slider .ui-slider-range-min{background:#3bb275;left:0}#enp-quiz .enp-slider .ui-slider-range-max{right:0}#enp-quiz .enp-slider.ui-state-disabled .ui-slider-handle,#enp-quiz .enp-slider.ui-state-disabled .ui-slider-range{-webkit-filter:inherit;filter:inherit}#enp-quiz .ui-slider-horizontal{height:.3rem}#enp-quiz .enp-question__answered .enp-slider{background:#bbb}#enp-quiz .enp-question__answered .ui-slider-range-min{background:#fff} \ No newline at end of file +html{font-size:16px!important}html #enp-quiz{box-sizing:border-box}body #enp-quiz{background:#fff;overflow:hidden}#enp-quiz *,#enp-quiz :after,#enp-quiz :before{box-sizing:inherit}#enp-quiz ol,#enp-quiz ul{margin:0 0 1.6rem 1.25rem;padding:0}#enp-quiz textarea{margin-bottom:1rem}#enp-quiz button,#enp-quiz button:active,#enp-quiz button:focus,#enp-quiz button:hover,#enp-quiz iframe,#enp-quiz input[type=button],#enp-quiz input[type=button]:active,#enp-quiz input[type=button]:focus,#enp-quiz input[type=button]:hover,#enp-quiz input[type=reset],#enp-quiz input[type=reset]:active,#enp-quiz input[type=reset]:focus,#enp-quiz input[type=reset]:hover,#enp-quiz input[type=submit],#enp-quiz input[type=submit]:active,#enp-quiz input[type=submit]:focus,#enp-quiz input[type=submit]:hover{border:none}#enp-quiz .enp-screen-reader-text{clip:rect(1px,1px,1px,1px);position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#enp-quiz .enp-screen-reader-text:active,#enp-quiz .enp-screen-reader-text:focus,#enp-quiz .enp-screen-reader-text:hover{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#enp-quiz .enp-accordion-header{background:#fff;width:100%;box-shadow:inset 1px 1px 0 #ccc,inset -1px -1px 0 #ccc;color:#1d1c25;font-family:Arial,monospace,helvetica,arial,sans-serif;font-size:.9rem;font-weight:400;line-height:1.5;text-transform:none;letter-spacing:0;text-align:left;border:none;border-radius:3px;min-height:3.065rem;padding:1rem 2rem 1rem 1rem;margin:1.6rem 0 0;position:relative;z-index:9;cursor:pointer;transition:all .2s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-accordion-header:first-of-type{margin-top:0}#enp-quiz .enp-accordion-header .enp-accordion-header__icon{position:absolute;fill:#e8e4ed;right:.75rem;bottom:.75rem;transition:all .35s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-accordion-header--open .enp-accordion-header__icon{transform:rotateX(180deg)}#enp-quiz .enp-quiz-settings__form .enp-accordion-header{position:relative;overflow-y:hidden}#enp-quiz .enp-accordion-content{background:#fff;width:100%;box-shadow:inset 1px -1px 0 #ccc,inset -1px -1px 0 #ccc;display:block;position:relative;height:auto;overflow:visible;margin-bottom:1.6rem}#enp-quiz .enp-accordion-content--closed{margin-top:0;padding-top:0;animation:d .25s cubic-bezier(0,0,.3,1) forwards;display:none}#enp-quiz .enp-accordion-content--open{padding-top:1.6rem;margin-bottom:2rem;animation:b .45s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-quiz-message{max-width:80vw;margin:0 auto;background:#fff;border:1px solid #eee;border-bottom:1px solid #ccc;padding:1rem;margin-bottom:1.6rem;position:fixed;bottom:0;left:0}#enp-quiz .enp-quiz-message__title{font-size:1rem;text-transform:uppercase}#enp-quiz .enp-message__list{list-style:none;margin-left:0;font-size:1.1rem;margin-bottom:0}#enp-quiz .enp-quiz-message--error{border-left:6px solid #bf5700;color:#bf5700}#enp-quiz .enp-quiz-message__title--error{color:#964400}#enp-quiz .enp-quiz-message--success{border-left:6px solid #60aaad;color:#4e9497}#enp-quiz .enp-quiz-message__title--success{color:#4e9497}#enp-quiz .enp-quiz-message--note{border-left:6px solid #cca562}#enp-quiz .enp-quiz-message__title--note{color:#333f48}#enp-quiz .enp-quiz-message__close{border:none;background:none;box-shadow:none;padding:0;margin:0;position:absolute;top:5px;right:5px}#enp-quiz .enp-quiz-message--ajax{margin-bottom:.6rem;animation:a .3s}#enp-quiz .enp-quiz-message-ajax-container{z-index:9999;position:fixed;bottom:10px}#enp-quiz .enp-quiz-message--saving__spinner{margin-left:-10px}#enp-quiz .enp-quiz-message--saving__text{font-size:1rem}#enp-quiz input.limited-chars,#enp-quiz textarea.limited-chars{margin-bottom:.2rem}#enp-quiz .limited-chars__container{color:#fdfcfd;font-size:.8rem;display:block;text-align:right;margin-bottom:1.2rem}#enp-quiz .limited-chars__counter{color:#e8e4ed}#enp-quiz .limited-chars__container--error,#enp-quiz .limited-chars__container--error .limited-chars__counter{color:#964400}#enp-quiz input.has-error,#enp-quiz textarea.has-error{border:1px solid #bf5700}#enp-quiz input.has-error:focus,#enp-quiz textarea.has-error:focus{outline-color:#bf5700}#enp-quiz .enp-tooltip{position:relative}#enp-quiz .enp-tooltip__activator:focus+.enp-tooltip__description,#enp-quiz .enp-tooltip__activator:focus>.enp-tooltip__description{display:block}#enp-quiz .enp-tooltip__description{display:none;position:absolute;left:103%;margin-bottom:2rem;border-radius:3px;background:#faf9fb;font-size:.9rem;padding:.9rem;max-width:200px}.enp-sticky{position:relative;left:0;right:0;top:0;z-index:999}.enp-sticky.enp-sticky--fixed{position:fixed}.enp-breadcrumb-link{font-size:.85rem}.enp-breadcrumb-link__icon{position:relative;top:.45rem;left:.4rem}body #enp-quiz{color:#1d1c25;font-family:Arial,monospace,helvetica,arial,sans-serif;font-size:1em;line-height:1.6;font-weight:400}@media (min-width:700px){body #enp-quiz{font-size:1.3em}}#enp-quiz h1,#enp-quiz h2,#enp-quiz h3,#enp-quiz h4,#enp-quiz h5,#enp-quiz h6{font-family:Arial,monospace,helvetica,arial,sans-serif;color:#5d5e5f;clear:both;margin:0 0 .2rem;font-weight:700;line-height:1.2em}#enp-quiz h1{font-size:2em}#enp-quiz h2{font-size:1.75em}#enp-quiz h3{font-size:1.475em}#enp-quiz h4{font-size:1.3em}#enp-quiz h5{font-size:1.125em}#enp-quiz h6{font-size:1em}#enp-quiz p+h1,#enp-quiz p+h2,#enp-quiz p+h3,#enp-quiz p+h4,#enp-quiz p+h5,#enp-quiz p+h6,#enp-quiz ul+h1,#enp-quiz ul+h2,#enp-quiz ul+h3,#enp-quiz ul+h4,#enp-quiz ul+h5,#enp-quiz ul+h6{margin-top:1.8em}#enp-quiz p{font-size:.85em;margin-bottom:1.125em;font-weight:300}#enp-quiz ol,#enp-quiz ul{margin:0 0 1.6em 1.25em}#enp-quiz ul{list-style:disc}#enp-quiz ol{list-style:decimal}#enp-quiz li>ol,#enp-quiz li>ul{margin-bottom:0;margin-left:1.6em}#enp-quiz b,#enp-quiz strong{font-weight:700}#enp-quiz cite,#enp-quiz dfn,#enp-quiz em{font-family:georgia,times,serif;font-style:italic}#enp-quiz pre{background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.95em;line-height:1.6;margin-bottom:1.6em;padding:1.6em;overflow:auto;max-width:100%;overflow:scroll;max-width:68vw;overflow-wrap:break-word}#enp-quiz .code,#enp-quiz code,#enp-quiz kbd,#enp-quiz tt,#enp-quiz var{font:.7em Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace}#enp-quiz table{border:none}#enp-quiz table th{font-size:.8rem;text-transform:uppercase;border:none;border-bottom:1px solid #ddd}#enp-quiz table td,#enp-quiz table th{font-family:Arial,monospace,helvetica,arial,sans-serif}#enp-quiz table td{font-size:1rem;border:none;border-bottom:1px solid #eee}#enp-quiz table tr:nth-child(2n) td{background:#fdfcfd}#enp-quiz table tr:last-child td{border-bottom:none}#enp-quiz figure{margin:0}#enp-quiz img{height:auto;max-width:100%}#enp-quiz a{color:#bf5700;text-decoration:none;transition:color .2s;touch-action:manipulation}#enp-quiz a .enp-icon{fill:#bf5700}#enp-quiz a:active,#enp-quiz a:focus,#enp-quiz a:hover{color:#964400}#enp-quiz a:active .enp-icon,#enp-quiz a:focus .enp-icon,#enp-quiz a:hover .enp-icon{fill:#964400}#enp-quiz button:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6}#enp-quiz .enp-btn:focus,#enp-quiz .enp-btn:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-btn:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-btn:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn:disabled,#enp-quiz .enp-btn:disabled:focus,#enp-quiz .enp-btn:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-btn--add{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6;border:1px dashed #a897ba;background:none;color:#545454;box-shadow:none;width:100%}#enp-quiz .enp-btn--add:focus,#enp-quiz .enp-btn--add:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-btn--add:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-btn--add:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn--add:disabled,#enp-quiz .enp-btn--add:disabled:focus,#enp-quiz .enp-btn--add:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-btn--add:focus,#enp-quiz .enp-btn--add:hover{border:1px dashed #69547e;color:#a897ba;background:hsla(0,0%,100%,.9)}#enp-quiz .enp-btn--disabled{opacity:.65;cursor:default}#enp-quiz .enp-btn--enabled{animation:f .6s}#enp-quiz .enp-icon{width:24px;height:24px;transition:all .2s}#enp-quiz .enp-page-title{font-size:1.6rem}@keyframes a{0%{opacity:0;transform:translate3d(0,100px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes b{0%{opacity:0;height:auto;transform:translate3d(0,-20px,0)}to{opacity:1;height:auto;transform:translateZ(0)}}@keyframes c{0%{opacity:0;height:auto;transform:translate3d(0,-20px,0)}to{opacity:.8;height:auto;transform:translateZ(0)}}@keyframes d{0%{overflow:hidden;height:100px;opacity:1;transform:translateZ(0)}to{height:0;opacity:0;transform:translate3d(0,-20px,0)}}@keyframes e{0%{opacity:1;transform:translateZ(0)}to{padding:0;margin:0;opacity:0;height:0;z-index:-1;transform:translate3d(-200px,0,0)}}@keyframes f{0%{opacity:.8;transform:scaleX(1);box-shadow:0 0 0 rgba(0,0,0,.3)}40%{opacity:1}70%{opacity:1;transform:scale3d(1.1,1.1,1);box-shadow:0 0 8px rgba(0,0,0,.4)}to{opacity:1;transform:scaleX(1);box-shadow:0 0 0 rgba(0,0,0,.3),inset 0 2px 0 rgba(0,0,0,.2)}}@keyframes g{0%{opacity:0}to{opacity:1}}@keyframes h{0%{transform:translate3d(0,-200px,0)}to{transform:translateZ(0)}}.spinner{margin:0 auto;width:70px;text-align:center}.spinner>div{width:18px;height:18px;background-color:#333;border-radius:100%;display:inline-block;animation:i 1.4s infinite ease-in-out both}.spinner .bounce1{animation-delay:-.32s}.spinner .bounce2{animation-delay:-.16s}@keyframes i{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}#enp-quiz{transition:background .25s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-aside{padding:1.6rem;margin-bottom:1.6rem;background:#94a6b3;border-radius:3px;border:1px solid #eee;border-bottom-color:#ccc;max-width:80vw;margin:0 auto;font-size:1.2rem;background:#faf9fb}@media (min-width:700px){#enp-quiz .enp-aside{margin-bottom:2.6rem;padding:1.6rem 2rem}}#enp-quiz .enp-aside__title{font-size:1rem;text-transform:uppercase;font-weight:600}#enp-quiz .enp-page-title{border-bottom:2px solid #00a9b7}#enp-quiz fieldset{border:none;margin:0;padding:0}#enp-quiz .enp-label{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase}#enp-quiz .enp-label__sm{font-size:.85rem}#enp-quiz .enp-label.enp-quiz-winlose__label{padding:1rem 0 0}#enp-quiz .enp-legend{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;padding-top:1.6rem;margin-bottom:.2rem;border:none;padding-top:0}#enp-quiz .enp-input{font-size:1rem;font-family:Arial,monospace,helvetica,arial,sans-serif;padding:.8rem .5rem;background:#fff;border:1px solid #aaa;border-radius:3px;width:20rem;max-width:100%;margin-bottom:1.2rem}@media (min-width:700px){#enp-quiz .enp-input{padding:.8rem;width:100%}}#enp-quiz .enp-input__sm{padding:5px;margin-bottom:5px}#enp-quiz .enp-input.enp-input--has-description{margin-bottom:.2rem}#enp-quiz .enp-input-description,#enp-quiz .enp-textarea-description{margin-bottom:1rem;font-size:.85rem}#enp-quiz .enp-input-description--before,#enp-quiz .enp-textarea-description--before{margin-bottom:0}#enp-quiz .enp-input::-webkit-input-placeholder,#enp-quiz .enp-textarea::-webkit-input-placeholder{font-family:Arial,monospace,helvetica,arial,sans-serif;font-weight:300;color:#7a7697}#enp-quiz .enp-input:-ms-input-placeholder,#enp-quiz .enp-input::-ms-input-placeholder,#enp-quiz .enp-textarea:-ms-input-placeholder,#enp-quiz .enp-textarea::-ms-input-placeholder{font-family:Arial,monospace,helvetica,arial,sans-serif;font-weight:300;color:#7a7697}#enp-quiz .enp-input::placeholder,#enp-quiz .enp-textarea::placeholder{font-family:Arial,monospace,helvetica,arial,sans-serif;font-weight:300;color:#7a7697}#enp-quiz .enp-textarea{font-size:1rem;font-family:Arial,monospace,helvetica,arial,sans-serif;padding:.8rem .5rem;background:#fff;border:1px solid #aaa;border-radius:3px;width:20rem;max-width:100%;margin-bottom:1.2rem;line-height:1.5}@media (min-width:700px){#enp-quiz .enp-textarea{padding:.8rem;width:100%}}#enp-quiz .enp-textarea:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-textarea.enp-textarea--has-description{margin-bottom:.2rem}#enp-quiz .enp-textarea.enp-textarea--has-description--before{margin-bottom:1.2rem}#enp-quiz .enp-embed-code{font-size:1rem;font-family:Arial,monospace,helvetica,arial,sans-serif;padding:.8rem .5rem;background:#fff;border:1px solid #aaa;border-radius:3px;width:20rem;max-width:100%;margin-bottom:1.2rem;line-height:1.5;padding:1.6rem;font-size:.7rem;font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace}@media (min-width:700px){#enp-quiz .enp-embed-code{padding:.8rem;width:100%}}#enp-quiz .enp-embed-code:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-preview-page-container,#enp-quiz .enp-publish-page-container,#enp-quiz .enp-quiz-form-container{display:grid;grid-column:2/-1;gap:1rem;width:100%;justify-items:center}@media (min-width:700px){#enp-quiz .enp-preview-page-container,#enp-quiz .enp-publish-page-container,#enp-quiz .enp-quiz-form-container{justify-items:start}}#enp-quiz .enp-quiz-form{display:grid;padding-left:0;padding-right:0}@media (min-width:1000px){#enp-quiz .enp-quiz-form{width:100%;max-width:40rem}}#enp-quiz .enp-preview-page-flex-container{display:grid;gap:1rem}@media (min-width:700px){#enp-quiz .enp-preview-page-flex-container{grid-template-columns:1fr 3fr}}#enp-quiz .enp-quiz-title__label{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;font-weight:500}#enp-quiz .enp-quiz-title__textarea{font-size:1rem;font-family:Arial,monospace,helvetica,arial,sans-serif;padding:.8rem .5rem;background:#fff;border:1px solid #aaa;border-radius:3px;width:20rem;max-width:100%;margin-bottom:1.2rem;font-weight:700;font-size:1.6rem;margin-bottom:1rem}@media (min-width:700px){#enp-quiz .enp-quiz-title__textarea{padding:.8rem;width:100%}}#enp-quiz .enp-quiz-title__textarea::-webkit-input-placeholder{font-weight:700}#enp-quiz .enp-quiz-title__textarea:-ms-input-placeholder,#enp-quiz .enp-quiz-title__textarea::-ms-input-placeholder{font-weight:700}#enp-quiz .enp-quiz-title__textarea::placeholder{font-weight:700}#enp-quiz textarea{color:#000}#enp-quiz .enp-accordion-container{margin-bottom:1.6rem;position:relative}#enp-quiz .enp-question-content{background:#fff;width:100%;padding-top:0;position:relative}#enp-quiz .enp-question-inner{padding:1.6rem 1.6rem 1rem}@media (min-width:700px){#enp-quiz .enp-question-inner{padding-right:2.8rem;padding-left:2.9rem}}#enp-quiz .enp-question-title__label{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;font-weight:500}#enp-quiz .enp-question-title__textarea{font-family:Arial,monospace,helvetica,arial,sans-serif;padding:.8rem .5rem;background:#fff;border:1px solid #aaa;border-radius:3px;width:20rem;max-width:100%;margin-bottom:1.2rem;padding:1rem 1.2rem;font-size:1rem}@media (min-width:700px){#enp-quiz .enp-question-title__textarea{padding:.8rem;width:100%}}#enp-quiz .enp-question-image-upload{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;line-height:1.6;border:1px dashed #a897ba;background:none;color:#545454;box-shadow:none;border:2px dashed #a897ba;color:#e8e4ed;transition:all .2s;background:#faf9fb;font-size:1rem;text-transform:uppercase;position:relative;margin-bottom:2rem;transform:translateZ(0);transition:all .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-question-image-upload:focus,#enp-quiz .enp-question-image-upload:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-question-image-upload:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-question-image-upload:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-question-image-upload:disabled,#enp-quiz .enp-question-image-upload:disabled:focus,#enp-quiz .enp-question-image-upload:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-question-image-upload:focus,#enp-quiz .enp-question-image-upload:hover{border:1px dashed #69547e;background:hsla(0,0%,100%,.9);color:#a897ba;border:2px dashed #999}#enp-quiz .enp-question-image-upload .enp-question-image-upload__icon--photo{width:2.8rem;height:2.8rem;opacity:0;position:absolute;top:0;left:0;right:0;margin:0 auto;transform:translateZ(0);z-index:-1;transition:opacity .2s,transform .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-question-image-upload .enp-question-image-upload__icon--add{width:1rem;height:1rem;border-radius:50%;fill:#fff;padding:.02rem;background:#e8e4ed;fill:#faf9fb;margin-right:5px;position:relative;top:.2rem}#enp-quiz .enp-question-image-upload:active,#enp-quiz .enp-question-image-upload:focus,#enp-quiz .enp-question-image-upload:hover{padding-top:5rem;padding-bottom:2rem}#enp-quiz .enp-question-image-upload:active .enp-question-image-upload__icon--photo,#enp-quiz .enp-question-image-upload:focus .enp-question-image-upload__icon--photo,#enp-quiz .enp-question-image-upload:hover .enp-question-image-upload__icon--photo{opacity:1;z-index:1;transform:translate3d(0,1.75rem,0)}#enp-quiz .enp-question-image-upload:active .enp-question-image-upload__icon--add,#enp-quiz .enp-question-image-upload:focus .enp-question-image-upload__icon--add,#enp-quiz .enp-question-image-upload:hover .enp-question-image-upload__icon--add{fill:#fff;background:#a897ba}#enp-quiz .enp-question-image__container{position:relative;margin-bottom:1rem}#enp-quiz .enp-question-image{margin-bottom:1.2rem}#enp-quiz .enp-question-type__legend{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;padding-top:1.6rem;margin-bottom:.2rem;border:none}#enp-quiz .enp-question-type__input{clip:rect(1px,1px,1px,1px);position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#enp-quiz .enp-question-type__label{text-transform:capitalize;display:inline-block;padding:.2rem .5rem;border-radius:3px;cursor:pointer}#enp-quiz .enp-question-type__input:checked+.enp-question-type__label{background:#00a9b7;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.7)}#enp-quiz .enp-question-type__input:focus+.enp-question-type__label{z-index:8;outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-question-type__label{position:relative;z-index:9}#enp-quiz .enp-mc-options,#enp-quiz .enp-slider-options{margin-top:0;display:none;animation:d .25s cubic-bezier(0,0,.3,1) forwards;animation-delay:0s,.05s}#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options,#enp-quiz .enp-question-type__input--slider:checked~.enp-slider-options{visibility:visible;display:block;animation:g .45s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-mc-options__list{list-style:none;margin-left:0}#enp-quiz .enp-mc-option{position:relative;padding-left:6px}@media (min-width:700px){#enp-quiz .enp-mc-option{padding-left:0}}#enp-quiz .enp-mc-options__legend{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;font-weight:500}#enp-quiz .enp-mc-option__add,#enp-quiz .enp-mc-option__button--correct,#enp-quiz .enp-mc-option__button--delete{display:none}#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options .enp-mc-option__add,#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options .enp-mc-option__button--correct,#enp-quiz .enp-question-type__input--mc:checked~.enp-mc-options .enp-mc-option__button--delete{display:block}#enp-quiz .enp-button__question-image-delete,#enp-quiz .enp-mc-option__button--delete{border:none;background:none;box-shadow:none;padding:0;margin:0;position:absolute;top:9px;right:-24px;fill:#bbb;cursor:pointer}@media (min-width:700px){#enp-quiz .enp-button__question-image-delete,#enp-quiz .enp-mc-option__button--delete{right:-30px}}#enp-quiz .enp-button__question-image-delete:focus,#enp-quiz .enp-button__question-image-delete:hover,#enp-quiz .enp-mc-option__button--delete:focus,#enp-quiz .enp-mc-option__button--delete:hover{fill:#bf5700}#enp-quiz .enp-mc-option__button--correct{border:none;background:none;box-shadow:none;padding:0;margin:0;position:absolute;top:8px;left:-24px}@media (min-width:700px){#enp-quiz .enp-mc-option__button--correct{left:-35px}}#enp-quiz .enp-mc-option__button--correct .enp-mc-option__icon--correct{border-radius:50%;padding:.05em;width:28px;height:28px;fill:#fff;background:#fff;cursor:pointer;border:2px solid #c1893e;transition:all .2s}@media (min-width:700px){#enp-quiz .enp-mc-option__button--correct .enp-mc-option__icon--correct{padding:.15em}}#enp-quiz .enp-mc-option__button--correct:focus .enp-mc-option__icon--correct,#enp-quiz .enp-mc-option__button--correct:hover .enp-mc-option__icon--correct{background:#fff;border-color:#60aaad;fill:#60aaad}#enp-quiz .enp-mc-option__button--correct:disabled{opacity:1}#enp-quiz .enp-mc-option__button--correct:disabled .enp-mc-option__icon--correct{cursor:default;fill:#fff;border:2px solid transparent}#enp-quiz .enp-mc-option--correct .enp-mc-option__input{box-shadow:inset 0 0 3px #00a9b7;border:1px solid #00a9b7}#enp-quiz .enp-mc-option--correct .enp-mc-option__button--correct:focus .enp-mc-option__icon--correct,#enp-quiz .enp-mc-option--correct .enp-mc-option__button--correct:hover .enp-mc-option__icon--correct,#enp-quiz .enp-mc-option--correct .enp-mc-option__icon--correct{fill:#fff;border-color:#00a9b7;background:#00a9b7}#enp-quiz .enp-mc-option__add{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;line-height:1.6;border:1px dashed #a897ba;background:none;color:#545454;box-shadow:none;border:2px dashed #a897ba;color:#e8e4ed;transition:all .2s;background:#faf9fb;font-size:1rem;text-transform:uppercase;text-align:left;padding:.7rem .75rem .8rem}#enp-quiz .enp-mc-option__add:focus,#enp-quiz .enp-mc-option__add:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-mc-option__add:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-mc-option__add:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-mc-option__add:disabled,#enp-quiz .enp-mc-option__add:disabled:focus,#enp-quiz .enp-mc-option__add:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-mc-option__add:focus,#enp-quiz .enp-mc-option__add:hover{border:1px dashed #69547e;background:hsla(0,0%,100%,.9);color:#a897ba;border:2px dashed #999}#enp-quiz .enp-mc-option__add .enp-mc-option__add__icon{width:1rem;height:1rem;border-radius:50%;fill:#fff;padding:.02rem;margin-right:5px;background:#e8e4ed;fill:#faf9fb;position:relative;top:.2rem}#enp-quiz .enp-mc-option__add:hover .enp-mc-option__add__icon{fill:#fff;background:#a897ba}#enp-quiz .enp-slider-options .enp-input{max-width:11.8rem}#enp-quiz .enp-slider-correct__container .enp-input,#enp-quiz .enp-slider-range__container .enp-input{max-width:8.8rem}@media (min-width:400px){#enp-quiz .enp-slider-correct__container .enp-input,#enp-quiz .enp-slider-range__container .enp-input{max-width:11.8rem}}#enp-quiz .enp-slider-preview{border:1px solid #ddd;margin-top:.2rem;margin-bottom:1.6rem;padding:1.6rem 1.6rem .6rem;position:relative}#enp-quiz .enp-slider-preview .enp-label--slider-preview{position:absolute;width:100%;top:.2rem;left:.4rem;font-size:.75rem;text-transform:uppercase}#enp-quiz .enp-slider-correct__container,#enp-quiz .enp-slider-range__container{display:flex;justify-content:space-between;align-items:center}#enp-quiz .enp-slider-correct__helper,#enp-quiz .enp-slider-range__helper{color:#777;font-size:.85rem;background:#fff;padding:0 .3rem;position:relative}#enp-quiz .enp-slider-correct__helper:before,#enp-quiz .enp-slider-range__helper:before{content:"";position:absolute;top:44%;height:4px;background:#ddd;width:120px;left:-60px;z-index:-1;transition:width .7s cubic-bezier(0,0,.3,1),background 1.6s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-slider-options{margin-bottom:2rem}#enp-quiz .enp-slider-options .enp-accordion-header{text-transform:uppercase;font-size:.85rem;padding:.675rem}#enp-quiz .enp-slider-options .enp-slider-advanced-options__content{border:none;box-shadow:none;padding-top:1rem;padding-bottom:0;margin-bottom:0}#enp-quiz .enp-slider-correct-high__container{position:relative}#enp-quiz .enp-slider-correct-high__input-container--hidden{display:none}#enp-quiz .enp-slider-correct__helper--hidden:before{width:0;background:#60aaad}#enp-quiz .enp-slider-correct-answer-range--add-range{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;line-height:1.6;border:1px dashed #a897ba;background:none;color:#545454;box-shadow:none;border:2px dashed #a897ba;color:#e8e4ed;transition:all .2s;background:#faf9fb;margin-left:.8rem;font-size:.7rem}#enp-quiz .enp-slider-correct-answer-range--add-range:focus,#enp-quiz .enp-slider-correct-answer-range--add-range:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-slider-correct-answer-range--add-range:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-slider-correct-answer-range--add-range:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-slider-correct-answer-range--add-range:disabled,#enp-quiz .enp-slider-correct-answer-range--add-range:disabled:focus,#enp-quiz .enp-slider-correct-answer-range--add-range:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-slider-correct-answer-range--add-range:focus,#enp-quiz .enp-slider-correct-answer-range--add-range:hover{border:1px dashed #69547e;background:hsla(0,0%,100%,.9);color:#a897ba;border:2px dashed #999}@media (min-width:400px){#enp-quiz .enp-slider-correct-answer-range--add-range{font-size:.8rem;padding:.7rem}}@media (min-width:700px){#enp-quiz .enp-slider-correct-answer-range--add-range{padding:.7rem 1.2rem;min-width:11.4rem}}#enp-quiz .enp-slider-correct-answer-range--add-range .enp-slider-correct-answer-range__icon{width:1rem;height:1rem;border-radius:50%;fill:#fff;padding:.02rem;margin-right:5px;background:#e8e4ed;fill:#faf9fb;position:relative;left:-.2rem}#enp-quiz .enp-slider-correct-answer-range--add-range:hover .enp-slider-correct-answer-range__icon{fill:#fff;background:#a897ba}#enp-quiz .enp-slider-correct-answer-range--remove-range{position:absolute;right:-1.6rem;bottom:1.6rem;background:none;border:none;box-shadow:none;padding:0 .1rem}#enp-quiz .enp-slider-correct-answer-range--remove-range .enp-slider-correct-answer-range__icon{width:1.2em;height:1.2em;fill:#e8e4ed}#enp-quiz .enp-slider-correct-answer-range--remove-range:focus .enp-slider-correct-answer-range__icon,#enp-quiz .enp-slider-correct-answer-range--remove-range:hover .enp-slider-correct-answer-range__icon{fill:#bf5700}@media (min-width:700px){#enp-quiz .enp-slider-correct-answer-range--remove-range{top:-.2rem;right:-.2rem;bottom:auto}}#enp-quiz .enp-slider-options .enp-input:-moz-read-only{background:#faf9fb}#enp-quiz .enp-slider-options .enp-input:read-only{background:#faf9fb}#enp-quiz .enp-answer-explanation{background:#faf9fb;padding-top:2rem;box-shadow:inset 1px 0 0 #ccc,inset -1px -1px 0 #ccc,inset 0 1px 0 #ddd}#enp-quiz .enp-answer-explanation__label{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;font-weight:500}#enp-quiz .enp-question__button--delete{border:none;background:none;box-shadow:none;padding:0;margin:0;position:absolute;top:9px;right:9px;fill:#bbb;cursor:pointer}@media (min-width:700px){#enp-quiz .enp-question__button--delete{right:-30px}}#enp-quiz .enp-question__button--delete:hover{fill:#bf5700}#enp-quiz .enp-question__move{position:absolute;left:15px}@media (min-width:700px){#enp-quiz .enp-question__move{left:-40px}}#enp-quiz .enp-sort__placeholder{background:#ddd;height:60px;width:100%;max-height:120px;margin-bottom:1.6rem}#enp-quiz .ui-sortable .ui-sortable-helper .ui-sortable-handle{cursor:move;cursor:grabbing;cursor:-webkit-grabbing}#enp-quiz .enp-question__button--move{border:none;background:none;box-shadow:none;padding:0;margin:0;position:absolute;fill:#bbb;cursor:pointer}#enp-quiz .enp-question__button--move:focus,#enp-quiz .enp-question__button--move:hover{fill:#333}#enp-quiz .enp-question__button--move:disabled{opacity:.5}#enp-quiz .enp-question__button--move--up{top:-25px;left:-4px}#enp-quiz .enp-question__button--move--down{top:3px;right:-20px}#enp-quiz .enp-quiz-form__add-question{padding:.75em .8em .7em 1.4em;text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6;border:1px dashed #a897ba;background:none;color:#545454;box-shadow:none;padding-top:1rem;padding-bottom:1rem;margin-top:1.6rem;margin-bottom:2rem}#enp-quiz .enp-quiz-form__add-question:focus,#enp-quiz .enp-quiz-form__add-question:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-quiz-form__add-question:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-quiz-form__add-question:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-form__add-question:disabled,#enp-quiz .enp-quiz-form__add-question:disabled:focus,#enp-quiz .enp-quiz-form__add-question:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-quiz-form__add-question:focus,#enp-quiz .enp-quiz-form__add-question:hover{border:1px dashed #69547e;color:#a897ba;background:hsla(0,0%,100%,.9)}#enp-quiz .enp-quiz-form__add-question .enp-add-question__icon{width:1rem;height:1rem;border-radius:50%;fill:#fff;padding:.02rem;margin-right:5px;width:1.2rem;height:1.2rem;background:#e8e4ed;fill:#faf9fb;position:relative;top:.2rem}#enp-quiz .enp-quiz-form__add-question:hover .enp-add-question__icon{fill:#fff;background:#a897ba}#enp-quiz .enp-btn--save__btns{display:flex;align-items:center;align-items:flex-start}#enp-quiz .enp-quiz-form__save{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6;width:100%;margin-bottom:1rem;opacity:.8;text-shadow:0 -1px 2px rgba(0,0,0,.6)}#enp-quiz .enp-quiz-form__save:focus,#enp-quiz .enp-quiz-form__save:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-quiz-form__save:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-quiz-form__save:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-form__save:disabled,#enp-quiz .enp-quiz-form__save:disabled:focus,#enp-quiz .enp-quiz-form__save:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-quiz-form__save:focus,#enp-quiz .enp-quiz-form__save:hover{opacity:1}@media (min-width:400px){#enp-quiz .enp-quiz-form__save{padding:1.2rem 1.8rem 1.1rem;margin-right:3%;position:relative}}#enp-quiz .enp-quiz-form__save--reveal{animation:c .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-btn--next-step{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6;padding:.65em 1.2em .85em 1.4em}#enp-quiz .enp-btn--next-step:focus,#enp-quiz .enp-btn--next-step:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-btn--next-step:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-btn--next-step:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-btn--next-step:disabled,#enp-quiz .enp-btn--next-step:disabled:focus,#enp-quiz .enp-btn--next-step:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-btn--next-step__icon{border-radius:50%;fill:#fff;background:#fff;fill:#bf5700;width:1.2rem;height:1.2rem;margin-left:.5em;position:relative;top:.15rem}#enp-quiz .enp-btn--next-step__icon:hover{background:#fff;fill:#964400}#enp-quiz .enp-btn--next-step{width:100%;padding:1rem 1.4rem}@media (min-width:700px){#enp-quiz .enp-btn--next-step{padding:1.2rem 1.8rem 1.1rem}}#enp-quiz .enp-btn--next-step .enp-btn--next-step__icon{width:1rem;height:1rem}#enp-quiz .enp-btn--next-step--reveal{animation:b .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-accordion-header--inserting,#enp-quiz .enp-mc-option--inputs{animation:a .4s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-mc-option--remove,#enp-quiz .enp-question--remove,#enp-quiz .enp-question__image--remove{animation:e .5s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-image-upload-wait{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;line-height:1.6;border:1px dashed #a897ba;background:none;color:#545454;box-shadow:none;border:2px dashed #a897ba;color:#e8e4ed;transition:all .2s;background:#faf9fb;padding-top:4rem;padding-bottom:4rem;margin-bottom:1rem;width:100%}#enp-quiz .enp-image-upload-wait:focus,#enp-quiz .enp-image-upload-wait:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-image-upload-wait:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-image-upload-wait:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-image-upload-wait:disabled,#enp-quiz .enp-image-upload-wait:disabled:focus,#enp-quiz .enp-image-upload-wait:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-image-upload-wait:focus,#enp-quiz .enp-image-upload-wait:hover{border:1px dashed #69547e;background:hsla(0,0%,100%,.9);color:#a897ba;border:2px dashed #999}#enp-quiz .enp-accordion-header.question-has-error{color:#bf5700;box-shadow:0 0 3px #bf5700}.enp-quiz.ui-sortable--sorting #enp-quiz .enp-accordion-content{display:none}#enp-quiz .enp-quiz-settings__title,#enp-quiz .enp-quiz-share__legend{position:relative;font-size:1rem;text-transform:uppercase;font-weight:600;padding-top:0}@media (min-width:700px){#enp-quiz .enp-quiz-settings__title,#enp-quiz .enp-quiz-share__legend{padding:1em 0}}#enp-quiz .enp-quiz-settings__form{margin-bottom:3rem;overflow:visible}@media (min-width:1000px){#enp-quiz .enp-quiz-settings__form{padding:0;margin-bottom:0}}@media (min-width:700px){#enp-quiz .enp-fieldset{position:relative}}#enp-quiz .enp-title-display__legend{padding-top:0}@media (min-width:700px){#enp-quiz .enp-title-display__legend{padding-top:.4rem}}#enp-quiz .enp-quiz-share__input,#enp-quiz .enp-quiz-styles__input{width:100%}#enp-quiz .enp-quiz-styles__textarea--custom-css{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9rem;min-height:200px}#enp-quiz .enp-fieldset--section{padding:1.6rem 1rem}@media (min-width:1000px){#enp-quiz .enp-fieldset--section{padding:1rem}}#enp-quiz .enp-fieldset--section.enp-accordion-content--open{margin-bottom:0}#enp-quiz .enp-quiz-share--facebook{margin-bottom:2rem}#enp-quiz .enp-title-display__legend{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;padding-top:1.6rem;margin-bottom:.2rem;border:none}#enp-quiz .enp-title-display__input{clip:rect(1px,1px,1px,1px);position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#enp-quiz .enp-title-display__label{text-transform:capitalize;display:inline-block;padding:.2rem .5rem;border-radius:3px;cursor:pointer}#enp-quiz .enp-title-display__input:checked+.enp-title-display__label{background:#00a9b7;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.7)}#enp-quiz .enp-title-display__input:focus+.enp-title-display__label{z-index:8;outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-mc-options-order__legend{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;padding-top:1.6rem;margin-bottom:.2rem;border:none}#enp-quiz .enp-mc-options-order__input{clip:rect(1px,1px,1px,1px);position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#enp-quiz .enp-mc-options-order__label{text-transform:capitalize;display:inline-block;padding:.2rem .5rem;border-radius:3px;cursor:pointer}#enp-quiz .enp-mc-options-order__input:checked+.enp-mc-options-order__label{background:#00a9b7;color:#fff;text-shadow:0 0 1px rgba(0,0,0,.7)}#enp-quiz .enp-mc-options-order__input:focus+.enp-mc-options-order__label{z-index:8;outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-mc-options-order{margin-bottom:1.6rem}#enp-quiz .enp-quiz-share__textarea{min-height:7.6rem;margin-bottom:2rem}@media (min-width:700px){#enp-quiz .enp-quiz-share__textarea{min-height:4.6rem}}@media (min-width:1000px){#enp-quiz .enp-quiz-share__textarea{min-height:7.6rem}}#enp-quiz .enp-preview-form__submit{margin-top:1.6rem;margin-bottom:1.6rem}#enp-quiz .enp-quiz-preview__title{font-size:1rem;text-transform:uppercase;font-weight:600}@media (min-width:700px){#enp-quiz .enp-quiz-preview__title{padding:1em 0}}#enp-quiz .enp-preview-form__submit{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6;width:100%;padding-top:.85rem;padding-bottom:.85rem;margin-bottom:1rem;opacity:.8;text-shadow:0 -1px 2px rgba(0,0,0,.6)}#enp-quiz .enp-preview-form__submit:focus,#enp-quiz .enp-preview-form__submit:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-preview-form__submit:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-preview-form__submit:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-preview-form__submit:disabled,#enp-quiz .enp-preview-form__submit:disabled:focus,#enp-quiz .enp-preview-form__submit:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-preview-form__submit:focus,#enp-quiz .enp-preview-form__submit:hover{opacity:1}#enp-quiz .enp-preview-form__submit--publish{width:100%;position:relative;z-index:99999999;padding:1.05rem 1.8rem .95rem}#enp-quiz .enp-quiz-styles__iris-wrapper{position:relative}#enp-quiz .iris-picker{box-sizing:content-box;position:relative;z-index:9999999999;top:-1.2rem;margin-bottom:1rem;padding-bottom:3rem;padding-right:30px}@media (min-width:1000px){#enp-quiz .iris-picker{position:absolute;top:50px;left:0}}#enp-quiz .iris-picker:last-of-type{margin-bottom:0}#enp-quiz .iris-picker .ui-draggable-handle:focus .ui-slider-handle,#enp-quiz .iris-picker .ui-slider-handle:focus{box-shadow:0 0 3px rgba(0,0,0,.75)}#enp-quiz .enp-quiz-styles__set-default{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6;border:2px solid #bf5700;background:transparent;color:#bf5700;box-shadow:none;font-size:.75rem;position:absolute;left:10px;bottom:10px}#enp-quiz .enp-quiz-styles__set-default:focus,#enp-quiz .enp-quiz-styles__set-default:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-quiz-styles__set-default:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-quiz-styles__set-default:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-styles__set-default:disabled,#enp-quiz .enp-quiz-styles__set-default:disabled:focus,#enp-quiz .enp-quiz-styles__set-default:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-quiz-styles__set-default:focus,#enp-quiz .enp-quiz-styles__set-default:hover{background:transparent;border:2px solid #964400;color:#964400}#enp-quiz .enp-iris__close{border:none;background:none;box-shadow:none;padding:0;margin:0;position:absolute;top:5px;right:5px;fill:#888;cursor:pointer}#enp-quiz .enp-quiz-styles__input--color{padding-left:45px}#enp-quiz .enp-quiz-styles__color-demo{width:30px;height:30px;border:1px solid #ccc;top:8px;left:8px;border-radius:3px;position:absolute}@media (min-width:700px){#enp-quiz .enp-share-quiz__container{padding:0;border:none}}#enp-quiz .enp-share-quiz__url{display:block;font-size:1rem;line-height:1.4;word-wrap:break-word}#enp-quiz .enp-share-quiz{list-style:none;margin-left:0;display:flex;justify-content:center;align-content:center;align-items:center}#enp-quiz .enp-share-quiz__item{margin-right:20px}#enp-quiz .enp-share-quiz__item:last-child{margin-right:0}#enp-quiz .enp-share-quiz__item__icon{width:2.4rem;height:2.4rem;border-radius:50%;fill:#fff;padding:.6rem;fill:#fff!important}#enp-quiz .enp-share-quiz__item__icon--facebook{background-color:#3a5795}#enp-quiz .enp-share-quiz__item__icon--twitter{background-color:#4099ff}#enp-quiz .enp-share-quiz{justify-content:space-around;margin-bottom:0}#enp-quiz .enp-share-quiz .enp-icon--mail{background:#00a9b7}#enp-quiz .enp-ab-create__container{max-width:80vw;margin:0 auto;width:100%;background:#fdfcfd;padding-top:3rem;padding-bottom:3rem}@media (min-width:700px){#enp-quiz .enp-ab-create__container{max-width:1000px}}@media (min-width:1000px){#enp-quiz .enp-ab-create__container{max-width:1440px;padding-top:0}}#enp-quiz .enp-ab-create__form{max-width:80vw;margin:0 auto}@media (min-width:1000px){#enp-quiz .enp-ab-create__form{max-width:80vw;margin:0 auto;margin:unset}}#enp-quiz .enp-ab-create__label{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase;font-weight:500}#enp-quiz .enp-ab-create-title__textarea{font-size:1rem;font-family:Arial,monospace,helvetica,arial,sans-serif;padding:.8rem .5rem;background:#fff;border:1px solid #aaa;border-radius:3px;width:20rem;max-width:100%;margin-bottom:1.2rem;font-weight:700;font-size:1.6rem;margin-bottom:1rem;width:100%}@media (min-width:700px){#enp-quiz .enp-ab-create-title__textarea{padding:.8rem;width:100%}}#enp-quiz .enp-ab-create-title__textarea::-webkit-input-placeholder{font-weight:700}#enp-quiz .enp-ab-create-title__textarea:-ms-input-placeholder,#enp-quiz .enp-ab-create-title__textarea::-ms-input-placeholder{font-weight:700}#enp-quiz .enp-ab-create-title__textarea::placeholder{font-weight:700}#enp-quiz .enp-ab-create__select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:.85rem;padding:.7rem 32px .7rem .8rem;border:1px solid #bbb;border-radius:3px;margin-bottom:1.6rem;background:url(../svg/chevron-down.svg) 100% 50% no-repeat;background-color:#fff;box-shadow:inset -26px 0 0 rgba(0,0,0,.1)}#enp-quiz .enp-ab-create__submit{width:100%;padding-top:1em;padding-bottom:1em}#headerimg h1{text-align:center;font-size:40px!important}#enp-quiz.enp-quiz__main{max-width:80vw;margin:0 auto;display:grid;gap:1em;min-height:85vh}@media (min-width:1000px){#enp-quiz.enp-quiz__main{max-width:80vw;margin:0 auto;grid-template-columns:1fr 4fr}}@media (min-width:1000px) and (min-width:700px){#enp-quiz.enp-quiz__main{max-width:1000px}}@media (min-width:1000px) and (min-width:1000px){#enp-quiz.enp-quiz__main{max-width:1440px}}#enp-quiz .enp-dash-container{padding:2rem;transition:all .25s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash__section-aside{background-color:#faf9fb}@media (min-width:700px){#enp-quiz .enp-dash__section-aside{padding:2rem}}#enp-quiz .enp-breadcrumb-link__container{padding-bottom:2rem}#enp-quiz .enp-search-quizzes{display:flex;justify-content:space-between;flex-wrap:wrap;padding:1em}@media (min-width:700px){#enp-quiz .enp-search-quizzes{padding:.2rem 0;flex-wrap:nowrap}}@media (min-width:1000px){#enp-quiz .enp-search-quizzes{display:flex;justify-content:space-between;flex-direction:column}}#enp-quiz .enp-search-quizzes__form-item{margin-bottom:.6rem;flex:0 1 48%}@media (min-width:400px){#enp-quiz .enp-search-quizzes__form-item{margin-bottom:0;margin-right:1rem;flex:1 0 auto}}#enp-quiz .enp-quiz-search{flex:1 0 100%;position:relative}@media (min-width:700px){#enp-quiz .enp-quiz-search{flex:1 0 auto}}#enp-quiz .enp-search-quizzes__label{margin-bottom:0;clip:rect(1px,1px,1px,1px);position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#enp-quiz .enp-search-quizzes__select{padding:.3rem;border-radius:3px;width:100%;background-color:#ececec}@media (min-width:1000px){#enp-quiz .enp-search-quizzes__select{min-width:200px;font-size:.85rem}}#enp-quiz .enp-quiz-search__input{width:100%;margin:0 0 .1rem;padding:.3rem .3rem .3rem 26px;font-size:.85rem}#enp-quiz .enp-quiz-search__icon{position:absolute;bottom:.3rem;left:.2rem;width:21px;height:21px}#enp-quiz .enp-search-quizzes__button{padding:.2rem .8rem}#enp-quiz .enp-search-results-description{font-size:.85rem}#enp-quiz .enp-search-results-description__link{white-space:nowrap}#enp-quiz .enp-search-results-description__icon{width:1.3em;height:1.3em;position:relative;top:4px;left:2px}#enp-quiz .enp-dash__section-title{font-size:1rem;text-transform:uppercase;margin-bottom:.325rem;border-bottom:1px solid #e8e4ed}@media (min-width:700px){#enp-quiz .enp-dash__section-title{padding:2.5em 0 1em}}@media (min-width:1000px){#enp-quiz .enp-dash__section-title{padding:1em 0}}#enp-quiz .enp-dash__ab-test-helper--not-enough-quizzes{color:#a897ba}#enp-quiz .enp-view-toggle{cursor:pointer;opacity:.5;display:none}@media (min-width:700px){#enp-quiz .enp-view-toggle{display:flex}}#enp-quiz .enp-view-toggle__active{opacity:1}#enp-quiz .enp-sort-by{margin-left:5px}#enp-quiz .enp-dash-list{display:flex;flex-flow:column wrap;align-items:stretch;list-style:none;margin-left:0}#enp-quiz .enp-dash-item{flex-basis:100%;padding:1rem 1.2rem;background-color:#f5f3f7;border:1px solid #eee;border-bottom:1px solid #ddd;list-style:none;transition:all .35s cubic-bezier(0,0,.3,1);margin:0 0 .8rem;justify-content:space-between;display:flex;z-index:1;flex-direction:column;align-content:flex-end;justify-content:flex-end;border:none;border-radius:3px}#enp-quiz .enp-dash-item--published{box-shadow:inset 4px 0 0 #00a9b7,0 1px 0 rgba(0,0,0,.1)}#enp-quiz .enp-dash-item--draft{box-shadow:inset 4px 0 0 #94a6b3,0 1px 0 rgba(0,0,0,.1)}#enp-quiz .enp-dash-item--draft .enp-dash-item__title a{color:#333f48}#enp-quiz .enp-dash-item--remove{animation:e .5s cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-dash-list--list-view .enp-dash-item{margin:0 0 .8rem;flex-basis:100%}#enp-quiz .enp-dash-item__spinner{display:flex;justify-content:center;align-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background:hsla(0,59%,90%,.8);width:100%;animation:g .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash-item__header{padding:.5rem 1rem;background:#faf9fb;border-bottom:1px solid #e8e4ed;display:flex;justify-content:space-between;align-items:center;border-radius:3px}#enp-quiz .enp-dash-item__title{font-size:1rem;padding-bottom:.5rem;padding:0;margin-bottom:0}#enp-quiz .enp-dash-item__title a{color:#00a9b7}#enp-quiz .enp-dash-item__content{padding:0 0 .375rem;position:relative;transition:all .2s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash-item__meta{font-size:.7rem;font-weight:300;color:#a897ba;font-size:.75rem}#enp-quiz .enp-dash-item__username{word-wrap:break-word;padding-left:.4rem;margin-left:.2rem;border-left:1px solid #ddd}#enp-quiz .enp-dash-item__title--ab-test{padding-bottom:0}#enp-quiz .enp-dash-item__ab-quizzes{list-style:none;margin-left:0;font-size:.75rem;color:#a897ba;margin-bottom:.8rem}#enp-quiz .enp-dash-item__nav{list-style:none;margin-left:0;margin-bottom:0;font-size:.85rem}#enp-quiz .enp-dash-item__nav__item{display:flex;margin:0;width:100%;align-items:center}#enp-quiz .enp-dash-item__nav__item:hover{background-color:#f5f3f7}#enp-quiz .enp-dash-item__nav__item:hover .enp-dash-item__icon{fill:#bf5700}#enp-quiz .enp-dash-item__nav__item a{font-weight:400;color:#a897ba;display:flex;align-items:center;width:100%;padding:12px}#enp-quiz .enp-dash-item__nav__item a:focus,#enp-quiz .enp-dash-item__nav__item a:hover{color:#bf5700;outline:1px dotted #bf5700;outline-offset:1px}#enp-quiz .enp-dash-item__nav__item a:focus .enp-dash-item__icon,#enp-quiz .enp-dash-item__nav__item a:hover .enp-dash-item__icon{fill:#bf5700}#enp-quiz .enp-delete-quiz{width:100%}#enp-quiz .enp-delete-quiz:hover .enp-dash-item__delete{color:#bf5700}#enp-quiz .enp-delete-quiz:hover .enp-icon{fill:#bf5700}#enp-quiz .enp-dash-item__delete{border:none;background:none;box-shadow:none;padding:0;margin:0;display:flex;padding:12px;align-items:center;position:relative;line-height:1.6;color:#a897ba;cursor:pointer;width:100%;font-size:.85rem}#enp-quiz .enp-dash-item__delete .enp-icon{fill:#a897ba}#enp-quiz .enp-dash-item__icon{fill:#a897ba;width:15px;height:15px;margin-right:10px}#enp-quiz .enp-dash-item__nav--collapsible{display:none;position:absolute;z-index:2;top:44px;right:-17px;width:195px;background-color:#fff;text-align:left;transform:translateZ(0);transition:all .2s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash-item__nav--collapsible .enp-dash-item__nav__item{cursor:pointer}#enp-quiz .enp-dash-item__menu-action{height:24px;background:none;border:none;color:#444;padding:0;bottom:.2rem;right:1.5rem;top:1.5rem;cursor:pointer}#enp-quiz .enp-dash-item__menu-action-wrap{max-width:0;display:flex;flex-direction:column;align-items:flex-end}#enp-quiz .enp-dash-item__menu-action__icon{width:15px;height:15px;fill:#a897ba;transition:all .3s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-dash-item--menu-active{transform:translate3d(0,-3px,0);z-index:2}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__nav-wrap{position:relative}#enp-quiz .enp-dash-item--menu-active.enp-dash-item--published{box-shadow:inset 4px 0 0 #60aaad,0 2px 2px rgba(0,0,0,.2)}#enp-quiz .enp-dash-item--menu-active.enp-dash-item--draft{box-shadow:inset 4px 0 0 #b4d7d8,0 2px 2px rgba(0,0,0,.2)}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__menu-action__icon--bottom{transform:rotateX(180deg)}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__nav--collapsible{display:block;animation:b .25s cubic-bezier(0,0,.3,1) forwards;border-radius:3px;box-shadow:0 2px 2px rgba(0,0,0,.2)}#enp-quiz .enp-dash-item--menu-active .enp-dash-item__content{opacity:.4}#enp-quiz .enp-quiz-results{display:flex;justify-content:space-around;list-style:none;margin:.8rem 0 0;padding:0;text-align:center}#enp-quiz .enp-quiz-results__item{margin:0 2% 0 0;padding:0;color:#5d5e5f}@media (max-width:280px){#enp-quiz .enp-quiz-results__item{width:100%;padding:0;margin-bottom:.6rem}}#enp-quiz .enp-quiz-results__number{font-size:1.6rem;line-height:1;position:relative}#enp-quiz .enp-dash-item--draft .enp-quiz-results__number{opacity:.5}#enp-quiz .enp-quiz-results__number--average-score{color:#4e9497}#enp-quiz .enp-quiz-results__number--average-score:after{content:"%";font-size:.9rem;position:absolute;top:.3rem;right:-1rem}#enp-quiz .enp-quiz-results__label{text-transform:uppercase;font-size:.7rem;font-weight:300;color:#a897ba}#enp-quiz .enp-dash-item--add-new__wrap{display:grid;gap:1em;grid-template-columns:1fr 1fr}#enp-quiz .enp-dash-list--quiz__container{display:grid;gap:1em}@media (min-width:1000px){#enp-quiz .enp-dash-list--quiz__container{grid-template-columns:1fr 1fr}}#enp-quiz .enp-dash-item--add-new{background:none;border:none;padding:0;position:relative}@media (min-width:1000px){#enp-quiz .enp-dash-item--add-new{padding-top:7rem}}#enp-quiz .enp-dash-link--add-new{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;line-height:1.6;border:1px dashed #a897ba;background:none;color:#545454;box-shadow:none;border:2px dashed #a897ba;color:#e8e4ed;transition:all .2s;justify-content:flex-start;color:#94a6b3;padding:1rem 1.2rem}#enp-quiz .enp-dash-link--add-new:focus,#enp-quiz .enp-dash-link--add-new:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-dash-link--add-new:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-dash-link--add-new:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-dash-link--add-new:disabled,#enp-quiz .enp-dash-link--add-new:disabled:focus,#enp-quiz .enp-dash-link--add-new:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-dash-link--add-new:focus,#enp-quiz .enp-dash-link--add-new:hover{border:1px dashed #69547e;background:hsla(0,0%,100%,.9);color:#a897ba;border:2px dashed #999}@media (min-width:700px){#enp-quiz .enp-dash-link--add-new{font-size:1rem;text-transform:uppercase;display:flex;justify-content:center;align-content:center;align-items:center;flex-direction:column;position:absolute;top:0;left:0;right:0;bottom:0;padding:.75rem 1.2rem 1.5rem}}#enp-quiz .enp-dash-link--add-new .enp-dash-link__icon{border-radius:50%;fill:#fff;width:1.2rem;height:1.2rem;margin-right:5px;background-color:#94a6b3}@media (min-width:700px){#enp-quiz .enp-dash-link--add-new .enp-dash-link__icon{width:2rem;height:2rem;margin:.8rem 0 .2rem}}#enp-quiz .enp-dash-link--add-new:hover{color:#333f48}#enp-quiz .enp-dash-link--add-new:hover .enp-dash-link__icon{fill:#fff;background:#333f48}#enp-quiz .enp-quiz-message--welcome p{color:#1d1c25}#enp-quiz .enp-paginate{list-style:none;margin-left:0;font-size:1rem}#enp-quiz .enp-paginate,#enp-quiz .enp-paginate__link{display:flex;justify-content:center;align-content:center;align-items:center}#enp-quiz .enp-paginate__link{margin:0 .2rem;padding:0 .4rem;border-radius:3px;font-weight:400}#enp-quiz .enp-paginate__link--current-page{border:2px solid #00a9b7}#enp-quiz .enp-paginate__item--first-page,#enp-quiz .enp-paginate__item--last-page{display:flex}#enp-quiz .enp-paginate__item--first-page:after,#enp-quiz .enp-paginate__item--last-page:before{content:"...";font-size:1rem;position:relative;bottom:.2rem;opacity:.6}#enp-quiz .enp-paginate__item--no-gap:after,#enp-quiz .enp-paginate__item--no-gap:before{content:""}#enp-quiz .enp-paginate__item--next-page{margin-left:.2rem}#enp-quiz .enp-paginate__item--previous-page{margin-right:.2rem}#enp-quiz .enp-quiz-breadcrumbs{grid-row:1}#enp-quiz .enp-quiz-breadcrumbs__list{display:flex;list-style:none;margin-left:0;margin-bottom:0}#enp-quiz .enp-quiz-breadcrumbs__item{margin-right:10px;display:flex;justify-content:center;align-content:center;align-items:center;fill:#bf5700;margin-right:5px}#enp-quiz .enp-quiz-breadcrumbs__item:last-of-type{margin-right:0}@media (min-width:400px){#enp-quiz .enp-quiz-breadcrumbs__item{margin-right:10px}}#enp-quiz .enp-quiz-breadcrumbs__link--disabled{opacity:.65;cursor:default}#enp-quiz .enp-quiz-breadcrumbs__link--active{text-align:center;border:none;border-radius:3px;padding:.85em 1.4em .75em;font-size:15px;font-weight:400;letter-spacing:.05em;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2);background:#bf5700;cursor:pointer;text-transform:uppercase;transition:all .2s;line-height:1.6;border:2px solid #bf5700;background:transparent;color:#bf5700;box-shadow:none;padding:.4em 1em}#enp-quiz .enp-quiz-breadcrumbs__link--active:focus,#enp-quiz .enp-quiz-breadcrumbs__link--active:hover{color:#fff;box-shadow:none;background:#964400}#enp-quiz .enp-quiz-breadcrumbs__link--active:active{color:#fff;box-shadow:inset 0 2px 0 rgba(0,0,0,.1);background:#1eeeff}#enp-quiz .enp-quiz-breadcrumbs__link--active:focus{outline-color:#4d90fe;outline-offset:-2px;outline-style:auto;outline-width:5px}#enp-quiz .enp-quiz-breadcrumbs__link--active:disabled,#enp-quiz .enp-quiz-breadcrumbs__link--active:disabled:focus,#enp-quiz .enp-quiz-breadcrumbs__link--active:disabled:hover{background:#bf5700;cursor:default;opacity:.5}#enp-quiz .enp-quiz-breadcrumbs__link--active:focus,#enp-quiz .enp-quiz-breadcrumbs__link--active:hover{background:transparent;border:2px solid #964400;color:#964400}#enp-quiz .enp-quiz-breadcrumbs__link{font-size:1rem;font-weight:400;text-transform:none;letter-spacing:0}#enp-quiz .enp-quiz-breadcrumbs--fixed{top:0;position:fixed;animation:h .25s}#enp-quiz .enp-results-title{font-size:1.6rem;text-align:center;padding:3.2rem 20px 2.6rem;background:#fdfcfd;margin:-1.2rem 0 2rem;border-bottom:1px solid #ddd}#enp-quiz .enp-results-title:after{font-size:1rem;text-transform:uppercase;display:block;content:"RESULTS";font-weight:400}#enp-quiz .enp-results__container{max-width:80vw;margin:0 auto;display:block}@media (min-width:700px){#enp-quiz .enp-results__container{max-width:1000px}}@media (min-width:1000px){#enp-quiz .enp-results__container{max-width:1440px;display:flex;justify-content:space-between}}#enp-quiz .enp-quiz-scores__container,#enp-quiz .enp-results-flow__container{width:100%}@media (min-width:1000px){#enp-quiz .enp-quiz-scores__container,#enp-quiz .enp-results-flow__container{width:48%}}#enp-quiz .enp-quiz-scores{margin-top:2.6rem}#enp-quiz .enp-quiz-score__line-chart{height:300px;margin-bottom:1rem}#enp-quiz .enp-quiz-score__line-chart .ct-label{color:#1d1c25}#enp-quiz .enp-quiz-score__line-chart .ct-grid{stroke:#dadada;stroke-dasharray:0}#enp-quiz .enp-quiz-score__line-chart .ct-line{stroke:#60aaad;stroke-width:2px}#enp-quiz .enp-quiz-score__line-chart .ct-point{stroke:#60aaad;stroke-width:8px}#enp-quiz .enp-quiz-scores-table{width:100%;max-width:500px;margin:0 auto}#enp-quiz .enp-quiz-scores-table tr th{background-color:#fff}#enp-quiz .enp-quiz-scores-table__label{padding-left:5%}#enp-quiz .enp-quiz-scores-table__score{text-align:right;padding-right:5%}#enp-quiz .enp-results-flow{position:relative;margin:2rem auto;width:320px;height:320px;border-radius:50%}@media (min-width:400px){#enp-quiz .enp-results-flow{width:390px;height:390px}}@media (min-width:700px){#enp-quiz .enp-results-flow{width:450px;height:450px}}@media (min-width:1000px){#enp-quiz .enp-results-flow{width:400px;height:400px}}#enp-quiz .enp-results-flow__section-title{clip:rect(1px,1px,1px,1px);position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#enp-quiz .enp-results-flow__item{border-radius:50%;text-align:center;height:100%;width:100%;margin:0 auto;left:0;right:0;padding:12.5% 0 0;letter-spacing:.05rem;border:2px solid #60aaad;animation:.85s a cubic-bezier(0,0,.3,1) forwards}#enp-quiz .enp-results-flow__item--total-views{background:#fff}#enp-quiz .enp-results-flow__item--quiz-starts{width:65%;height:65%;position:absolute;padding-top:8%;bottom:2.5%;background:#fff}#enp-quiz .enp-results-flow__item--quiz-finishes{width:35%;height:35%;position:absolute;bottom:5%;background:#d6e9ea}#enp-quiz .enp-results-flow__title{font-size:1rem;text-transform:uppercase;color:#444;font-size:.7rem;margin-bottom:0}@media (min-width:700px){#enp-quiz .enp-results-flow__title{font-weight:700;margin-bottom:2px}}#enp-quiz .enp-results-flow__number{font-weight:700;font-size:1.4rem;line-height:1.2}#enp-quiz .enp-results-flow__number--total-views{font-size:2rem}#enp-quiz .enp-results-flow__number--quiz-starts{font-size:1.65rem}#enp-quiz .enp-results-flow__percentage{font-size:.8rem;font-weight:400;position:relative;display:inline-block;top:-.7em;left:-.1rem;color:#444}#enp-quiz .enp-results-flow__percentage:after{content:"%";position:absolute;right:-.75rem;font-size:.7rem;color:#444}#enp-quiz .enp-results-questions__section{padding-top:5rem;padding-bottom:3rem;margin-top:5rem;margin-bottom:3rem}@media (min-width:700px){#enp-quiz .enp-results-questions__section{margin-right:2rem;margin-left:2rem}}#enp-quiz .enp-results-questions__header{align-items:flex-start;flex-direction:column}@media (min-width:400px){#enp-quiz .enp-results-questions__header{display:flex;justify-content:space-between;flex-direction:row;align-items:flex-end}}#enp-quiz .enp-results-questions__key,#enp-quiz .enp-results-questions__title{font-size:1rem;text-transform:uppercase}#enp-quiz .enp-results-questions{list-style:none;margin-left:0}#enp-quiz .enp-results-question{width:100%;font-size:1rem;padding:0;margin-bottom:1rem}#enp-quiz .enp-results-question__header{padding:1rem 1.2rem;position:relative}#enp-quiz .enp-results-question__question,#enp-quiz .enp-results-question__stats{font-size:1rem;line-height:1.4}#enp-quiz .enp-results-question__question{font-weight:400}@media (min-width:400px){#enp-quiz .enp-results-question__question{padding-right:7em;margin-bottom:0}}#enp-quiz .enp-results-question__stats{font-size:.9rem}@media (min-width:400px){#enp-quiz .enp-results-question__stats{position:absolute;bottom:1rem;right:1.2rem;text-align:right}}#enp-quiz .enp-results-question__stats,#enp-quiz .enp-results-questions__key{font-weight:300}#enp-quiz .enp-results-question__content{padding:2rem 1.2rem 1.2rem;border-radius:3px}#enp-quiz .enp-results-question__deep-stats{display:flex;justify-content:space-around;list-style:none;margin-left:0;text-align:center}#enp-quiz .enp-results-question__deep-stat__number{font-size:1.8rem;line-height:1;position:relative}#enp-quiz .enp-results-question__deep-stat__number--correct,#enp-quiz .enp-results-question__deep-stat__number--finishes{color:#4e9497}#enp-quiz .enp-results-question__deep-stat__number--incorrect{color:#c1893e}#enp-quiz .enp-results-question__deep-stat__number--correct:after,#enp-quiz .enp-results-question__deep-stat__number--finishes:after,#enp-quiz .enp-results-question__deep-stat__number--incorrect:after{content:"%";font-size:.9rem;position:absolute;top:.3rem;right:-1rem}#enp-quiz .enp-results-question__deep-stat__label{font-size:1rem;text-transform:uppercase;font-size:.8rem}#enp-quiz .enp-results-question__options{list-style:none;margin-left:0;margin-bottom:0}#enp-quiz .enp-results-question__option{padding:.8rem .8rem .8rem .4rem;border-top:1px solid #ddd}@media (min-width:400px){#enp-quiz .enp-results-question__option{display:flex;justify-content:space-between;flex-direction:row}}#enp-quiz .enp-results-question__option:first-of-type{margin-top:1.4rem}#enp-quiz .enp-results-question__option--correct{background:#fff}#enp-quiz .enp-results-question__option__text{flex-grow:100;margin-right:1rem}#enp-quiz .enp-results-question__option__text__helper{font-weight:300;font-size:1rem;text-transform:uppercase;margin-right:.4rem}@media (min-width:400px){#enp-quiz .enp-results-question__option__icon{margin-right:.3rem;min-width:1.6rem}}#enp-quiz .enp-results-question__option__icon--incorrect{fill:#c1893e;opacity:.5}#enp-quiz .enp-results-question__option__icon--correct{fill:#4e9497;opacity:1}#enp-quiz .enp-results-question__option__percentage--incorrect{color:#c1893e}#enp-quiz .enp-results-question__option__percentage--correct{color:#4e9497}#enp-quiz .enp-results-question__option__number-selected{font-weight:300}#enp-quiz .enp-slider-responses__title{font-size:1rem;text-transform:uppercase;font-weight:400;margin-top:1.6rem}#enp-quiz .enp-slider-responses__line-chart .ct-point{stroke-width:8px}#enp-quiz .enp-slider-responses__line-chart--high,#enp-quiz .enp-slider-responses__line-chart--low{stroke:#bf5700}#enp-quiz .enp-slider-responses__line-chart--correct{stroke:#60aaad}#enp-quiz .enp-slider-responses-table{width:100%}#enp-quiz .enp-slider-responses-table tr.enp-slider-responses-table__response--correct td,#enp-quiz .enp-slider-responses-table tr:nth-child(2n) td{background-color:#fff}#enp-quiz .enp-slider-responses-table__content{box-shadow:none;padding-top:1rem}#enp-quiz .enp-slider-responses-table--hide-zero .enp-slider-responses-table__frequency--zero{display:none}#enp-quiz .enp-slider-responses-table__response-frequency{display:flex;justify-content:space-between;align-items:center}#enp-quiz .enp-slider-responses-table__toggle-zero-frequency{background:#fff;width:100%;box-shadow:inset 1px 1px 0 #ccc,inset -1px -1px 0 #ccc;color:#1d1c25;font-family:Arial,monospace,helvetica,arial,sans-serif;font-size:.9rem;font-weight:400;line-height:1.5;text-transform:none;letter-spacing:0;text-align:left;border:none;border-radius:3px;min-height:3.065rem;padding:1rem 2rem 1rem 1rem;margin:1.6rem 0 0;position:relative;z-index:9;cursor:pointer;transition:all .2s cubic-bezier(0,0,.3,1);width:auto;padding:0 .6rem;margin:0}.enp-quiz-results #enp-quiz .enp-aside{border:none}.enp-quiz-results .enp-results-questions__title__quiz-title{clip:rect(1px,1px,1px,1px);position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}#enp-quiz .enp-results--ab{display:block;margin-bottom:3rem}@media (min-width:1000px){#enp-quiz .enp-results--ab{display:flex;flex-wrap:wrap;align-content:flex-end;width:50%;padding:10px}}@media (min-width:1000px){#enp-quiz .enp-results--a{padding-right:1rem;border-right:1px solid #ddd}}@media (min-width:1000px){#enp-quiz .enp-results--b{padding-left:1rem}}#enp-quiz .enp-results-title--ab,#enp-quiz .enp-results__container--ab .enp-results-flow__container{min-width:100%}#enp-quiz .enp-results--loser .enp-results-flow__item{border:2px solid #bf5700}#enp-quiz .enp-results--loser .enp-results-flow__item--quiz-starts{background:#ffc696}#enp-quiz .enp-results--loser .enp-results-flow__item--quiz-finishes{background:#ffb06d}#enp-quiz .enp-results--loser .enp-results-questions__title,#enp-quiz .enp-results--loser th{color:#964400}#enp-quiz .enp-results--winner .enp-results-questions__title,#enp-quiz .enp-results--winner th{color:#4e9497}#enp-quiz .enp-results-title--a,#enp-quiz .enp-results-title--b{background:transparent}#enp-quiz .enp-ab-scores{max-width:80vw;margin:0 auto}@media (min-width:700px){#enp-quiz .enp-ab-scores{max-width:1000px}}@media (min-width:1000px){#enp-quiz .enp-ab-scores{max-width:1440px}}#enp-quiz .enp-ab-scores th.enp-quiz-scores-table__label,#enp-quiz .enp-ab-scores th.enp-quiz-scores-table__score{padding-left:0;padding-right:0}#enp-quiz .enp-ab-scores__title{padding-left:50px;font-size:1rem;text-transform:uppercase}#enp-quiz .enp-quiz-score__line-chart .enp-test-loser .ct-line,#enp-quiz .enp-quiz-score__line-chart .enp-test-loser .ct-point{stroke:#bf5700}#enp-quiz .enp-quiz-scores{margin-top:0}#enp-quiz .enp-ab-scores .enp-quiz-scores-table,#enp-quiz .enp-question-results{margin-bottom:1.6rem}@media (min-width:1000px){#enp-quiz .enp-ab-scores .enp-quiz-scores-table,#enp-quiz .enp-question-results{float:left;width:48%;margin:0}#enp-quiz .enp-ab-scores .enp-quiz-scores-table:first-of-type,#enp-quiz .enp-question-results:first-of-type{margin-right:4%}}#enp-quiz .enp-question-results__container{max-width:80vw;margin:0 auto;padding-top:3rem}@media (min-width:700px){#enp-quiz .enp-question-results__container{max-width:1000px}}@media (min-width:1000px){#enp-quiz .enp-question-results__container{max-width:1440px}}#enp-quiz .enp-question-results--ab .enp-results-questions__section{background:#fff;border:none;padding:1.6rem 0;margin:1.6rem auto}#enp-quiz .enp-question-results--ab .enp-results-questions__container{padding:0}#enp-quiz .enp-ab-new-embed-code__section{max-width:80vw;margin:0 auto;max-width:540px;padding-bottom:2rem;margin-bottom:2rem}#enp-quiz .enp-ab-new-embed-code__section .enp-ab-embed-code{padding:0;margin:0}#enp-quiz .enp-ab-embed-code__section{background:#faf9fb;border-bottom:1px solid #ddd;border-top:1px solid #ddd;padding-top:3rem;padding-bottom:3rem;margin-top:3rem;margin-bottom:3rem;padding-top:5rem;margin-top:5rem}#enp-quiz .enp-ab-embed-code{max-width:80vw;margin:0 auto}#enp-quiz .enp-ab-embed-code__title{font-size:1rem;text-transform:uppercase}#enp-quiz .enp-embed-code__textarea{margin-bottom:0}#enp-quiz .enp-embed-code__instructions{font-size:1.1rem}#enp-quiz .enp-slider{margin-bottom:1.6rem}#enp-quiz .enp-slider-input__container{display:flex;align-items:center;justify-content:center;margin:1.6rem auto;position:relative}#enp-quiz .enp-slider-input__label{display:block;color:#343242;font-weight:400;font-size:.85rem;text-transform:uppercase}#enp-quiz .enp-slider-input__prefix,#enp-quiz .enp-slider-input__suffix{font-size:1rem}#enp-quiz .enp-slider-input__prefix{margin-right:.2rem;white-space:pre}#enp-quiz .enp-slider-input__suffix{margin-left:.2rem;white-space:pre}#enp-quiz .enp-slider-input__input{font-size:1rem;font-family:Arial,monospace,helvetica,arial,sans-serif;padding:.8rem .5rem;background:#fff;border:1px solid #aaa;border-radius:3px;width:20rem;max-width:100%;margin-bottom:1.2rem;margin-bottom:0;padding:.75rem;width:auto;transition:all .25s cubic-bezier(0,0,.3,1)}@media (min-width:700px){#enp-quiz .enp-slider-input__input{padding:.8rem;width:100%}}#enp-quiz .enp-slider-input__input--incorrect{color:#bf5700}#enp-quiz .enp-slider-input__input--correct{color:#4e9497}#enp-quiz .enp-slider-input__input--invalid-animation{box-shadow:0 0 2px 1px #c1893e}#enp-quiz .enp-slider_input__range-helper{position:absolute;bottom:-1.2rem;font-size:.8rem}#enp-quiz .enp-slider_input__range-helper--low{left:0}#enp-quiz .enp-slider_input__range-helper--high{right:0}#enp-quiz .enp-slider-input__range-helper__number{position:relative;color:#e8e4ed}#enp-quiz .ui-slider-range-show-correct__tooltip-container{position:relative}#enp-quiz .ui-slider-range-show-correct__tooltip{position:absolute;top:-.4rem;margin-left:-.55rem;height:1rem;width:1.1rem;height:1.1rem;border:2px solid #60aaad;background-color:#fff;border-radius:50%;z-index:9999}#enp-quiz .ui-slider-range-show-correct__tooltip--low{left:0}#enp-quiz .ui-slider-range-show-correct__tooltip--high{right:-.55rem}#enp-quiz .ui-slider-range-show-correct__tooltip__text{position:relative;color:#417d7f;top:-1.35rem;font-size:.825rem;min-width:100%;display:inline-block;text-align:center;text-shadow:0 1px 0 #fff}#enp-quiz .enp-slider{position:relative;text-align:left;background:#ddd}#enp-quiz .enp-slider .ui-helper-hidden{display:none}#enp-quiz .enp-slider .ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}#enp-quiz .enp-slider .ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}#enp-quiz .enp-slider .ui-helper-clearfix:after,#enp-quiz .enp-slider .ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}#enp-quiz .enp-slider .ui-helper-clearfix:after{clear:both}#enp-quiz .enp-slider .ui-helper-clearfix{min-height:0}#enp-quiz .enp-slider .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0)}#enp-quiz .enp-slider .ui-front{z-index:100}#enp-quiz .enp-slider .ui-state-disabled{cursor:default!important}#enp-quiz .enp-slider .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}#enp-quiz .enp-slider .ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}#enp-quiz .enp-slider .ui-slider-handle{background:#fff;border-radius:50%;border:1px solid #aaa;position:absolute;z-index:2;width:1.2rem;height:1.2rem;top:-.4rem;margin-left:-.6rem;cursor:default;touch-action:none;transition:opacity .2s cubic-bezier(0,0,.3,1),height .18s cubic-bezier(0,0,.3,1),width .18s cubic-bezier(0,0,.3,1),transform .18s cubic-bezier(0,0,.3,1)}#enp-quiz .enp-slider .ui-slider-handle:focus{outline:none;box-shadow:0 0 3px 1px #4d90fe}#enp-quiz .enp-slider .ui-slider-handle--correct,#enp-quiz .enp-slider .ui-slider-handle--incorrect{width:1.1rem;height:1.1rem;top:-.4rem;margin-left:-.55rem}#enp-quiz .enp-slider .ui-slider-handle--incorrect{z-index:1;border:2px solid #bf5700}#enp-quiz .enp-slider .ui-slider-handle--correct{border:2px solid #60aaad;z-index:99999}#enp-quiz .enp-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7rem;display:block;border:0;background-position:0 0;top:0;height:100%}#enp-quiz .enp-slider .ui-slider-range-show-correct{background:#60aaad;z-index:9}#enp-quiz .enp-slider .ui-slider-range-min{left:0;background:#00a9b7}#enp-quiz .enp-slider .ui-slider-range-max{right:0}#enp-quiz .enp-slider.ui-state-disabled .ui-slider-handle,#enp-quiz .enp-slider.ui-state-disabled .ui-slider-range{filter:inherit}#enp-quiz .ui-slider-horizontal{height:.3rem}#enp-quiz .enp-question__answered .enp-slider{background:#bbb}#enp-quiz .enp-question__answered .ui-slider-range-min{background:#fff} +/*# sourceMappingURL=enp_quiz-create.min.css.map */ diff --git a/public/quiz-create/css/enp_quiz-create.min.css.map b/public/quiz-create/css/enp_quiz-create.min.css.map new file mode 100644 index 00000000..1701c2a0 --- /dev/null +++ b/public/quiz-create/css/enp_quiz-create.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["_setup.scss","_utilities.scss","_variables.scss","_structure.scss","_typography.scss","_animations.scss","_base.scss","_forms.scss","_quiz-create.scss","_quiz-preview.scss","_quiz-publish.scss","_ab-create.scss","_dashboard.scss","_breadcrumbs.scss","_quiz-results.scss","_ab-results.scss","../../../quiz-take/css/sass/_slider.scss"],"names":[],"mappings":"AAAA,KACI,wBAAyB,CAC5B,AAED,eACI,qBAAsB,CACzB,AAED,eACI,gBAAgB,AAChB,eAAgB,CACnB,AAED,+CAEM,kBAAmB,CACpB,AAHL,0BAMQ,0BAA0B,AAC1B,SAAU,CACb,AARL,mBAWQ,kBAAmB,CACtB,AAZL,yfAwBQ,WAAY,CACf,ACweL,kCAnKI,2BAA8B,AAC9B,4BAA6B,AAC7B,cAAa,AACb,SAAQ,AACR,UAAS,AACT,WAAU,AACV,eAAe,CAgKd,AAHL,yHAzJI,yBAAyB,AACzB,kBAAkB,AAClB,sCAA0C,AAC1C,oBAAqB,AACrB,cAAc,AACd,cAAc,AACd,eAAe,AACf,gBAAiB,AACjB,YAAY,AACZ,SAAS,AACT,mBAAmB,AACnB,uBAAuB,AACvB,qBAAqB,AACrB,QAAQ,AACR,WAAW,AACX,cAAe,CAmJd,AATL,gCA5FI,gBAAgB,AAChB,WAAW,AAKX,uDAAwD,AACxD,cCpbW,ADqbX,uDCxbsD,ADybtD,gBAAgB,AAChB,gBAAgB,AAChB,gBAAgB,AAChB,oBAAoB,AACpB,iBAAiB,AACjB,gBAAgB,AAChB,YAAY,AACZ,kBAAkB,AAClB,oBAAoB,AACpB,4BAA4B,AAC5B,kBAAkB,AAClB,kBAAkB,AAClB,UAAU,AACV,eAAe,AACf,yCCvayC,CDqgBxC,AAzBL,8CAeY,YAAa,CAChB,AAhBT,4DAmBY,kBAAkB,AAClB,aChhBgB,ADihBhB,aAAc,AACd,cAAe,AACf,0CCngBiC,CDogBpC,AAxBT,kEA8BY,yBAA0B,CAC7B,AA/BT,yDAoCQ,kBAAkB,AAClB,iBAAkB,CACrB,AAtCL,iCA5FI,gBAAgB,AAChB,WAAW,AA2BX,wDAAyD,AACzD,cAAc,AACd,kBAAkB,AAClB,YAAY,AACZ,iBAAiB,AACjB,oBAAqB,CAsGpB,AA3CL,yCAtDI,aAAa,AACb,cAAiB,AACjB,iDAAmD,AACnD,YAAa,CAkGZ,AA/CL,uCA/CI,mBAAmB,AACnB,mBAAmB,AACnB,gDAAkD,CAgGjD,AAnDL,4BErgBI,eAAe,AACf,cAAc,AF2jBV,gBAAgB,AAChB,sBAAsB,AACtB,6BAA6B,AAC7B,aAAa,AACb,qBAAqB,AACrB,eAAe,AACf,SAAS,AACT,MAAO,CACV,AA/DL,mCA/LI,eAAe,AACf,wBAAyB,CAiQxB,AAnEL,6BAxGI,gBAAgB,AAChB,cAAc,AA8KV,iBAAiB,AACjB,eAAgB,CACnB,AAzEL,mCA4EQ,8BChkBK,ADikBL,aCjkBK,CDkkBR,AA9EL,0CAiFQ,aCpkBkB,CDqkBrB,AAlFL,qCAqFQ,8BC3kBO,AD4kBP,aC3kBsB,CD4kBzB,AAvFL,4CA0FQ,aC/kBsB,CDglBzB,AA3FL,kCA8FQ,6BCrlBO,CDslBV,AA/FL,yCAkGQ,aCrmBW,CDsmBd,AAnGL,mCArdI,YAAY,AACZ,gBAAgB,AAChB,gBAAgB,AAChB,UAAU,AACV,SAAS,AAwjBL,kBAAkB,AAClB,QAAQ,AACR,SAAU,CACb,AA1GL,kCA6GQ,oBAAoB,AACpB,eAA4B,CAC/B,AA/GL,2CAkHQ,aAAa,AACb,eAAe,AACf,WAAY,CACf,AArHL,6CAwHQ,iBAAkB,CACrB,AAzHL,0CA4HQ,cAAe,CAClB,AA7HL,+DAiIQ,mBAAqB,CACxB,AAlIL,oCAqIQ,cAA6B,AAC7B,gBAAiB,AACjB,cAAc,AACd,iBAAiB,AACjB,oBAAqB,CACxB,AA1IL,kCA6IQ,aCzoBoB,CD0oBvB,AA9IL,8GAoJY,aCvoBc,CDwoBjB,AArJT,uDA0JQ,wBC9oBK,CDmpBR,AA/JL,mEA4JY,qBChpBC,CDipBJ,AA7JT,uBAoKQ,iBAAkB,CACrB,AArKL,oIA2KY,aAAc,CACjB,AA5KT,oCAgLQ,aAAa,AACb,kBAAkB,AAClB,UAAU,AACV,mBAAmB,AACnB,kBAAkB,AAClB,mBCprBY,ADqrBZ,gBAAiB,AACjB,cAAe,AACf,eAAgB,CACnB,AAKL,YACI,kBAAkB,AAClB,OAAO,AACP,QAAQ,AACR,MAAM,AACN,WAAY,CAKf,AAVD,8BAQQ,cAAe,CAClB,AAGL,qBACI,gBAAkB,CACrB,AAED,2BACI,kBAAkB,AAClB,WAAY,AACZ,UAAY,CACf,AGhuBD,eACI,cFIW,AEHX,uDFDqD,AEErD,cAAc,AACd,gBAAgB,AAChB,eAAgB,CAKnB,AFuDG,yBEjEJ,eAQQ,eAAgB,CAEvB,CAAA,AAED,8EAGQ,uDFbkD,AEclD,cFTQ,AEUR,WAAW,AACX,iBAAiB,AACjB,gBAAiB,AACjB,iBAAkB,CACrB,AATL,aAYQ,aAAc,CACjB,AAbL,aAgBQ,gBAAiB,CACpB,AAjBL,aAoBQ,iBAAkB,CACrB,AArBL,aAwBQ,eAAgB,CACnB,AAzBL,aA4BQ,iBAAkB,CACrB,AA7BL,aAgCQ,aAAc,CACjB,AAjCL,0LAyCQ,gBAAiB,CACpB,AA1CL,YA8CQ,gBAAiB,AACjB,sBAAsB,AACtB,eAAgB,CACnB,AAjDL,0BAmDQ,uBAAwB,CAC3B,AApDL,aAsDQ,eAAgB,CACnB,AAvDL,aAyDQ,kBAAmB,CACtB,AA1DL,gCA6DQ,gBAAgB,AAChB,iBAAkB,CACrB,AA/DL,6BAkEQ,eAAiB,CACpB,AAnEL,0CAsEQ,gCAAkC,AAClC,iBAAkB,CACrB,AAxEL,cA2EQ,gBAAgB,AAChB,gDAAmD,AACnD,gBAAgB,AAChB,gBAAgB,AAChB,oBAAoB,AACpB,cAAc,AACd,cAAc,AACd,eAAe,AACf,gBAAgB,AAChB,eAAe,AACf,wBAAyB,CAC5B,AAtFL,wEAwFQ,gEAAyE,CAC5E,AAzFL,gBA4FQ,WAAY,CAwBf,AApHL,mBAgGY,gBAAgB,AAChB,yBAAyB,AACzB,YAAY,AACZ,4BAA6B,CAChC,AApGT,sCA+FY,sDFzG8C,CEU1D,AA2GS,mBAHG,eAAe,AACf,YAAY,AACZ,4BAA6B,CAChC,AA3GT,oCA8GY,kBF1G+B,CE2GlC,AA/GT,iCAkHY,kBAAmB,CACtB,AAnHT,iBAuHQ,QAAS,CACZ,AAxHL,cA2HQ,YAAY,AACZ,cAAe,CAClB,AA7HL,YAiIQ,cF9GM,AE+GN,qBAAqB,AACrB,qBAAqB,AACrB,yBAA0B,CAK7B,AAzIL,sBAuIY,YFpHE,CEqHL,AAxIT,uDA8IQ,aF1HqB,CE+HxB,AAnJL,qFAiJY,YF7HiB,CE8HpB,AAlJT,uBHXI,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CGgKb,AAxJT,mBHCI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,eAAgB,CG+If,AH7ID,kDAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,0BACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,yBAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,gGAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AGzCL,wBHCI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,gBAAgB,AA+DhB,0BCtEgC,ADuEhC,gBAAgB,AAChB,cAAc,AACd,gBAAgB,AGkFZ,UAAW,CACd,AHnJD,4DAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,+BACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,8BAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,+GAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAyCD,4DAEI,0BC5E6B,AD6E7B,cC9E4B,AD+E5B,6BAAgC,CACnC,AGvFL,6BHJI,YAAa,AACb,cAAe,CG0Kd,AAvKL,4BA0KQ,eAAqB,CACxB,AA3KL,oBA8KQ,WAAW,AACX,YAAY,AACZ,kBAAmB,CACtB,AAjLL,0BAoLQ,gBAAiB,CACpB,ACjML,aACI,GACI,UAAU,AACV,gCAAmC,CAAA,AAEvC,GACI,UAAU,AACV,uBAA+B,CAAA,CAAA,AAIvC,aACI,GACI,UAAU,AACV,YAAY,AACZ,gCAAmC,CAAA,AAEvC,GACI,UAAU,AACV,YAAY,AACZ,uBAA+B,CAAA,CAAA,AAIvC,aACI,GACI,UAAU,AACV,YAAY,AACZ,gCAAmC,CAAA,AAEvC,GACI,WAAY,AACZ,YAAY,AACZ,uBAA+B,CAAA,CAAA,AAKvC,aACI,GACI,gBAAgB,AAChB,aAAa,AACb,UAAU,AACV,uBAA+B,CAAA,AAEnC,GACI,SAAS,AACT,UAAU,AACV,gCAAmC,CAAA,CAAA,AAI3C,aACI,GACI,UAAU,AACV,uBAA+B,CAAA,AAEnC,GACI,UAAU,AACV,SAAS,AACT,UAAU,AACV,SAAS,AACT,WAAW,AACX,iCAAoC,CAAA,CAAA,AA0C5C,aACI,GACI,WAAY,AACZ,oBAA2B,AAC3B,+BAAkC,CAAA,AAGtC,IACI,SAAU,CAAA,AAGd,IACI,UAAU,AACV,6BAA+B,AAC/B,iCAAkC,CAAA,AAGtC,GACI,UAAU,AACV,oBAA2B,AAC3B,4DAAgE,CAAA,CAAA,AAyCxE,aACQ,GACI,SAAU,CAAA,AAEd,GACI,SAAU,CAAA,CAAA,AAItB,aACI,GACI,iCAAoC,CAAA,AAExC,GACI,uBAA+B,CAAA,CAAA,AAKvC,SACE,cAAc,AACd,WAAW,AACX,iBAAkB,CACnB,AAED,aACE,WAAW,AACX,YAAY,AACZ,sBAAsB,AAEtB,mBAAmB,AACnB,qBAAqB,AAErB,0CAAwD,CACzD,AAED,kBAEE,qBAAuB,CACxB,AAED,kBAEE,qBAAuB,CACxB,AAOD,aACE,UAEE,kBAAmB,CAAA,AACnB,IAEA,kBAAqB,CAAA,CAAA,AC/NzB,UACI,iDJiCyC,CIZ5C,AAtBD,qBHeI,eAAe,AACf,qBAAqB,AACrB,mBDLgC,ADmRhC,kBAAkB,AE5QlB,sBAAsB,AACtB,yBAAyB,AAXzB,eAAe,AACf,cAAc,AGAV,iBAAiB,AACjB,kBJIY,CIHf,AJqDD,yBIjEJ,qBHuBQ,qBAAqB,AACrB,mBAAoB,CGZvB,CAAA,AAZL,4BL+UI,eAAe,AACf,yBAAyB,AKhUrB,eAAgB,CACnB,AAjBL,0BAoBQ,+BJVM,CIWT,AC8LL,mBAGQ,YAAY,AACZ,SAAS,AACT,SAAU,CACb,AANL,qBAlKI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,wBAAyB,CA8KxB,AAhBL,yBAWY,gBAAkB,CACrB,AAZT,6CAcY,gBAAmB,CACtB,AAfT,sBAlKI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAKzB,mBAAmB,AACnB,oBAAqB,AACrB,YAAY,AA2KR,aAAc,CACjB,AArBL,qBA1II,eAAe,AACf,uDLzEqD,AK0ErD,oBAAsB,AACtB,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,YAAY,AACZ,eAAe,AACf,oBAAqB,CAkKpB,ALlLD,yBKkJJ,qBA/HQ,cAAe,AACf,UAAW,CA8Jd,CAAA,AAhCL,yBA0BY,YAAY,AACZ,iBAAkB,CACrB,AA5BT,gDA8BY,mBAAqB,CACxB,AA/BT,qEAoCQ,mBAAmB,AACnB,gBAAkB,CACrB,AAtCL,qFA0CQ,eAAgB,CACnB,AA3CL,mGA+CQ,uDLjQiD,AKkQjD,gBAAgB,AAChB,aAAyB,CAC5B,AAlDL,oLA+CQ,uDLjQiD,AKkQjD,gBAAgB,AAChB,aAAyB,CAC5B,AAlDL,uEA+CQ,uDLjQiD,AKkQjD,gBAAgB,AAChB,aAAyB,CAC5B,AAlDL,wBA1II,eAAe,AACf,uDLzEqD,AK0ErD,oBAAsB,AACtB,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,YAAY,AACZ,eAAe,AACf,qBAAqB,AA2BrB,eAAgB,CAoKf,AL/MD,yBKkJJ,wBA/HQ,cAAe,AACf,UAAW,CA2Ld,CAAA,AAlKD,8BN7GA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CM4GjB,AAmGL,sDAwDY,mBAAqB,CACxB,AAzDT,8DA2DY,oBAAqB,CACxB,AA5DT,0BA1II,eAAe,AACf,uDLzEqD,AK0ErD,oBAAsB,AACtB,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,YAAY,AACZ,eAAe,AACf,qBAAqB,AA2BrB,gBAAgB,AAwKZ,eAAe,AACf,gBAAiB,AACjB,kEAA2E,CAK7E,AL1NF,yBKkJJ,0BA/HQ,cAAe,AACf,UAAW,CAsMb,CAAA,AA7KF,gCN7GA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CM4GjB,AChHL,+GAcQ,aAAa,AACb,iBAAiB,AACjB,SAAS,AACT,WAAW,AACX,oBAAqB,CASxB,ANsCD,yBMjEJ,+GAyBY,mBAAoB,CAE3B,CAAA,AA3BL,yBAoCQ,aAAa,AACb,eAAe,AACf,eAAgB,CAKnB,ANsBD,0BMjEJ,yBAwCY,WAAW,AACX,eAAgB,CAEvB,CAAA,AA3CL,2CA8CQ,aAAa,AACb,QAAS,CAMZ,ANYD,yBMjEJ,2CAkDY,6BAA8B,CAGrC,CAAA,AArDL,iCDiDI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAYzB,eAAgB,CCRf,AAzDL,oCDyEI,eAAe,AACf,uDLzEqD,AK0ErD,oBAAsB,AACtB,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,YAAY,AACZ,eAAe,AACf,qBAAqB,AAgBrB,gBAAiB,AACjB,iBAAiB,AACjB,kBAAmB,CCtClB,ANID,yBMjEJ,oCDoFQ,cAAe,AACf,UAAW,CCxBd,CAAA,ADwCD,+DACI,eAAiB,CACpB,AAFD,qHACI,eAAiB,CACpB,AAFD,iDACI,eAAiB,CACpB,ACvGL,mBAgEQ,UAAW,CACd,AAjEL,mCAoEQ,qBAAqB,AACrB,iBAAkB,CACrB,AAtEL,gCPkbI,gBAAgB,AAChB,WAAW,AOzWP,cAAc,AACd,iBAAkB,CACrB,AA5EL,8BA+EQ,0BAA2B,CAO9B,ANrBD,yBMjEJ,8BAkFY,qBAAqB,AACrB,mBAAoB,CAG3B,CAAA,AAtFL,qCDiDI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAYzB,eAAgB,CCyBf,AA1FL,wCD0EI,uDLzEqD,AK0ErD,oBAAsB,AACtB,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,YAAY,AACZ,eAAe,AACf,qBAAqB,AAUrB,oBAAoB,AACpB,cAAe,CCEd,AN7BD,yBMjEJ,wCDoFQ,cAAe,AACf,UAAW,CCSd,CAAA,AA9FL,qCPaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AAGf,gBAAgB,AA+DhB,0BCtEgC,ADuEhC,gBAAgB,AAChB,cAAc,AACd,gBAAgB,AAYhB,0BCrFgC,ADsFhC,cCvFwB,ADwFxB,mBAAmB,AAWnB,mBCtGgB,ADgUhB,eAAe,AACf,yBAAyB,AO7OrB,kBAAkB,AAClB,mBAAmB,AACnB,wBAA+B,AAC/B,yCNpEqC,CM2GxC,APjHD,sFAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,4CACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,2CAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,sJAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAyCD,sFAEI,0BC5E6B,AD8E7B,8BAAgC,AAYhC,cC3F4B,AD4F5B,sBAAuB,CAZ1B,AOnGL,6EPqRI,aAAa,AACb,cAAc,AO5KN,UAAU,AACV,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,QAAQ,AACR,cAAc,AACd,wBAA+B,AAC/B,WAAW,AACX,2DNhFiC,CMiFpC,AAnHT,2EP4PI,WAAW,AACX,YAAY,AA6BZ,kBAAkB,AAClB,UAAU,AAwBV,eAAgB,AAkBhB,mBCnTwB,ADoTxB,aCvTgB,AMyGR,iBAAiB,AACjB,kBAAkB,AAClB,SAAW,CACd,AA3HT,kIAgIY,iBAAiB,AACjB,mBAAoB,CAWvB,AA5IT,0PAoIgB,UAAU,AACV,UAAU,AACV,kCAAqC,CACxC,AAvIb,oPP0UI,UAAU,AACV,kBCxTgC,CMwHvB,AA3Ib,yCAgJQ,kBAAkB,AAClB,kBAAmB,CACtB,AAlJL,8BAqJQ,oBAAqB,CACxB,AD5HD,qCAuBA,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAKzB,mBAAmB,AACnB,oBAAqB,AACrB,WAAY,CAhCX,AAED,oCN6UA,2BAA8B,AAC9B,4BAA6B,AAC7B,cAAa,AACb,SAAQ,AACR,UAAS,AACT,WAAU,AACV,eAAe,CMjVd,AAED,oCAkJA,0BAA0B,AAC1B,qBAAqB,AACrB,oBAAsB,AACtB,kBAAkB,AAClB,cAAe,CApJd,AAED,sEA2HA,mBLvJU,AKwJV,WAAW,AACX,kCAAmC,CA3HlC,AAED,oEA6HA,UAAU,ANtKV,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CMwCjB,AC5CL,oCA2JQ,kBAAkB,AAClB,SAAU,CACb,AA7JL,wDAiKQ,aAAgB,AAChB,aAAa,AACb,iDAAmD,AACnD,uBAAyB,CAC5B,AArKL,wIAyKQ,mBAAmB,AACnB,cAAc,AACd,gDAA8C,CACjD,AA5KL,gCPsaI,gBAAgB,AAChB,aAAc,COvPb,AAhLL,yBAmLQ,kBAAkB,AAClB,gBAAiB,CAKpB,ANxHD,yBMjEJ,yBAuLY,cAAe,CAEtB,CAAA,AAzLL,kCDiDI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAYzB,eAAgB,CC4Hf,AA7LL,iHAkMQ,YAAa,CAChB,AAnML,mRAyMY,aAAc,CACjB,AA1MT,sFPyDI,YAAY,AACZ,gBAAgB,AAChB,gBAAgB,AAChB,UAAU,AACV,SAAS,AOmJL,kBAAkB,AAClB,QAAQ,AACR,YAAY,AACZ,UAAU,AACV,cAAe,CAUlB,AN7JD,yBMjEJ,sFAuNY,WAAY,CAOnB,CAAA,AA9NL,oMA4NY,YNlMC,CMmMJ,AA7NT,0CPyDI,YAAY,AACZ,gBAAgB,AAChB,gBAAgB,AAChB,UAAU,AACV,SAAS,AOqKL,kBAAkB,AAClB,QAAQ,AACR,UAAW,CAiCd,ANpMD,yBMjEJ,0CAuOY,UAAW,CA8BlB,CAAA,AArQL,wEP0RI,kBAAkB,AAUlB,cAAe,AOxDP,WAAW,AACX,YAAY,AACZ,UAAU,AACV,gBAAgB,AAChB,eAAe,AACf,yBNrNM,AMsNN,kBAAmB,CACtB,ANlLL,yBMjEJ,wEPuSQ,aAAe,COpDd,CAAA,AAnPT,4JAuPY,gBAAgB,AAChB,qBNhOG,AMiOH,YNjOG,CMkON,AA1PT,mDA6PY,SAAU,CAOb,AApQT,iFAgQgB,eAAe,AACf,UAAU,AACV,4BAA6B,CAChC,AAnQb,wDAyQY,iCN/PE,AMgQF,wBNhQE,CMiQL,AA3QT,4QAgRY,UAAU,AACV,qBNvQE,AMwQF,kBNxQE,CMyQL,AAnRT,8BPaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AAGf,gBAAgB,AA+DhB,0BCtEgC,ADuEhC,gBAAgB,AAChB,cAAc,AACd,gBAAgB,AAYhB,0BCrFgC,ADsFhC,cCvFwB,ADwFxB,mBAAmB,AAWnB,mBCtGgB,ADgUhB,eAAe,AACf,yBAAyB,AOvDrB,gBAAgB,AAChB,0BAA8B,CAYjC,AP1QD,wEAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,qCACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,oCAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,iIAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAyCD,wEAEI,0BC5E6B,AD8E7B,8BAAgC,AAYhC,cC3F4B,AD4F5B,sBAAuB,CAZ1B,AOnGL,wDP4PI,WAAW,AACX,YAAY,AA6BZ,kBAAkB,AAClB,UAAU,AAwBV,eAAgB,AApEhB,iBAAiB,AAsFjB,mBCnTwB,ADoTxB,aCvTgB,AMgRR,kBAAkB,AAClB,SAAW,CACd,AAjST,8DP0UI,UAAU,AACV,kBCxTgC,CMkR3B,AArST,yCAySQ,iBAAkB,CACrB,AA1SL,sGA8SQ,gBAAiB,CAIpB,ANjPD,yBMjEJ,sGAgTY,iBAAkB,CAEzB,CAAA,AAlTL,8BAqTQ,sBAAsB,AACtB,iBAAkB,AAClB,qBAAqB,AACrB,4BAA4B,AAC5B,iBAAkB,CAUrB,AAnUL,yDA4TY,kBAAkB,AAClB,WAAW,AACX,UAAW,AACX,WAAY,AACZ,iBAAkB,AAClB,wBAAyB,CAC5B,AAlUT,gFLuFI,aAAa,AAWb,8BAA8B,AKsO1B,kBAAmB,CACtB,AAzUL,0EA6UQ,WAAW,AACX,iBAAkB,AAClB,gBAAgB,AAChB,gBAAgB,AAChB,iBAAkB,CAarB,AA9VL,wFAoVY,WAAW,AACX,kBAAkB,AAClB,QAAQ,AACR,WAAW,AACX,gBAAgB,AAChB,YAAY,AACZ,WAAW,AACX,WAAW,AACX,kFN1TiC,CM2TpC,AA7VT,8BAiWQ,kBAAmB,CAetB,AAhXL,oDAoWY,yBAAyB,AACzB,iBAAkB,AAClB,eAAiB,CACpB,AAvWT,oEA0WY,YAAY,AACZ,gBAAgB,AAChB,iBAAiB,AACjB,iBAAiB,AACjB,eAAgB,CACnB,AA/WT,8CAmXQ,iBAAkB,CACrB,AApXL,4DAuXQ,YAAa,CAChB,AAxXL,qDA4XY,QAAQ,AACR,kBNrWG,CMsWN,AA9XT,sDPaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AAEzB,gBAAgB,AA+DhB,0BCtEgC,ADuEhC,gBAAgB,AAChB,cAAc,AACd,gBAAgB,AAYhB,0BCrFgC,ADsFhC,cCvFwB,ADwFxB,mBAAmB,AAWnB,mBCtGgB,AMoXZ,kBAAmB,AACnB,eAAiB,CAsBpB,AP9XD,wHAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,6DACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,4DAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,yMAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAyCD,wHAEI,0BC5E6B,AD8E7B,8BAAgC,AAYhC,cC3F4B,AD4F5B,sBAAuB,CAZ1B,AClCD,yBMjEJ,sDAuYY,gBAAiB,AACjB,aAAc,CAkBrB,CAAA,ANzVD,yBMjEJ,sDA4YY,qBAAqB,AACrB,iBAAkB,CAazB,CAAA,AA1ZL,6FP4PI,WAAW,AACX,YAAY,AA6BZ,kBAAkB,AAClB,UAAU,AAwBV,eAAgB,AApEhB,iBAAiB,AAsFjB,mBCnTwB,ADoTxB,aCvTgB,AMoYR,kBAAkB,AAClB,WAAa,CAChB,AArZT,mGP0UI,UAAU,AACV,kBCxTgC,CMsY3B,AAzZT,yDA6ZQ,kBAAkB,AAClB,cAAc,AACd,cAAc,AACd,gBAAgB,AAChB,YAAY,AACZ,gBAAgB,AAChB,eAAiB,CAqBpB,AAxbL,gGAsaY,YAAY,AACZ,aAAa,AACb,YNtZgB,CMuZnB,AAzaT,4MA8agB,YNpZH,CMqZA,AN9WT,yBMjEJ,yDAmbY,WAAY,AACZ,aAAc,AACd,WAAY,CAGnB,CAAA,AAxbL,wDA2bQ,kBN5aY,CM6af,AA5bL,mDA2bQ,kBN5aY,CM6af,AA5bL,kCA+bQ,mBNhbY,AMibZ,iBAAiB,AACjB,uEAA4E,CAC/E,AAlcL,yCDiDI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAYzB,eAAgB,CCsYf,AAvcL,wCPyDI,YAAY,AACZ,gBAAgB,AAChB,gBAAgB,AAChB,UAAU,AACV,SAAS,AO8YL,kBAAkB,AAClB,QAAQ,AACR,UAAU,AACV,UAAU,AACV,cAAe,CASlB,ANvZD,yBMjEJ,wCAkdY,WAAY,CAMnB,CAAA,AAxdL,8CAsdY,YN5bC,CM6bJ,AAvdT,8BA2dQ,kBAAkB,AAClB,SAAU,CAKb,ANhaD,yBMjEJ,8BA+dY,UAAW,CAElB,CAAA,AAjeL,iCAoeQ,gBAAgB,AAChB,YAAY,AACZ,WAAW,AACX,iBAAiB,AACjB,oBAAqB,CACxB,AAzeL,+DA6eY,YAAY,AACZ,gBAAgB,AAChB,uBAAwB,CAC3B,AAhfT,sCPyDI,YAAY,AACZ,gBAAgB,AAChB,gBAAgB,AAChB,UAAU,AACV,SAAS,AOybL,kBAAkB,AAClB,UAAU,AACV,cAAe,CASlB,AAjgBL,wFA2fY,SAAU,CACb,AA5fT,+CA+fY,UAAY,CACf,AAhgBT,0CAogBQ,UAAU,AACV,SAAU,CACb,AAtgBL,4CA0gBQ,QAAQ,AACR,WAAY,CACf,AA5gBL,uCPkII,8BAA+B,AArH/B,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,gBAAgB,AA+DhB,0BCtEgC,ADuEhC,gBAAgB,AAChB,cAAc,AACd,gBAAgB,AOqbZ,iBAAiB,AACjB,oBAAoB,AACpB,kBAAkB,AAClB,kBAAmB,CAatB,APrgBD,0FAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,8CACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,6CAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,4JAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAyCD,0FAEI,0BC5E6B,AD6E7B,cC9E4B,AD+E5B,6BAAgC,CACnC,AOnGL,+DP4PI,WAAW,AACX,YAAY,AA6BZ,kBAAkB,AAClB,UAAU,AAwBV,eAAgB,AApEhB,iBAAiB,AAkBjB,aAAa,AACb,cAAc,AAmEd,mBCnTwB,ADoTxB,aCvTgB,AM2gBR,kBAAkB,AAClB,SAAW,CACd,AA5hBT,qEP0UI,UAAU,AACV,kBCxTgC,CM6gB3B,AAhiBT,+BLuFI,aAAa,AK8cT,mBAAmB,AACnB,sBAAuB,CAC1B,AAviBL,+BPaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,gBAAgB,AOihBZ,WAAW,AACX,mBAAmB,AACnB,WAAY,AACZ,qCAAwC,CAY3C,AP9hBD,0EAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,sCACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,qCAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,oIAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AOrDL,0EAkjBY,SAAU,CACb,ANlfL,yBMjEJ,+BAsjBY,6BAA6B,AAC7B,gBAAgB,AAChB,iBAAkB,CAEzB,CAAA,AA1jBL,uCA6jBQ,sCN3hBqC,CM4hBxC,APnYD,8BA9KA,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,gBAAgB,AAuIhB,+BAAgC,CA4B/B,AAjKD,wEAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,qCACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,oCAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,iIAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AA0ID,oCA2FA,kBAAkB,AAClB,UAAU,AAgCV,gBAAgB,AAChB,aC7RU,ADkOV,aAAa,AACb,cAAc,AAzFd,iBAAkB,AAClB,kBAAkB,AAClB,UAAY,CA2BX,AAHG,0CA6HJ,gBAAgB,AAChB,YCjSyB,CDqKpB,AOrMT,8BAokBQ,WAAW,AACX,mBAA0B,CAkC7B,ANtiBD,yBMjEJ,8BAwkBY,4BAA6B,CA+BpC,CAAA,AAvmBL,wDA2kBY,WAAW,AACX,WAAY,CACf,AA7kBT,sCA0mBQ,sCNxkBqC,CMykBxC,AA3mBL,4EAinBQ,+CAAoD,CACvD,AAlnBL,wGAunBQ,+CAAoD,CACvD,AAxnBL,iCPaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AAEzB,gBAAgB,AA+DhB,0BCtEgC,ADuEhC,gBAAgB,AAChB,cAAc,AACd,gBAAgB,AAYhB,0BCrFgC,ADsFhC,cCvFwB,ADwFxB,mBAAmB,AAWnB,mBCtGgB,AM6mBZ,iBAAiB,AACjB,oBAAoB,AACpB,mBAAmB,AACnB,UAAW,CACd,APpmBD,8EAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,wCACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,uCAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,0IAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAyCD,8EAEI,0BC5E6B,AD8E7B,8BAAgC,AAYhC,cC3F4B,AD4F5B,sBAAuB,CAZ1B,AOnGL,mDAooBQ,cN1mBK,AM2mBL,0BN3mBK,CM4mBR,AAIL,gEACI,YAAa,CAChB,AC5oBD,sEAuBQ,kBAAkB,ARwTtB,eAAe,AACf,yBAAyB,AQvTrB,gBAAgB,AAChB,aAAc,CAKjB,APkCD,yBOjEJ,sEA6BY,aAAc,CAErB,CAAA,AA/BL,mCAkCQ,mBAAmB,AACnB,gBAAiB,CAKpB,APyBD,0BOjEJ,mCAqCY,UAAU,AACV,eAAgB,CAEvB,CAAA,APyBD,yBOjEJ,wBA+CY,iBAAkB,CAEzB,CAAA,AAjDL,qCAoDQ,aAAc,CAKjB,APQD,yBOjEJ,qCAuDY,iBAAmB,CAE1B,CAAA,AAzDL,mEA6DQ,UAAW,CACd,AA9DL,iDAiEQ,mEAAuE,AACvE,gBAAiB,AACjB,gBAAiB,CACpB,AApEL,iCAuEQ,mBAAoB,CAQvB,APdD,0BOjEJ,iCAyEY,YAAa,CAMpB,CAAA,AA/EL,6DA6EY,eAAgB,CACnB,AA9ET,oCAkFQ,kBAAmB,CACtB,AFzDD,qCAuBA,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAKzB,mBAAmB,AACnB,oBAAqB,AACrB,WAAY,CAhCX,AAED,oCN6UA,2BAA8B,AAC9B,4BAA6B,AAC7B,cAAa,AACb,SAAQ,AACR,UAAS,AACT,WAAU,AACV,eAAe,CMjVd,AAED,oCAkJA,0BAA0B,AAC1B,qBAAqB,AACrB,oBAAsB,AACtB,kBAAkB,AAClB,cAAe,CApJd,AAED,sEA2HA,mBLvJU,AKwJV,WAAW,AACX,kCAAmC,CA3HlC,AAED,oEA6HA,UAAU,ANtKV,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CMwCjB,AAlBD,wCAuBA,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAKzB,mBAAmB,AACnB,oBAAqB,AACrB,WAAY,CAhCX,AAED,uCN6UA,2BAA8B,AAC9B,4BAA6B,AAC7B,cAAa,AACb,SAAQ,AACR,UAAS,AACT,WAAU,AACV,eAAe,CMjVd,AAED,uCAkJA,0BAA0B,AAC1B,qBAAqB,AACrB,oBAAsB,AACtB,kBAAkB,AAClB,cAAe,CApJd,AAED,4EA2HA,mBLvJU,AKwJV,WAAW,AACX,kCAAmC,CA3HlC,AAED,0EA6HA,UAAU,ANtKV,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CMwCjB,AE5CL,gCAyFQ,oBAAqB,CACxB,AA1FL,oCA6FQ,kBAAkB,AAClB,kBAAmB,CAWtB,APxCD,yBOjEJ,oCAiGY,iBAAkB,CAQzB,CAAA,APxCD,0BOjEJ,oCAqGY,iBAAkB,CAIzB,CAAA,AAzGL,oCA4GQ,kBAAkB,AAClB,oBAAqB,CACxB,AA9GL,mCR+UI,eAAe,AACf,yBAAyB,AQ9NrB,eAAgB,CAInB,APrDD,yBOjEJ,mCAoHY,aAAc,CAErB,CAAA,AAtHL,oCRaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,gBAAgB,AQgGZ,WAAW,AACX,mBAAoB,AACpB,sBAAuB,AACvB,mBAAmB,AACnB,WAAY,AACZ,qCAAwC,CAM3C,ARzGD,oFAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,2CACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,0CAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,mJAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AQrDL,oFAmIY,SAAU,CACb,AApIT,6CAwIQ,WAAW,AACX,kBAAkB,AAClB,iBAAiB,AACjB,6BAA8B,CACjC,AA5IL,yCA+IQ,iBAAkB,CACrB,AAhJL,uBAoJQ,uBAAuB,AACvB,kBAAkB,AAClB,mBAAmB,AACnB,YAAY,AACZ,mBAAmB,AACnB,oBAAoB,AACpB,kBAAmB,CAiBtB,AP1GD,0BOjEJ,uBA6JY,kBAAkB,AAClB,SAAS,AACT,MAAO,CAYd,CAAA,AA3KL,oCAmKY,eAAgB,CACnB,AApKT,mHAwKY,kCAAmC,CACtC,AAzKT,wCRaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,gBAAgB,AA4ChB,yBCvCU,ADwCV,uBAAuB,AACvB,cCzCU,AD0CV,gBAAgB,AQsGZ,iBAAkB,AAClB,kBAAkB,AAClB,UAAU,AACV,WAAY,CACf,ARvJD,4FAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,+CACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,8CAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,+JAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAsBD,4FAEI,uBAAuB,AACvB,yBC9CqB,AD+CrB,aC/CqB,CDgDxB,AQhFL,2BRyDI,YAAY,AACZ,gBAAgB,AAChB,gBAAgB,AAChB,UAAU,AACV,SAAS,AQ0HL,kBAAkB,AAClB,QAAQ,AACR,UAAU,AACV,UAAU,AACV,cAAe,CAClB,AA5LL,yCA+LQ,iBAAkB,CACrB,AAhML,uCAmMQ,WAAW,AACX,YAAY,AACZ,sBAAsB,AACtB,QAAQ,AACR,SAAS,AACT,kBAAkB,AAElB,iBAAkB,CACrB,AP1ID,yBQjEJ,qCAGY,UAAU,AACV,WAAY,CAEnB,CAAA,AANL,+BAyEQ,cAAc,AACd,eAAe,AACf,gBAAgB,AAChB,oBAAqB,CACxB,AT0ZD,0BAjEA,gBAAgB,AAChB,cAAc,AEhVd,aAAa,AAgCb,uBAAuB,AACvB,qBAAqB,AACrB,kBAAmB,CFiXlB,AAED,gCACI,iBAAkB,CAKrB,AAHG,2CACI,cAAe,CAClB,AAGL,sCApOA,aAAa,AACb,cAAc,AASd,kBAAkB,AAClB,UAAU,AAkBV,cAAe,AA2MX,mBAAoB,CACvB,AAED,gDACI,wBAAyB,CAC5B,AAED,+CACI,wBAAyB,CAC5B,ASjgBL,0BAkFQ,6BAA6B,AAC7B,eAAgB,CAInB,AAvFL,0CAqFY,kBR3EE,CQ4EL,ACtFT,oCRSI,eAAe,AACf,cAAc,AQPV,WAAW,AACX,mBTYmC,ASXnC,iBAAiB,AACjB,mBAAoB,CAIvB,ATuDD,yBSjEJ,oCRgCM,gBAAiB,CQtBlB,CAAA,ATuDD,0BSjEJ,oCRoCM,iBAAiB,AQ5BX,aAAc,CAErB,CAAA,AAVL,+BRSI,eAAe,AACf,aAAc,CQQb,AT+CD,0BSjEJ,+BRSI,eAAe,AACf,cAAc,AQMN,YAAa,CAEpB,CAAA,AAlBL,gCJiDI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,yBAAyB,AAYzB,eAAgB,CI3Cf,AAtBL,yCJyEI,eAAe,AACf,uDLzEqD,AK0ErD,oBAAsB,AACtB,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,YAAY,AACZ,eAAe,AACf,qBAAqB,AAgBrB,gBAAiB,AACjB,iBAAiB,AACjB,mBAAmB,AIzEf,UAAW,CACd,ATsCD,yBSjEJ,yCJoFQ,cAAe,AACf,UAAW,CI1Dd,CAAA,AJ0ED,oEACI,eAAiB,CACpB,AAFD,+HACI,eAAiB,CACpB,AAFD,sDACI,eAAiB,CACpB,AIvGL,iCJoMI,WAAW,AACX,wBAAwB,AACxB,qBAAqB,AACrB,gBAAgB,AAChB,iBAAkB,AAClB,+BAAkC,AAClC,sBAAsB,AACtB,kBAAkB,AAClB,qBAAqB,AACrB,2DAA2D,AAC3D,sBAAsB,AACtB,yCAA0C,CIhLzC,AA/BL,iCAkCQ,WAAW,AACX,gBAAgB,AAChB,kBAAmB,CACtB,ACpCL,cACI,kBAAkB,AAClB,wBAA0B,CAC7B,AACD,yBTII,eAAe,AACf,cAAc,ASDV,aAAa,AACb,QAAQ,AACR,eAAgB,CAMnB,AVgDD,0BU5DJ,yBTII,eAAe,AACf,cAAc,ASKN,6BAA8B,CAErC,CAAA,AVgDD,gDU5DJ,yBT2BM,gBAAiB,CSflB,CAAA,AVgDD,iDU5DJ,yBT+BM,gBAAiB,CSnBlB,CAAA,AAZL,8BXuZI,aAAkB,AWtYd,0CVYqC,CUXxC,AAlBL,mCAqBQ,wBVpBY,CUyBf,AVkCD,yBU5DJ,mCXuZI,YAAkB,CW7XjB,CAAA,AA1BL,0CA6BQ,mBAAoB,CACvB,AA9BL,8BAiCQ,aAAa,AACb,8BAA8B,AAC9B,eAAe,AACf,WAAY,CASf,AVeD,yBU5DJ,8BAuCY,gBAAiB,AACjB,gBAAiB,CAKxB,CAAA,AVeD,0BU5DJ,8BTkFI,aAAa,AAWb,8BAA8B,AAK9B,qBAAsB,CSrDrB,CAAA,AA7CL,yCAgDQ,oBAAqB,AACrB,YAAa,CAQhB,AVGD,yBU5DJ,yCAoDY,gBAAgB,AAChB,kBAAkB,AAClB,aAAc,CAGrB,CAAA,AAzDL,2BA4DQ,cAAc,AACd,iBAAkB,CAIrB,AVLD,yBU5DJ,2BA+DY,aAAc,CAErB,CAAA,AAjEL,qCAoEQ,gBAAgB,AXkSpB,2BAA8B,AAC9B,4BAA6B,AAC7B,cAAa,AACb,SAAQ,AACR,UAAS,AACT,WAAU,AACV,eAAe,CWtSd,AAtEL,sCAyEQ,cAAc,AACd,kBAAkB,AAClB,WAAW,AACX,wBAAyB,CAK5B,AVrBD,0BU5DJ,sCA8EY,gBAAgB,AAChB,gBAAkB,CAEzB,CAAA,AAjFL,kCAoFQ,WAAW,AACX,iBAAkB,AAClB,+BAA+B,AAC/B,gBAAkB,CAIrB,AA3FL,iCA8FQ,kBAAkB,AAClB,aAAc,AACd,WAAY,AACZ,WAAW,AACX,WAAY,CACf,AAnGL,sCAsGQ,mBAAsB,CACzB,AAvGL,0CA0GQ,gBAAkB,CACrB,AA3GL,gDA8GQ,kBAAmB,CACtB,AA/GL,gDAkHQ,YAAY,AACZ,aAAa,AACb,kBAAkB,AAClB,QAAQ,AACR,QAAS,CACZ,AAvHL,mCX0UI,eAAe,AACf,yBAAyB,AWhNrB,sBAAuB,AACvB,+BV/GoB,CUsHvB,AVvED,yBU5DJ,mCA8HY,mBAAsB,CAK7B,CAAA,AVvED,0BU5DJ,mCAiIY,aAAc,CAErB,CAAA,AAnIL,wDAsIQ,aVxH4B,CUyH/B,AAvIL,2BA0IQ,eAAe,AACf,WAAW,AACX,YAAa,CAKhB,AVrFD,yBU5DJ,2BA+IY,YAAa,CAEpB,CAAA,AAjJL,mCAoJQ,SAAU,CACb,AArJL,uBAwJQ,eAAgB,CACnB,AAzJL,yBTkFI,aAAa,AA4Db,sBAAsB,AACtB,oBAAoB,AFkRpB,gBAAgB,AAChB,aAAc,CWrQb,AA7JL,yBToJI,gBAAgB,AAChB,oBAAoB,AACpB,yBD1IyB,AC2IzB,sBAAsB,AACtB,6BAA6B,AAC7B,gBAAgB,AAChB,2CD7HyC,AC8HzC,iBAAkB,AA9DlB,8BAA8B,ASqE1B,aAAa,AACb,UAAU,AACV,sBAAsB,AACtB,uBAAuB,AACvB,yBAAyB,AACzB,YAAY,AACZ,iBAAkB,CACrB,AAzKL,oCA4KQ,uDAAuD,CAC1D,AA7KL,gCAgLQ,uDAA6D,CAIhE,AApLL,wDAkLY,aV5KO,CU6KV,AAnLT,iCAuLQ,+CAAoD,CACvD,AAxLL,mDA4LY,iBAAkB,AAClB,eAAgB,CACnB,AA9LT,kCTkFI,aAAa,AAgCb,uBAAuB,AACvB,qBAAqB,AACrB,mBAAmB,AS+Ef,kBAAkB,AAClB,MAAM,AACN,SAAS,AACT,OAAO,AACP,QAAQ,AACR,8BAAiC,AACjC,WAAW,AACX,sCV7KqC,CU8KxC,AA3ML,iCA8MQ,mBAAoB,AACpB,mBVrMY,AUsMZ,gCVnMoB,AUoMpB,aAAa,AACb,8BAA8B,AAC9B,mBAAmB,AXuEvB,iBAAkB,CWrEjB,AArNL,gCTuLI,eAAe,AACf,qBAAsB,ASiClB,UAAU,AACV,eAAgB,CAInB,AA9NL,kCA4NY,aVvNE,CUwNL,AA7NT,kCAiOQ,oBAAwB,AACxB,kBAAkB,AAClB,yCVtMqC,CUuMxC,AApOL,+BX+UI,gBAAgB,AAChB,gBAAgB,AAChB,cCnUgC,AU0N5B,gBAAkB,CACrB,AAzOL,mCA4OQ,qBAAqB,AACrB,mBAAoB,AACpB,kBAAmB,AACnB,0BAA2B,CAC9B,AAhPL,yCAmPQ,gBAAiB,CACpB,AApPL,qCXiaI,gBAAgB,AAChB,cAAc,AW1KV,iBAAkB,AAClB,cV3O4B,AU4O5B,mBAAqB,CACxB,AA3PL,8BXiaI,gBAAgB,AAChB,cAAc,AWnKV,gBAAgB,AAChB,gBAAkB,CACrB,AAjQL,oCAoQQ,aAAa,AACb,SAAS,AACT,WAAW,AACX,kBAAmB,CAwBtB,AA/RL,0CAyQgB,wBV7Pa,CUiQhB,AA7Qb,+DA2QoB,YVtPP,CUuPI,AA5QjB,sCA+QY,gBAAmB,AACnB,cVlQwB,ACoEhC,aAAa,ASgML,mBAAmB,AACnB,WAAW,AACX,YAAa,CAUhB,AA9RT,wFAuRgB,cVlQH,AUmQG,2BV9PF,AU+PE,kBAAmB,CAItB,AA7Rb,kIA2RoB,YVtQP,CUuQI,AA5RjB,2BAiSQ,UAAW,CASd,AA1SL,wDAoSgB,aV/QH,CUgRA,AArSb,2CAuSgB,YVlRH,CUmRA,AAxSb,iCXoDI,YAAY,AACZ,gBAAgB,AAChB,gBAAgB,AAChB,UAAU,AACV,SAAS,AE0BT,aAAa,AS4NT,aAAa,AACb,mBAAmB,AACnB,kBAAkB,AAClB,gBAAgB,AAChB,cVpS4B,AUqS5B,eAAe,AACf,WAAW,AACX,gBAAkB,CAIrB,AAzTL,2CAuTY,YVzSwB,CU0S3B,AAxTT,+BA2TQ,aV7S4B,AU8S5B,WAAW,AACX,YAAY,AACZ,iBAAkB,CACrB,AA/TL,2CAkUQ,aAAa,AACb,kBAAkB,AAClB,UAAU,AACV,SAAS,AACT,YAAY,AACZ,YAAY,AACZ,sBAAsB,AACtB,gBAAgB,AAChB,wBAA6B,AAC7B,yCV9SqC,CUmTxC,AAhVL,qEA8UY,cAAe,CAClB,AA/UT,sCAmVQ,YAAY,AACZ,gBAAgB,AAChB,YAAY,AACZ,WAAW,AACX,UAAU,AACV,aAAc,AACd,aAAa,AACb,WAAW,AACX,cAAe,CAClB,AA5VL,2CA+VQ,YAAY,AACZ,aAAa,AACb,sBAAsB,AACtB,oBAAqB,CACxB,AAnWL,4CAsWQ,WAAW,AACX,YAAY,AACZ,aV1V4B,AU2V5B,yCV5UqC,CU6UxC,AA1WL,sCAiXQ,gCAAgC,AAChC,SAAU,CA4Bb,AA9YL,+DAoXY,iBAAkB,CACrB,AArXT,+DAwXY,yDAA0D,CAC7D,AAzXT,2DA4XY,yDAAwE,CAC3E,AA7XT,gFAgYY,yBAA0B,CAC7B,AAjYT,uEAoYY,cAAc,AACd,iDAAkD,AX3G1D,kBAAkB,AA3MlB,mCAAoC,CWyT/B,AAxYT,8DA2YY,UAAY,CACf,AA5YT,4BAkZQ,aAAa,AACb,6BAA6B,AAC7B,gBAAgB,AAChB,iBAAkB,AAClB,UAAU,AACV,iBAAkB,CACrB,AAxZL,kCA4ZQ,gBAAgB,AAChB,UAAU,AACV,aV5ZQ,CUmaX,AALG,yBAhaR,kCAiaY,WAAW,AACX,UAAU,AACV,mBAAqB,CAE5B,CAAA,AAraL,oCAwaQ,iBAAiB,AACjB,cAAc,AACd,iBAAkB,CACrB,AA3aL,0DA8aQ,UAAY,CACf,AA/aL,mDAkbQ,aAAwB,CAS3B,AA3bL,yDAqbY,YAAY,AACZ,gBAAgB,AAChB,kBAAkB,AAClB,UAAU,AACV,WAAY,CACf,AA1bT,mCA8bQ,yBAAyB,AACzB,gBAAgB,AAChB,gBAAgB,AAChB,aVnb4B,CUob/B,AAlcL,wCA0cQ,aAAa,AACb,QAAQ,AACR,6BAA8B,CACjC,AA7cL,0CAgdQ,aAAa,AACb,OAAQ,CAIX,AVzZD,0BU5DJ,0CAmdY,6BAA8B,CAErC,CAAA,AArdL,kCAwdQ,gBAAgB,AAChB,YAAY,AACZ,UAAU,AACV,iBAAkB,CAErB,AVjaD,0BU5DJ,kCX4ZQ,gBAAiB,CWiEpB,CAAA,AA7dL,kCXQI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AAEzB,gBAAgB,AA+DhB,0BCtEgC,ADuEhC,gBAAgB,AAChB,cAAc,AACd,gBAAgB,AAYhB,0BCrFgC,ADsFhC,cCvFwB,ADwFxB,mBAAmB,AW4Xf,2BAA2B,AAC3B,cV3d4B,AU4d5B,mBAAoB,CAqCvB,AXjfD,gFAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,yCACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,wCAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,6IAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAyCD,gFAEI,0BC5E6B,AD8E7B,8BAAgC,AAYhC,cC3F4B,AD4F5B,sBAAuB,CAZ1B,AClCD,yBU5DJ,kCX0UI,eAAe,AACf,yBAAyB,AEzPzB,aAAa,AAgCb,uBAAuB,AACvB,qBAAqB,AACrB,mBAAmB,ASqXX,sBAAsB,AACtB,kBAAkB,AAClB,MAAM,AACN,OAAO,AACP,QAAQ,AACR,SAAS,AACT,4BAAqC,CAyB5C,CAAA,AAxgBL,uDXqRI,kBAAkB,AAClB,UAAU,AA1BV,aAAa,AACb,cAAc,AWwPN,iBAAiB,AACjB,wBV/ewB,CUsf3B,AVjcL,yBU5DJ,uDAyfgB,WAAW,AACX,YAAY,AACZ,oBAAuB,CAE9B,CAAA,AA7fT,wCAggBY,aV1fO,CUggBV,AAtgBT,6DAmgBgB,UAAU,AACV,kBV9fG,CU+fN,AArgBb,uCA2gBQ,aV3gBO,CU4gBV,AA5gBL,wBXiaI,gBAAgB,AAChB,cAAc,AWgHV,cAAe,CAClB,AAnhBL,sDTkFI,aAAa,AAgCb,uBAAuB,AACvB,qBAAqB,AACrB,kBAAmB,CSpHvB,AA4hBK,8BALG,eAAgB,AAChB,gBAAiB,AACjB,kBAAkB,AAClB,eAAmB,CAEtB,AA5hBL,4CA+hBQ,wBV1hBM,CU2hBT,AAhiBL,mFAoiBQ,YAAa,CAChB,AAriBL,gGAyiBQ,cAAc,AACd,eAAe,AACf,kBAAkB,AAClB,aAAc,AACd,UAAY,CACf,AA9iBL,yFAmjBY,UAAU,CACb,AApjBT,yCAwjBQ,iBAAmB,CACtB,AAzjBL,6CA4jBQ,kBAAoB,CACvB,AClkBL,gCAEQ,UAAW,CAad,AAfL,sCVuFI,aAAa,AF+Ub,gBAAgB,AAChB,cAAc,AElSd,eAAgB,CUlHf,AAnBL,sCVyII,kBAAkB,AAlDlB,aAAa,AAgCb,uBAAuB,AACvB,qBAAqB,AACrB,mBAAmB,AUjGf,aXOM,AWNN,gBAAiB,CAKpB,AV6GD,mDACI,cAAe,CAClB,AD5ED,yBWjEJ,sCA4BY,iBAAkB,CAEzB,CAAA,AA9BL,gDZQI,YAAa,AACb,cAAe,CYyBd,AAlCL,8CZaI,kBAAkB,AAClB,YAAY,AACZ,kBAAkB,AAClB,0BAA0B,AAC1B,eAAe,AACf,gBAAgB,AAChB,qBAAqB,AACrB,WAAW,AACX,yCAAyC,AACzC,mBCSU,ADRV,eAAe,AACf,yBAAyB,AACzB,mBAAmB,AACnB,gBAAgB,AA4ChB,yBCvCU,ADwCV,uBAAuB,AACvB,cCzCU,AD0CV,gBAAgB,AAoDhB,gBAAkB,CYtFjB,AZXD,wGAEI,WAAW,AACX,gBAAgB,AAChB,kBCAqB,CDCxB,AAED,qDACI,WAAW,AACX,wCAAwC,AACxC,kBAA8B,CACjC,AAED,oDAxCA,sBAAsB,AACtB,oBAAoB,AACpB,mBAAmB,AACnB,iBAAkB,CAuCjB,AAED,iLAGI,mBCjBM,ADkBN,eAAe,AACf,UAAW,CAGd,AAsBD,wGAEI,uBAAuB,AACvB,yBC9CqB,AD+CrB,aC/CqB,CDgDxB,AYhFL,sCA0CQ,eAAe,AACf,gBAAgB,AAChB,oBAAoB,AACpB,gBAAiB,CACpB,AA9CL,uCAkDQ,MAAM,AACN,eAAe,AACf,gBAA0B,CAC7B,ACrDL,6BAEQ,iBAAiB,AACjB,kBAAkB,AAClB,2BAA2B,AAC3B,mBZWmC,AYVnC,sBAAsB,AACtB,4BAA6B,CAQhC,AAfL,mCb+UI,eAAe,AACf,yBAAyB,AarUjB,cAAc,AACd,kBAAkB,AAClB,eAAmB,CACtB,AAdT,kCXSI,eAAe,AACf,cAAc,AWSV,aAAc,CAMjB,AZwCD,yBYjEJ,kCXgCM,gBAAiB,CWPlB,CAAA,AZwCD,0BYjEJ,kCXoCM,iBAAiB,AAmDnB,aAAa,AAWb,6BAA8B,CWzE7B,CAAA,AAzBL,6EAqCQ,UAAW,CAKd,AZuBD,0BYjEJ,6EAwCY,SAAU,CAEjB,CAAA,AA1CL,2BA6CQ,iBAAkB,CACrB,AA9CL,sCAiDQ,aAAa,AACb,kBAAmB,CAoBtB,AAtEL,gDAqDY,aZhDG,CYiDN,AAtDT,+CAyDY,eAAe,AACf,kBAAmB,CACtB,AA3DT,+CA8DY,eZtCG,AYuCH,gBAAiB,CACpB,AAhET,gDAmEY,eZ3CG,AY4CH,gBAAiB,CACpB,AArET,iCAyEQ,WAAW,AACX,gBAAgB,AAChB,aAAc,CAKjB,AAhFL,uCA8EY,qBAAsB,CACzB,AA/ET,wCAmFQ,eAAgB,CACnB,AApFL,wCAuFQ,iBAAiB,AACjB,gBAAiB,CACpB,AAzFL,4BA4FQ,kBAAkB,AAClB,iBAAiB,AACjB,YAAY,AACZ,aAAa,AACb,iBAAkB,CAqBrB,AZpDD,yBYjEJ,4BAuGY,YAAY,AACZ,YAAa,CAapB,CAAA,AZpDD,yBYjEJ,4BA4GY,YAAY,AACZ,YAAa,CAQpB,CAAA,AZpDD,0BYjEJ,4BAiHY,YAAY,AACZ,YAAa,CAGpB,CAAA,AArHL,2Cb2WI,2BAA8B,AAC9B,4BAA6B,AAC7B,cAAa,AACb,SAAQ,AACR,UAAS,AACT,WAAU,AACV,eAAe,CaxPd,AAzHL,kCA4HQ,kBAAkB,AAClB,kBAAkB,AAClB,YAAY,AACZ,WAAW,AACX,cAAc,AACd,OAAO,AACP,QAAQ,AACR,kBAAkB,AAClB,sBAAuB,AACvB,yBZ7GO,AY8GP,gDAAsD,CACzD,AAvIL,+CA0IQ,eAAgB,CACnB,AA3IL,+CA8IQ,UAAU,AACV,WAAW,AACX,kBAAkB,AAClB,eAAe,AACf,YAAY,AACZ,eAA+B,CAClC,AApJL,iDAuJY,UAAU,AACV,WAAW,AACX,kBAAkB,AAClB,UAAU,AACV,kBAA+B,CACtC,AA5JL,mCb+UI,eAAe,AACf,yBAAyB,AahLrB,WAAW,AACX,gBAAgB,AAChB,eAAkB,CAMrB,AZvGD,yBYjEJ,mCAqKY,gBAAiB,AACjB,iBAAkB,CAEzB,CAAA,AAxKL,oCA2KQ,gBAAiB,AACjB,iBAAiB,AACjB,eAAgB,CACnB,AA9KL,iDAiLQ,cAAe,CAClB,AAlLL,iDAqLQ,iBAAkB,CACrB,AAtLL,wCAyLQ,gBAAgB,AAChB,gBAAmB,AACnB,kBAAkB,AAClB,qBAAqB,AACrB,UAAW,AACX,YAAY,AACZ,UAAW,CASd,AAxML,8CAkMY,YAAY,AACZ,kBAAkB,AAClB,cAAe,AACf,gBAAgB,AAChB,UAAW,CACd,AAvMT,0CA4MQ,iBAAiB,AACjB,oBAAoB,AACpB,gBAAgB,AAChB,kBAAmB,CAItB,AZlJD,yBYjEJ,0Cb6YI,kBAAkB,AAClB,gBAAiB,Ca3LhB,CAAA,AAnNL,yCA6NQ,uBAAuB,AACvB,qBAAsB,CAOzB,AZpKD,yBYjEJ,yCXuFI,aAAa,AAWb,8BAA8B,AWgItB,mBAAmB,AACnB,oBAAqB,CAE5B,CAAA,AArOL,8Eb+UI,eAAe,AACf,wBAAyB,CanGxB,AA7OL,iCbsaI,gBAAgB,AAChB,aAAc,CatLb,AAjPL,gCAoPQ,WAAW,AACX,eAAe,AACf,UAAU,AACV,kBAAmB,CACtB,AAxPL,wCA2PQ,oBAAoB,AACpB,iBAAkB,CACrB,AA7PL,iFAiQQ,eAAe,AACf,eAAgB,CACnB,AAnQL,0CAsQQ,eAAmB,CAMtB,AZ3MD,yBYjEJ,0CAyQY,kBAAkB,AAClB,eAAgB,CAEvB,CAAA,AA5QL,uCA+QQ,eAAgB,CAQnB,AZtND,yBYjEJ,uCAkRY,kBAAkB,AAClB,YAAY,AACZ,aAAa,AACb,gBAAiB,CAExB,CAAA,AAvRL,6EA2RQ,eAAgB,CACnB,AA5RL,yCA+RQ,2BAA2B,AbA/B,iBAAkB,CaEjB,AAjSL,4CXuFI,aAAa,AAqBb,6BAA6B,AF0T7B,gBAAgB,AAChB,cAAc,AajIV,iBAAkB,CAKrB,AA3SL,mDAiUQ,iBAAiB,AACjB,cAAc,AACd,iBAAkB,CACrB,AApUL,yHb8VI,aCrU0B,CYgTzB,AAzUL,8DbsWI,aC1Uc,CYiTb,AA7UL,yMAmVY,YAAY,AACZ,gBAAgB,AAChB,kBAAkB,AAClB,UAAU,AACV,WAAY,CACf,AAxVT,kDb+UI,eAAe,AACf,yBAAyB,AaarB,eAAgB,CACnB,AA9VL,yCbsaI,gBAAgB,AAChB,cAAc,AarEV,eAAgB,CACnB,AAnWL,wCAsWQ,gCAAoC,AACpC,yBAA0B,CAe7B,AZrTD,yBYjEJ,wCXuFI,aAAa,AAWb,8BAA8B,AW6QtB,kBAAmB,CAO1B,CAAA,AAtXL,sDAmXY,iBAAkB,CACrB,AApXT,iDAyXQ,eAA+B,CAClC,AA1XL,8CA6XQ,cAAc,AACd,iBAAkB,CACrB,AA/XL,sDAkYQ,gBAAgB,AbnDpB,eAAe,AACf,yBAAyB,AaoDrB,kBAAoB,CACvB,AZpUD,yBYjEJ,8CA8YY,mBAAoB,AACpB,gBAAiB,CAExB,CAAA,AAjZL,yDAoZQ,aZxXU,AYyXV,UAAY,CACf,AAtZL,uDAyZQ,aZhYsB,AYiYtB,SAAU,CACb,AA3ZL,+DbsWI,aC1Uc,CYmYb,AA/ZL,6Db8VI,aCrU0B,CY0YzB,AAnaL,yDAsaQ,eAAgB,CAOnB,AA7aL,uCb+UI,eAAe,AACf,yBAAyB,AaiGrB,gBAAgB,AAChB,iBAAkB,CACrB,AAnbL,sDAubY,gBAAiB,CACpB,AAxbT,mGA6bQ,cZnaK,CYoaR,AA9bL,qDAicQ,cZzaO,CY0aV,AAlcL,sCAqcQ,UAAW,CACd,AAtcL,oJA6cQ,qBAAqC,CACxC,AA9cL,+CAidQ,gBAAgB,AAChB,gBAAiB,CACpB,AAndL,8FAudY,YAAa,CAChB,AAxdT,0DXuFI,aAAa,AAWb,8BAA8B,AW2X1B,kBAAmB,CACtB,AA9dL,6DbkbI,gBAAgB,AAChB,WAAW,AAKX,uDAAwD,AACxD,cCpbW,ADqbX,uDCxbsD,ADybtD,gBAAgB,AAChB,gBAAgB,AAChB,gBAAgB,AAChB,oBAAoB,AACpB,iBAAiB,AACjB,gBAAgB,AAChB,YAAY,AACZ,kBAAkB,AAClB,oBAAoB,AACpB,4BAA4B,AAC5B,kBAAkB,AAClB,kBAAkB,AAClB,UAAU,AACV,eAAe,AACf,0CCvayC,AYgcrC,WAAW,AACX,gBAAiB,AACjB,QAAS,CACZ,AAML,uCAEQ,WAAY,CACf,AAHL,4DbhII,2BAA8B,AAC9B,4BAA6B,AAC7B,cAAa,AACb,SAAQ,AACR,UAAS,AACT,WAAU,AACV,eAAe,CaiId,AClfL,2BAGQ,cAAc,AACd,kBAAmB,CAUtB,AbmDD,0BajEJ,2BAOY,aAAa,AACb,eAAe,AACf,uBAAuB,AACvB,UAAU,AACV,YAAa,CAGpB,CAAA,AbmDD,0BajEJ,0BAkBY,mBAAmB,AACnB,2BAA4B,CAEnC,CAAA,Ab4CD,0BajEJ,0BAyBY,iBAAkB,CAEzB,CAAA,AA3BL,oGA+BQ,cAAe,CAClB,AAhCL,sDAoCY,wBbVC,CaWJ,AArCT,mEAwCgB,kBAA6B,CACpC,AAzCT,qEA4CgB,kBAA6B,CACpC,AA7CT,6FAiDY,abtBc,CauBjB,AAlDT,+FAyDY,abhCkB,CaiCrB,AA1DT,gEAgEQ,sBAAuB,CAC1B,AAjEL,yBZSI,eAAe,AACf,aAAc,CYiEb,AbVD,yBajEJ,yBZgCM,gBAAiB,CY2ClB,CAAA,AbVD,0BajEJ,yBZoCM,gBAAiB,CYuClB,CAAA,AA3EL,kHAwEY,eAAe,AACf,eAAgB,CACnB,AA1ET,gCA8EQ,kBAAkB,AdiQtB,eAAe,AACf,wBAAyB,CchQxB,AAhFL,+HAsFY,cb5DC,Ca6DJ,AAvFT,2BA2FQ,YAAa,CAChB,AA5FL,gFAgGQ,oBAAqB,CAWxB,Ab1CD,0BajEJ,gFAmGY,WAAW,AACX,UAAU,AACV,QAAS,CAMhB,AA3GL,4GAwGgB,eAAgB,CACnB,CAAA,AAzGb,2CZSI,eAAe,AACf,cAAc,AYqGV,gBAAiB,CACpB,Ab/CD,yBajEJ,2CZgCM,gBAAiB,CYgFlB,CAAA,Ab/CD,0BajEJ,2CZoCM,gBAAiB,CY4ElB,CAAA,AAhHL,oEAqHY,gBAAgB,AAChB,YAAY,AACZ,iBAAiB,AACjB,kBAAmB,CACtB,AAzHT,sEA4HY,SAAU,CACb,AA7HT,0CZSI,eAAe,AACf,cAAc,AYyHV,gBAAgB,AAChB,oBAAoB,AACpB,kBAAmB,CAMtB,AA3IL,6DAwIY,UAAU,AACV,QAAS,CACZ,AA1IT,sCdqgBI,mBCtfgB,ADufhB,6BAA6B,AAC7B,0BAA0B,AAC1B,iBAAiB,AACjB,oBAAoB,AACpB,gBAAgB,AAChB,mBAAmB,Ac5Xf,iBAAiB,AACjB,eAAgB,CACnB,AAjJL,6BZSI,eAAe,AACf,aAAc,CY2Ib,AArJL,oCd+UI,eAAe,AACf,wBAAyB,CcvLxB,AAzJL,oCA4JQ,eAAgB,CACnB,AA7JL,wCAgKQ,gBAAiB,CACpB,ACjKL,sBAGQ,oBAAqB,CACxB,AAJL,uCAOQ,aAAa,AACb,mBAAmB,AACnB,uBAAuB,AACvB,mBAAmB,AACnB,iBAAkB,CACrB,AAZL,mCTiDI,cAAc,AACd,cAAyB,AACzB,gBAAmB,AACnB,iBAAkB,AAClB,wBAAyB,CSrCxB,AAhBL,wEAoBQ,cAAe,CAClB,AArBL,oCAwBQ,mBAAmB,AACnB,eAAgB,CACnB,AA1BL,oCA6BQ,kBAAkB,AAClB,eAAgB,CACnB,AA/BL,mCTyEI,eAAe,AACf,uDLzEqD,AK0ErD,oBAAsB,AACtB,gBAAgB,AAChB,sBAAsB,AACtB,kBAAkB,AAClB,YAAY,AACZ,eAAe,AACf,qBAAqB,AS9CjB,gBAAgB,AAChB,eAAe,AACf,WAAW,AACX,0CdJqC,CcKxC,Ad0BD,yBcjEJ,mCToFQ,cAAe,AACf,UAAW,CS9Cd,CAAA,AAvCL,8CA0CQ,adhBK,CciBR,AA3CL,4CA8CQ,adrBsB,CcsBzB,AA/CL,sDAkDQ,8BdtBU,CcuBb,AAnDL,0CAsDQ,kBAAkB,AAClB,eAAe,AACf,eAAiB,CACpB,AAzDL,+CA4DQ,MAAO,CACV,AA7DL,gDAgEQ,OAAQ,CACX,AAjEL,kDAoEQ,kBAAkB,AAClB,adnDoB,CcoDvB,AAtEL,2DAiFQ,iBAAkB,CACrB,AAlFL,iDAqFQ,kBAAkB,AAClB,WAAY,AACZ,oBAAqB,AACrB,YAAY,AACZ,aAAa,AACb,cAAc,AACd,yBdnEO,AcoEP,sBAAsB,AACtB,kBAAkB,AAClB,YAAa,CAChB,AA/FL,sDAkGQ,MAAO,CACV,AAnGL,uDAsGQ,aAAe,CAClB,AAvGL,uDA0GQ,kBAAkB,AAClB,cAAyB,AACzB,aAAa,AACb,kBAAkB,AAClB,eAAe,AACf,qBAAqB,AACrB,kBAAkB,AAClB,wBAAyB,CAC5B,AAlHL,sBAkIE,kBAAkB,AAClB,gBAAgB,AAChB,eAAgB,CA6KhB,AAjTF,wCAyIG,YAAa,CACb,AA1IH,mDA4IG,SAAS,AACT,mBAAmB,AACnB,WAAW,AACX,YAAY,AACZ,gBAAgB,AAChB,UAAU,AACV,kBAAkB,AAClB,SAAU,CACV,AApJH,uCAsJG,SAAS,AACT,UAAU,AACV,SAAS,AACT,UAAU,AACV,gBAAgB,AAChB,qBAAqB,AACrB,eAAe,AACf,eAAgB,CAChB,AA9JH,iGAiKG,WAAW,AACX,cAAc,AACd,wBAAyB,CACzB,AApKH,gDAsKG,UAAW,CACX,AAvKH,0CAyKG,YAAa,CACb,AA1KH,sCA4KG,WAAW,AACX,YAAY,AACZ,MAAM,AACN,OAAO,AACP,kBAAkB,AAClB,UAAU,AACV,uBAAuB,CACvB,AAnLH,gCAsLG,WAAY,CACZ,AAvLH,yCA6LG,wBAA0B,CAC1B,AA9LH,+BAsMG,cAAc,AACd,qBAAqB,AACrB,gBAAgB,AAChB,2BAA4B,CAC5B,AA1MH,yCAkNG,eAAe,AACf,MAAM,AACN,OAAO,AACP,WAAW,AACX,WAAY,CACZ,AAvNH,wCA0NG,gBAAgB,AAChB,kBAAkB,AAClB,sBAAsB,AACtB,kBAAkB,AAClB,UAAU,AACV,aAAa,AACb,cAAc,AACL,WAAW,AACpB,mBAAmB,AACnB,eAAe,AAEf,kBAAkB,AAClB,wJdpM0C,Cc6N1C,AA/PH,8CAiPI,aAAa,AACb,8BAA+B,CAC/B,AAnPJ,oGAmQY,aAAa,AACtB,cAAc,AACL,WAAW,AACX,mBAAoB,CACvB,AAvQT,mDA0QY,UAAU,AACnB,wBdjPU,CckPV,AA5QH,iDA+QY,yBdvPG,AcwPH,aAAc,CACjB,AAjRT,uCAoRG,kBAAkB,AAClB,UAAU,AACV,gBAAgB,AAChB,cAAc,AACd,SAAS,AACT,wBAAwB,AACxB,MAAM,AACN,WAAY,CACZ,AA5RH,oDA+RY,mBdvQG,AcwQH,SAAU,CACb,AAjST,2CAoSG,OAAO,AACP,kBd3RW,Cc4RX,AAtSH,2CAySG,OAAQ,CACR,AA1SH,mHA+SG,cAAe,CACf,AAhTH,gCAoTE,YAAa,CACb,AArTF,8CAyTG,eAAgB,CAChB,AA1TH,uDA6TG,eAAgB,CAChB","file":"enp_quiz-create.min.css","sourcesContent":["html {\n font-size: 16px!important; // set our rem value reference\n}\n\nhtml #enp-quiz {\n box-sizing: border-box;\n}\n\nbody #enp-quiz {\n background: #fff;\n overflow: hidden;\n}\n\n#enp-quiz {\n *, *:before, *:after {\n box-sizing: inherit;\n }\n\n ul, ol {\n margin: 0 0 1.6rem 1.25rem;\n padding: 0;\n }\n\n textarea {\n margin-bottom: 1rem;\n }\n\n button, input[type=\"button\"], input[type=\"reset\"], input[type=\"submit\"] {\n border: none;\n &:active,\n &:focus,\n &:hover {\n border: none;\n }\n }\n\n iframe {\n border: none;\n }\n}\n","@mixin focus--glow {\n outline-color: #4D90FE;\n outline-offset: -2px;\n outline-style: auto;\n outline-width: 5px;\n}\n\n@mixin disabled {\n opacity: 0.65;\n cursor: default;\n}\n\n@mixin btn {\n text-align: center;\n border: none;\n border-radius: 3px;\n padding: .85em 1.4em .75em;\n font-size: 15px;\n font-weight: 400;\n letter-spacing: .05em;\n color: #fff;\n box-shadow: inset 0 -2px 0 rgba(0,0,0,.2);\n background: $link;\n cursor: pointer;\n text-transform: uppercase;\n transition: all .2s;\n line-height: 1.6;\n\n &:focus,\n &:hover {\n color: #fff;\n box-shadow: none;\n background: $link_hover;\n }\n\n &:active {\n color: #fff;\n box-shadow: inset 0 2px 0 rgba(0,0,0,.1);\n background: lighten($blue, 20);\n }\n\n &:focus {\n @include focus--glow;\n }\n\n &:disabled,\n &:disabled:focus,\n &:disabled:hover {\n background: $link;\n cursor: default;\n opacity: .5;\n\n\n }\n}\n\n@mixin btn--reset {\n border: none;\n background: none;\n box-shadow: none;\n padding: 0;\n margin: 0;\n}\n\n@mixin btn--submit {\n @include btn;\n}\n\n@mixin btn--ghost {\n @include btn;\n border: 2px solid $link;\n background: transparent;\n color: $link;\n box-shadow: none;\n\n &:focus,\n &:hover {\n background: transparent;\n border: 2px solid $link_hover;\n color: $link_hover;\n }\n}\n\n@mixin box-shadow {\n box-shadow: 0 2px 2px rgba(0,0,0,.2);\n}\n\n@mixin btn--dashed {\n @include btn;\n border: 1px dashed $darker_gray;\n background: none;\n color: #545454;\n box-shadow: none;\n\n &:hover,\n &:focus {\n border: 1px dashed $darkest_gray;\n color: $darker_gray;\n background: rgba(255,255,255,.9);\n }\n}\n\n@mixin btn--dashed--light {\n @include btn--dashed;\n border: 2px dashed $darker-gray;\n color: $dark_gray;\n transition: all .2s;\n\n &:hover,\n &:focus {\n color: $darker_gray;\n border: 2px dashed #999;\n }\n}\n\n@mixin btn--dashed--light--alt-bg {\n @include btn--dashed--light ;\n background: $light_gray;\n}\n\n@mixin btn--small {\n font-size: 13px;\n}\n\n@mixin btn--thin {\n padding: 0.4em 1em;\n}\n\n@mixin btn--icon {\n @include btn;\n padding: .75em 0.8em .7em 1.4em;\n}\n\n@mixin btn--icon__icon {\n @include icon--white;\n @include icon--xl;\n position: relative;\n top: 4px;\n}\n\n/*\n* @usage: @include btn--icon(BEM-root-class);\n* Button with icon with white circular background.\n* --------------\n* | BTN TEXT > |\n* --------------\n* @param $rootBEM: root class name that will be extended\n\n@mixin btn--icon($rootBEM) {\n .(#){$rootBEM} {\n @include btn--icon;\n }\n\n .(#){$rootBEM}__icon {\n @include btn--icon__icon ;\n }\n}\n*/\n\n@mixin btn--icon--icon-circle {\n @include btn;\n padding: .65em 1.2em .85em 1.4em;\n}\n\n// use when the icon is larger and on the right\n@mixin btn--icon__icon--circle {\n @include icon--circle;\n @include icon--white-bg;\n @include icon--normal;\n margin-left: 0.5em;\n position: relative;\n top: 0.15rem;\n}\n\n@mixin btn--icon__icon--circle--hover {\n @include icon--white-bg--hover;\n}\n\n/*\n* @usage: @include btn--icon--circle(BEM-root-class);\n* Button with icon with white circular background.\n* ---------------\n* | BTN TEXT (>) |\n* ---------------\n* @param $rootBEM: root class name that will be extended\n*/\n@mixin btn--icon--circle($rootBEM) {\n .#{$rootBEM} {\n @include btn--icon--icon-circle;\n }\n\n .#{$rootBEM}__icon {\n @include btn--icon__icon--circle ;\n\n\n &:hover {\n @include btn--icon__icon--circle--hover ;\n }\n }\n}\n\n/*\n* @usage: @include btn--icon--hover-circle(BEM-root-class);\n* Button with icon. Hovering/focusing button moves\n* the icon to right and fades in a white circular background\n* -------------- ----------------\n* | BTN TEXT > | --hover/focus--> | BTN TEXT (>) |\n* -------------- ----------------\n* @param $rootBEM: root class name that will be extended\n*/\n@mixin btn--icon--hover-circle($rootBEM) {\n .#{$rootBEM} {\n @include btn--icon--icon-circle;\n padding-right: 0.8em;\n }\n\n .#{$rootBEM}__icon {\n @include btn--icon__icon--circle ;\n margin-left: 0;\n width: 1em;\n height: 1em;\n background: transparent;\n fill: #fff;\n transform: translate3d(0, 0, 0);\n transition: all .3s ease-in-out;\n }\n\n .#{$rootBEM}:hover .#{$rootBEM}__icon {\n @include btn--icon__icon--circle--hover ;\n transform: translate3d(1em, 0, 0);\n margin-right: 1em;\n }\n\n\n}\n\n// use on small icons and placed on the left\n@mixin btn--icon__icon--circle--small {\n @include icon--circle--small;\n margin-right: 5px;\n}\n\n\n// use this to match the icon to the inline font-size\n@mixin icon--inline {\n width: 1em;\n height: 1em;\n position: relative;\n top: .125em;\n}\n\n@mixin icon--small {\n width: 1rem;\n height: 1rem;\n}\n\n@mixin icon--normal {\n width: 1.2rem;\n height: 1.2rem;\n}\n\n@mixin icon--large {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n@mixin icon--xl {\n width: 1.8rem;\n height: 1.8rem;\n}\n\n@mixin icon--xxl {\n width: 2.4rem;\n height: 2.4rem;\n}\n\n@mixin icon--xxxl {\n width: 2.8rem;\n height: 2.8rem;\n}\n\n@mixin icon--circle {\n border-radius: 50%;\n fill: #fff;\n}\n\n@mixin border-radius {\n border-radius: 3px;\n}\n\n@mixin icon--circle--pad {\n @include icon--circle ;\n padding: 0.05em;\n\n @include breakpoint(medium) {\n padding: 0.15em;\n }\n}\n\n@mixin icon--circle--pad--xl {\n @include icon--circle ;\n padding: 0.6rem;\n}\n\n@mixin icon--circle--small {\n @include icon--small;\n @include icon--circle;\n padding: 0.02rem;\n}\n\n@mixin icon--white {\n fill: #fff;\n}\n\n@mixin icon--white-bg {\n background: #fff;\n fill: $link;\n}\n\n@mixin icon--white-bg--hover {\n background: #fff;\n fill: $link_hover;\n}\n\n@mixin icon--gray-bg {\n background: $dark_gray;\n fill: $light_gray;\n}\n\n@mixin icon--gray-bg--hover {\n fill: #fff;\n background: $darker_gray;\n}\n\n@mixin small-uppercase {\n font-size: 1rem;\n text-transform: uppercase;\n}\n\n@mixin hint {\n font-size: .7rem;\n font-weight: 300;\n color: $darker_gray;\n}\n\n@mixin green {\n color: $green;\n}\n\n@mixin dark-green {\n color: $dark_green;\n}\n\n@mixin red {\n color: $red;\n}\n\n@mixin fade-red {\n color: $fade_red;\n}\n\n/* Text meant only for screen readers */\n@mixin screen-reader-text {\n clip: rect(1px, 1px, 1px, 1px);\n position: absolute !important;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}\n\n@mixin screen-reader-text--hover {\n background-color: #f1f1f1;\n border-radius: 3px;\n box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);\n clip: auto !important;\n color: #21759b;\n display: block;\n font-size: 14px;\n font-weight: bold;\n height: auto;\n left: 5px;\n line-height: normal;\n padding: 15px 23px 14px;\n text-decoration: none;\n top: 5px;\n width: auto;\n z-index: 100000;\n}\n\n@mixin xmargin-vertical {\n margin-top: 2rem;\n margin-bottom: 2rem;\n}\n\n@mixin xmargin-horizontal {\n margin-right: 2rem;\n margin-left: 2rem;\n}\n\n@mixin xpadding-vertical {\n padding-top: 2rem;\n padding-bottom: 2rem;\n}\n\n@mixin xpadding-vertical-top {\n padding-top: 2rem;\n}\n\n@mixin xpadding-horizontal {\n padding-right: 2rem;\n padding-left: 2rem;\n}\n\n@mixin header-space {\n @include breakpoint(large) {\n padding-top: 7rem;\n }\n}\n\n@mixin ul-no-style {\n list-style: none;\n margin-left: 0;\n}\n\n@mixin hidden--accessible {\n height: 0;\n opacity: 0;\n padding: 0;\n overflow: hidden;\n}\n\n@mixin accordion {\n background: #fff;\n width: 100%;\n}\n\n@mixin accordion__header {\n @include accordion ;\n box-shadow: inset 1px 1px 0 #ccc, inset -1px -1px 0 #ccc;\n color: $font;\n font-family: $fontTitle;\n font-size: .9rem;\n font-weight: 400;\n line-height: 1.5;\n text-transform: none;\n letter-spacing: 0;\n text-align: left;\n border: none;\n border-radius: 3px;\n min-height: 3.065rem;\n padding: 1rem 2rem 1rem 1rem;\n margin: 1.6rem 0 0;\n position: relative;\n z-index: 9;\n cursor: pointer;\n transition: all .2s $fastInEaseOut;\n}\n\n@mixin accordion__content {\n @include accordion ;\n box-shadow: inset 1px -1px 0 #ccc, inset -1px -1px 0 #ccc;\n display: block;\n position: relative;\n height: auto;\n overflow: visible;\n margin-bottom: 1.6rem;\n}\n\n@mixin accordion__content--closed {\n // TEMP DEV comment out\n margin-top: 0;\n padding-top: 0rem;\n animation: slideOutTop .25s $fastInEaseOut forwards;\n display: none;\n}\n\n@mixin accordion__content--open {\n padding-top: 1.6rem;\n margin-bottom: 2rem;\n animation: slideInTop .45s $fastInEaseOut forwards;\n}\n\n// Share Icons\n@mixin share_icons($rootBEM) {\n\n .#{$rootBEM} {\n @include ul-no-style;\n @include flex-center;\n }\n\n .#{$rootBEM}__item {\n margin-right: 20px;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .#{$rootBEM}__item__icon {\n @include icon--xxl;\n @include icon--circle--pad--xl;\n\n fill: #fff!important;\n }\n\n .#{$rootBEM}__item__icon--facebook {\n background-color: #3a5795;\n }\n\n .#{$rootBEM}__item__icon--twitter {\n background-color: #4099ff;\n }\n}\n\n@mixin section--alt {\n background: $light_gray;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n padding-top: 3rem;\n padding-bottom: 3rem;\n margin-top: 3rem;\n margin-bottom: 3rem;\n}\n\n#enp-quiz {\n .enp-screen-reader-text {\n @include screen-reader-text;\n }\n\n .enp-screen-reader-text:hover,\n .enp-screen-reader-text:active,\n .enp-screen-reader-text:focus {\n @include screen-reader-text--hover;\n }\n\n .enp-accordion-header {\n @include accordion__header ;\n\n &:first-of-type {\n margin-top: 0;\n }\n\n .enp-accordion-header__icon {\n position: absolute;\n fill: $dark_gray;\n right: 0.75rem;\n bottom: 0.75rem;\n transition: all .35s $fastInEaseOut;\n }\n }\n\n .enp-accordion-header--open {\n\n .enp-accordion-header__icon {\n transform: rotateX(180deg);\n }\n\n }\n\n .enp-quiz-settings__form .enp-accordion-header {\n position: relative;\n overflow-y: hidden;\n }\n\n .enp-accordion-content {\n @include accordion__content ;\n\n }\n\n .enp-accordion-content--closed {\n @include accordion__content--closed ;\n }\n\n .enp-accordion-content--open {\n @include accordion__content--open ;\n }\n\n .enp-quiz-message {\n @include container--thin;\n background: #fff;\n border: 1px solid #eee;\n border-bottom: 1px solid #ccc;\n padding: 1rem;\n margin-bottom: 1.6rem;\n position: fixed;\n bottom: 0;\n left: 0;\n }\n\n .enp-quiz-message__title {\n @include small-uppercase;\n }\n\n .enp-message__list {\n @include ul-no-style;\n font-size: 1.1rem;\n margin-bottom: 0;\n }\n\n .enp-quiz-message--error {\n border-left: 6px solid $red;\n color: $red;\n }\n\n .enp-quiz-message__title--error {\n color: $dark_red;\n }\n\n .enp-quiz-message--success {\n border-left: 6px solid $green;\n color: $dark_green;\n }\n\n .enp-quiz-message__title--success {\n color: $dark_green;\n }\n\n .enp-quiz-message--note {\n border-left: 6px solid $khaki;\n }\n\n .enp-quiz-message__title--note {\n color: $dark_blue;\n }\n\n .enp-quiz-message__close {\n @include btn--reset;\n position: absolute;\n top: 5px;\n right: 5px;\n }\n\n .enp-quiz-message--ajax {\n margin-bottom: .6rem;\n animation: slideInBottom .3s;\n }\n\n .enp-quiz-message-ajax-container {\n z-index: 9999;\n position: fixed;\n bottom: 10px;\n }\n\n .enp-quiz-message--saving__spinner {\n margin-left: -10px;\n }\n\n .enp-quiz-message--saving__text {\n font-size: 1rem;\n }\n\n textarea.limited-chars,\n input.limited-chars {\n margin-bottom: 0.2rem;\n }\n\n .limited-chars__container {\n color: lighten($dark_gray, 8);\n font-size: 0.8rem;\n display: block;\n text-align: right;\n margin-bottom: 1.2rem;\n }\n\n .limited-chars__counter {\n color: $dark_gray;\n }\n\n .limited-chars__container--error {\n color: $dark_red;\n\n .limited-chars__counter {\n color: $dark_red;\n }\n }\n\n textarea.has-error,\n input.has-error {\n border: 1px solid $red;\n &:focus {\n outline-color: $red;\n }\n\n }\n\n\n\n .enp-tooltip {\n position: relative;\n }\n\n .enp-tooltip__activator {\n\n &:focus + .enp-tooltip__description,\n &:focus > .enp-tooltip__description {\n display: block;\n }\n }\n\n .enp-tooltip__description {\n display: none;\n position: absolute;\n left: 103%;\n margin-bottom: 2rem;\n border-radius: 3px;\n background: $light_gray;\n font-size: 0.9rem;\n padding: 0.9rem;\n max-width: 200px;\n }\n\n\n}\n\n.enp-sticky {\n position: relative;\n left: 0;\n right: 0;\n top: 0;\n z-index: 999;\n\n &.enp-sticky--fixed {\n position: fixed;\n }\n}\n\n.enp-breadcrumb-link {\n font-size: 0.85rem;\n}\n\n.enp-breadcrumb-link__icon {\n position: relative;\n top: 0.45rem;\n left: 0.4rem;\n}\n","//fonts\n$fontBody : Arial,monospace, helvetica, arial, sans-serif;\n$fontTitle : Arial,monospace, helvetica, arial, sans-serif;\n\n// // // colors\n$font : #1d1c25;\n$background: #FAF9FB;\n$title : #5D5E5F;\n\n// Blues\n$blue: #00A9B7;\n$dark_blue: #333F48;\n$light_blue: lighten($dark_blue, 40);\n\n// Grays\n$light_gray: #FAF9FB;\n$really_light_gray: lighten($light_gray, 1);\n$gray: darken($light_gray, 2);\n$dark_gray: darken($gray, 5);\n$darker_gray: darken($dark_gray, 25);\n$darkest_gray: darken($dark_gray, 50);\n\n// Other colors\n$khaki: #CCA562;\n$green: #60AAAD;\n$dark_green: darken($green, 8);\n$red: #bf5700;\n$dark_red: darken($red, 8);\n$fade_red: #C1893E;\n\n// Elements\n$link: #bf5700;\n$link_hover: darken($link, 8);\n// animation\n$fastInEaseOut: cubic-bezier(0.000, 0, .3, 1);\n\n\n$breakpoints: (\n \"small\" : 400px,\n \"medium\" : 700px,\n \"large\" : 1000px\n);\n\n// -----------------------------------------------------------------------------\n// Core\n// -----------------------------------------------------------------------------\n\n// Caching current breakpoint\n// Not meant to be manually edited\n$default-breakpoint: root;\n$current-breakpoint: $default-breakpoint;\n\n// The usual breakpoint mixin\n// Except it updates the $current-breakpoint variable\n// 1. If breakpoint name exists in map\n// 2. Update $current-breakpoint\n// 3. Open a media query\n// 4. Let the user dump content\n// 5. Then reset $current-breakpoint\n// 6. If breakpoint name doesn't exist in map, warn the user\n@mixin breakpoint($breakpoint) {\n $value: map-get($breakpoints, $breakpoint);\n\n @if $value != null { // 1\n $current-breakpoint: $breakpoint !global; // 2\n @media (min-width: $value) { @content; } // 3\n $current-breakpoint: $default-breakpoint !global; // 5\n }\n\n @else {\n @warn \"Invalid breakpoint `#{$breakpoint}`.\"; // 6\n }\n}\n\n// for only targeting a specific device\n// NOTE: DOESN'T SUPPORT THE @include placeholders!!!\n@mixin media($query) {\n @if $query == max-small {\n $media_query: \"max-width: #{map-get($breakpoints, \"small\")}\";\n } @else if $query == only-medium {\n $media_query: \"min-width: #{map-get($breakpoints, \"medium\")}) and (max-width: #{(map-get($breakpoints, \"large\") - 1px)}\";\n } @else if $query == max-medium {\n $media_query: \"max-width: #{(map-get($breakpoints, \"medium\") - 1px)}\";\n } @else if $query == max-large {\n $media_query: \"max-width: #{(map-get($breakpoints, \"large\") - 1px)}\";\n } @else {\n // just use the number provided as a max width\n $media_query: \"max-width: #{$query}\";\n }\n\n @if variable-exists(media_query) {\n @media ($media_query) {\n @content;\n }\n }\n\n}\n","@mixin clearfix {\n &:after {\n content: \"\";\n display: table;\n clear: both;\n }\n}\n\n@mixin container {\n max-width: 80vw;\n margin: 0 auto;\n // @include clearfix;\n}\n\n@mixin well {\n padding: 1.6rem;\n margin-bottom: 1.6rem;\n background: $light_blue;\n @include border-radius;\n border: 1px solid #eee;\n border-bottom-color: #ccc;\n\n @include breakpoint(medium) {\n margin-bottom: 2.6rem;\n padding: 1.6rem 2rem;\n }\n}\n\n@mixin container--wide {\n @include container;\n\n @include breakpoint(medium) {\n max-width: 1000px;\n }\n\n @include breakpoint(large) {\n max-width: 1440px;\n }\n}\n\n\n@mixin container--thin {\n @include container;\n // max-width: 512px;\n}\n\n@mixin container--really-thin {\n @include container;\n max-width: 300px;\n}\n\n@mixin container--form {\n @include container--thin;\n\n .enp-input,\n .enp-textarea {\n width: 100%;\n }\n}\n\n@mixin container--form--thin {\n @include well;\n @include container--really-thin;\n\n .enp-input,\n .enp-textarea {\n width: 100%;\n }\n}\n\n@mixin flex-container { // no pseudo element to clear and break spacing\n @include container;\n}\n\n@mixin flex-container--wide { // no pseudo element to clear and break spacing\n @include flex-container;\n\n @include breakpoint(medium) {\n max-width: 840px;\n }\n\n @include breakpoint(large) {\n max-width: 1000px;\n }\n}\n\n@mixin flex {\n display: flex;\n}\n\n@mixin flex-list__item {\n flex-basis: 100%;\n margin: 0;\n border-bottom-color: #ddd;\n}\n\n@mixin flex-spread {\n @include flex;\n justify-content: space-between;\n}\n\n@mixin flex-spread-vertical {\n @include flex-spread;\n flex-direction: column;\n}\n\n@mixin flex-spread-around {\n @include flex;\n justify-content: space-around;\n}\n\n@mixin flex-bottom {\n @include flex;\n align-items: flex-end;\n align-content: flex-end;\n}\n\n@mixin flex-center {\n @include flex;\n justify-content: center;\n align-content: center;\n align-items: center;\n}\n\n@mixin flex-vertical-center {\n @include flex;\n align-content: center;\n align-items: center;\n}\n\n@mixin flex-inline {\n @include flex;\n @include ul-no-style;\n margin-bottom: 0;\n}\n\n@mixin flex-inline__item {\n margin-right: 10px;\n\n &:last-of-type {\n margin-right: 0;\n }\n}\n\n\n@mixin flex-grid {\n @include flex;\n flex-flow: column wrap;\n align-items: stretch;\n @include ul-no-style;\n}\n\n@mixin flex-grid__item {\n flex-basis: 100%;\n padding: 1rem 1.2rem;\n background-color: $gray;\n border: 1px solid #eee;\n border-bottom: 1px solid #ddd;\n list-style: none;\n transition: all .35s $fastInEaseOut;\n margin: 0 0 0.8rem;\n\n // @include breakpoint(medium) {\n // flex-basis: 100%;\n // max-width: 100%;\n // margin: 0 2% 0.8rem 0;\n\n // &:nth-child(2n) {\n // margin-right: 0;\n // }\n // }\n\n // @include breakpoint(large) {\n // flex-basis: 100%;\n // max-width: 100%;\n // margin-right: 1.25%;\n\n // &:nth-child(2n) {\n // margin-right: 1.25%;\n // }\n\n // &:nth-child(3n) {\n // margin-right: 0;\n // }\n // }\n}\n\n@mixin flex-grid__title {\n font-size: 1rem;\n padding-bottom: 0.5rem;\n}\n","body #enp-quiz {\n color: $font;\n font-family: $fontBody;\n font-size: 1em;\n line-height: 1.6;\n font-weight: 400;\n\n @include breakpoint(medium) {\n font-size: 1.3em;\n }\n}\n\n#enp-quiz {\n /* Headings */\n h1,h2,h3,h4,h5,h6 {\n font-family: $fontTitle;\n color: $title;\n clear: both;\n margin: 0 0 .2rem;\n font-weight: bold;\n line-height: 1.2em;\n }\n\n h1 {\n font-size: 2em;\n }\n\n h2 {\n font-size: 1.75em;\n }\n\n h3 {\n font-size: 1.475em;\n }\n\n h4 {\n font-size: 1.3em;\n }\n\n h5 {\n font-size: 1.125em;\n }\n\n h6 {\n font-size: 1em;\n }\n\n p+h1, ul+h1,\n p+h2, ul+h2,\n p+h3, ul+h3,\n p+h4, ul+h4,\n p+h5, ul+h5,\n p+h6, ul+h6 {\n margin-top: 1.8em;\n }\n\n /* Text elements */\n p {\n font-size: 0.85em;\n margin-bottom: 1.125em;\n font-weight: 300;\n }\n ul, ol {\n margin: 0 0 1.6em 1.25em;\n }\n ul {\n list-style: disc;\n }\n ol {\n list-style: decimal;\n }\n li > ul,\n li > ol {\n margin-bottom: 0;\n margin-left: 1.6em;\n }\n\n b, strong {\n font-weight: bold;\n }\n\n dfn, cite, em {\n font-family: georgia, times, serif;\n font-style: italic;\n }\n\n pre {\n background: #eee;\n font-family: \"Courier 10 Pitch\", Courier, monospace;\n font-size: .95em;\n line-height: 1.6;\n margin-bottom: 1.6em;\n padding: 1.6em;\n overflow: auto;\n max-width: 100%;\n overflow: scroll;\n max-width: 68vw;\n overflow-wrap: break-word;\n }\n .code, code, kbd, tt, var {\n font: .7em Monaco, Consolas, \"Andale Mono\", \"DejaVu Sans Mono\", monospace;\n }\n\n table {\n border: none;\n\n th {\n font-family: $fontTitle;\n font-size: .8rem;\n text-transform: uppercase;\n border: none;\n border-bottom: 1px solid #ddd;\n }\n\n td {\n font-family: $fontBody;\n font-size: 1rem;\n border: none;\n border-bottom: 1px solid #eee;\n }\n\n tr:nth-child(even) td {\n background: $really_light_gray;\n }\n\n tr:last-child td {\n border-bottom: none;\n }\n }\n\n figure {\n margin: 0;\n }\n\n img {\n height: auto; /* Make sure images are scaled correctly. */\n max-width: 100%; /* Adhere to container width. */\n }\n\n /* Links */\n a {\n color: $link;\n text-decoration: none;\n transition: color .2s;\n touch-action: manipulation; // remove 300ms delay for ie\n\n .enp-icon {\n fill: $link;\n }\n }\n\n a:hover,\n a:focus,\n a:active {\n color: $link_hover;\n\n .enp-icon {\n fill: $link_hover;\n }\n }\n\n button {\n &:focus {\n @include focus--glow;\n }\n }\n\n .enp-btn {\n @include btn;\n }\n\n\n .enp-btn--add {\n @include btn--dashed;\n width: 100%;\n }\n\n .enp-btn--disabled {\n @include disabled;\n }\n\n .enp-btn--enabled {\n animation: expand .6s;\n }\n\n .enp-icon {\n width: 24px;\n height: 24px;\n transition: all .2s;\n }\n\n .enp-page-title {\n font-size: 1.6rem;\n }\n}\n","@keyframes slideInBottom {\n 0% {\n opacity: 0;\n transform: translate3d(0, 100px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInTop {\n 0% {\n opacity: 0;\n height: auto;\n transform: translate3d(0, -20px, 0);\n }\n 100% {\n opacity: 1;\n height: auto;\n transform: translate3d(0, 0, 0);\n }\n}\n\n@keyframes slideInTop--reduced-opacity {\n 0% {\n opacity: 0;\n height: auto;\n transform: translate3d(0, -20px, 0);\n }\n 100% {\n opacity: 0.8;\n height: auto;\n transform: translate3d(0, 0, 0);\n }\n}\n\n\n@keyframes slideOutTop {\n 0% {\n overflow: hidden;\n height: 100px;\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n 100% {\n height: 0;\n opacity: 0;\n transform: translate3d(0, -20px, 0);\n }\n}\n\n@keyframes removeElement {\n 0% {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n 100% {\n padding: 0;\n margin: 0;\n opacity: 0;\n height: 0;\n z-index: -1;\n transform: translate3d(-200px, 0, 0);\n }\n}\n\n@keyframes removeAnswers {\n 0% {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n 100% {\n padding: 0;\n opacity: 0;\n display: none;\n height: 0;\n z-index: -1;\n transform: translate3d(-200px, 0, 0);\n }\n}\n\n@keyframes removeQuestion {\n 0% {\n opacity: 1;\n transform: translateX(0);\n }\n 100% {\n opacity: 0;\n transform: translateX(-200px);\n }\n}\n\n@keyframes showNextQuestion {\n 0% {\n opacity: 0;\n transform: translateX(200px);\n }\n\n 100% {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes expand {\n 0% {\n opacity: 0.8;\n transform: scale3d(1, 1, 1);\n box-shadow: 0 0 0px rgba(0,0,0,.3);\n }\n\n 40% {\n opacity: 1;\n }\n\n 70% {\n opacity: 1;\n transform: scale3d(1.1, 1.1, 1);\n box-shadow: 0 0 8px rgba(0,0,0,.4);\n }\n\n 100% {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n box-shadow: 0 0 0px rgba(0,0,0,.3), inset 0 2px 0 rgba(0,0,0,.2);\n }\n}\n\n@keyframes checkmark {\n 0% {\n opacity: 0;\n transform: scale3d(0.2, 0.2, 1);\n }\n 5% {\n opacity: 1;\n }\n 10% {\n transform: scale3d(1.4, 1.4, 1);\n }\n 12% {\n transform: scale3d(1, 1, 1);\n }\n 90% {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n }\n 92% {\n transform: scale3d(1.4, 1.4, 1);\n }\n 100% {\n opacity: 0;\n transform: scale3d(0.2, 0.2, 1);\n }\n\n}\n\n@keyframes fadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes navSlideIn {\n 0% {\n transform: translate3d(0, -200px, 0);\n }\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n\n\n.spinner {\n margin: 0 auto;\n width: 70px;\n text-align: center;\n}\n\n.spinner > div {\n width: 18px;\n height: 18px;\n background-color: #333;\n\n border-radius: 100%;\n display: inline-block;\n -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n animation: sk-bouncedelay 1.4s infinite ease-in-out both;\n}\n\n.spinner .bounce1 {\n -webkit-animation-delay: -0.32s;\n animation-delay: -0.32s;\n}\n\n.spinner .bounce2 {\n -webkit-animation-delay: -0.16s;\n animation-delay: -0.16s;\n}\n\n@-webkit-keyframes sk-bouncedelay {\n 0%, 80%, 100% { -webkit-transform: scale(0) }\n 40% { -webkit-transform: scale(1.0) }\n}\n\n@keyframes sk-bouncedelay {\n 0%, 80%, 100% {\n -webkit-transform: scale(0);\n transform: scale(0);\n } 40% {\n -webkit-transform: scale(1.0);\n transform: scale(1.0);\n }\n}\n","#enp-quiz {\n transition: background .25s $fastInEaseOut;\n\n .enp-container {\n // @include container;\n }\n\n .enp-aside {\n @include well;\n @include container--thin;\n font-size: 1.2rem;\n background: $light_gray;\n }\n\n .enp-aside__title {\n @include small-uppercase;\n font-weight: 600;\n }\n\n .enp-page-title {\n border-bottom: 2px solid $blue;\n }\n}\n","\n\n// enter the root BEM class and this will output the correct CSS for you\n@mixin radio-block($rootBEM) {\n .#{$rootBEM}__legend {\n @include radio-block__legend ;\n }\n\n .#{$rootBEM}__input {\n @include radio-block__input ;\n }\n\n .#{$rootBEM}__label {\n @include radio-block__label ;\n }\n\n .#{$rootBEM}__input:checked + .#{$rootBEM}__label {\n @include radio-block__label--checked ;\n }\n\n .#{$rootBEM}__input:focus + .#{$rootBEM}__label {\n @include radio-block__label--focus ;\n }\n}\n\n@mixin radio-inline($rootBEM) {\n .#{$rootBEM}__legend {\n @include radio-inline__legend ;\n }\n\n .#{$rootBEM}__input {\n @include radio-inline__input ;\n }\n\n .#{$rootBEM}__label {\n @include radio-inline__label ;\n }\n\n .#{$rootBEM}__input:checked + .#{$rootBEM}__label {\n @include radio-inline__label--checked ;\n }\n\n .#{$rootBEM}__input:focus + .#{$rootBEM}__label {\n @include radio-inline__label--focus ;\n }\n\n}\n\n@mixin label {\n display: block;\n color: lighten($font, 10);\n font-weight: normal;\n font-size: 0.85rem;\n text-transform: uppercase;\n}\n\n@mixin legend {\n @include label;\n padding-top: 1.6rem;\n margin-bottom: 0.2rem;\n border: none;\n}\n\n@mixin label--bold {\n @include label;\n font-weight: 500;\n}\n\n@mixin legend--bold {\n @include label--bold;\n}\n\n@mixin input {\n font-size: 1rem;\n font-family: $fontBody;\n padding: 0.8rem 0.5rem;\n background: #fff;\n border: 1px solid #aaa;\n border-radius: 3px;\n width: 20rem;\n max-width: 100%;\n margin-bottom: 1.2rem;\n\n @include breakpoint(medium) {\n padding: 0.8rem;\n width: 100%;\n }\n}\n\n@mixin input--large {\n @include input;\n padding: 1rem 1.2rem;\n font-size: 1rem;\n}\n\n@mixin input--xl {\n @include input;\n font-weight: bold;\n font-size: 1.6rem;\n margin-bottom: 1rem;\n\n &::placeholder {\n font-weight: bold;\n }\n}\n\n@mixin textarea {\n @include input;\n line-height: 1.5;\n\n &:focus {\n @include focus--glow;\n }\n}\n\n\n/*\n@mixin no-radio__input {\n display: inline-block;\n width: 0;\n margin: 0;\n padding: 0;\n opacity: 0;\n overflow: hidden;\n}\n\n@mixin no-radio__label {\n display: inline-block;\n position: relative;\n left: -1rem;\n padding: .2rem .6rem;\n @include small-uppercase;\n font-size: .8rem;\n font-weight: normal;\n background: transparent;\n border-radius: 3px;\n transition: all .2s;\n}*/\n\n@mixin radio-block__legend {\n @include legend;\n margin-bottom: 0.6rem;\n}\n\n@mixin radio-block__input {\n position: absolute;\n z-index: 9;\n margin-left: 9px;\n}\n\n@mixin radio-block__label {\n text-transform: capitalize;\n background: #f2f2f2;\n display: block;\n padding: 5px 10px 5px 39px;\n position: relative;\n top: -6px;\n box-shadow: inset -1px -1px 0 rgba(0,0,0,.1), inset 30px 0px 0 rgba(255,255,255,.7), inset 31px 0px 0 rgba(0,0,0,.1);\n}\n\n@mixin radio-block__label--checked {\n background: $blue;\n color: #fff;\n text-shadow: 0 0 1px rgba(0,0,0,.7);\n}\n\n@mixin radio-block__label--focus {\n z-index: 8;\n @include focus--glow ;\n}\n\n@mixin radio-inline__legend {\n @include legend;\n}\n\n@mixin radio-inline__input {\n @include screen-reader-text;\n}\n\n@mixin radio-inline__label {\n text-transform: capitalize;\n display: inline-block;\n padding: 0.2rem 0.5rem;\n border-radius: 3px;\n cursor: pointer;\n}\n\n@mixin radio-inline__label--checked {\n @include radio-block__label--checked ;\n}\n\n@mixin radio-inline__label--focus {\n @include radio-block__label--focus ;\n}\n\n@mixin select--wide--chevron {\n width: 100%;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n font-size: 0.85rem;\n padding: 0.7rem 32px 0.7rem 0.8rem;\n border: 1px solid #bbb;\n border-radius: 3px;\n margin-bottom: 1.6rem;\n background: url(../svg/chevron-down.svg) 100% 50% no-repeat;\n background-color: #fff;\n box-shadow: inset -26px 0 0 rgba(0,0,0,.1);\n}\n\n\n#enp-quiz {\n\n fieldset {\n border: none;\n margin: 0;\n padding: 0;\n }\n\n .enp-label {\n @include label;\n &__sm {\n font-size: 0.85rem;\n }\n &.enp-quiz-winlose__label {\n padding: 1rem 0 0 0;\n }\n }\n\n .enp-legend {\n @include legend;\n padding-top: 0;\n }\n\n .enp-input {\n @include input;\n &__sm {\n padding: 5px;\n margin-bottom: 5px;\n }\n &.enp-input--has-description {\n margin-bottom: 0.2rem;\n }\n }\n\n .enp-textarea-description,\n .enp-input-description {\n margin-bottom: 1rem;\n font-size: 0.85rem;\n }\n\n .enp-textarea-description--before,\n .enp-input-description--before {\n margin-bottom: 0;\n }\n\n .enp-input::placeholder,\n .enp-textarea::placeholder {\n font-family: $fontBody;\n font-weight: 300;\n color: lighten($font, 40);\n }\n\n .enp-textarea {\n @include textarea;\n\n &.enp-textarea--has-description {\n margin-bottom: 0.2rem;\n }\n &.enp-textarea--has-description--before {\n margin-bottom: 1.2rem;\n }\n }\n\n .enp-embed-code {\n @include textarea;\n padding: 1.6rem;\n font-size: 0.7rem;\n font-family: Monaco, Consolas, \"Andale Mono\", \"DejaVu Sans Mono\", monospace;\n\n @include media(max-medium) {\n padding: .8rem;\n }\n }\n}\n","#enp-quiz {\n // .enp-publish-page-container,\n // .enp-preview-page-container {\n // @include container--wide;\n // position: relative;\n // @include xpadding-vertical;\n // background: $really_light_gray;\n\n\n // }\n\n .enp-publish-page-container,\n .enp-quiz-form-container,\n .enp-preview-page-container {\n display: grid;\n grid-column: 2/-1;\n gap: 1rem;;\n width: 100%;\n justify-items: center;\n \n @include media(max-small) {\n padding-left: 8px;\n padding-right: 8px;\n }\n @include breakpoint(medium) {\n justify-items: start;\n }\n }\n // .enp-breadcrumb-link__container {\n // display: grid;\n // grid-column: 1/span 1;\n // justify-content: center;\n // align-items: flex-start;\n // @include xpadding-vertical;\n // }\n .enp-quiz-form {\n display: grid;\n padding-left: 0;\n padding-right: 0;\n @include breakpoint(large) {\n width: 100%;\n max-width: 40rem;\n }\n }\n\n .enp-preview-page-flex-container {\n display: grid;\n gap: 1rem;\n\n @include breakpoint(medium) {\n grid-template-columns: 1fr 3fr;\n // padding: 0 2rem;\n }\n }\n\n .enp-quiz-title__label {\n @include label--bold;\n }\n\n .enp-quiz-title__textarea {\n @include input--xl;\n }\n \n textarea {\n color: #000;\n }\n\n .enp-accordion-container {\n margin-bottom: 1.6rem;\n position: relative;\n }\n\n .enp-question-content {\n @include accordion;\n padding-top: 0;\n position: relative;\n }\n\n .enp-question-inner {\n padding: 1.6rem 1.6rem 1rem;\n\n @include breakpoint(medium) {\n padding-right: 2.8rem;\n padding-left: 2.9rem;\n }\n\n }\n\n .enp-question-title__label {\n @include label--bold;\n }\n\n .enp-question-title__textarea {\n @include input--large;\n }\n\n .enp-question-image-upload {\n @include btn--dashed--light--alt-bg;\n @include small-uppercase;\n position: relative;\n margin-bottom: 2rem;\n transform: translate3d(0, 0, 0);\n transition: all .3s $fastInEaseOut;\n\n .enp-question-image-upload__icon--photo {\n @include icon--xxxl;\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n margin: 0 auto;\n transform: translate3d(0, 0, 0);\n z-index: -1;\n transition: opacity .2s, transform .3s $fastInEaseOut;\n }\n\n .enp-question-image-upload__icon--add {\n @include icon--circle--small;\n @include icon--gray-bg;\n margin-right: 5px;\n position: relative;\n top: 0.2rem;\n }\n\n &:hover,\n &:focus,\n &:active {\n padding-top: 5rem;\n padding-bottom: 2rem;\n\n .enp-question-image-upload__icon--photo {\n opacity: 1;\n z-index: 1;\n transform: translate3d(0, 1.75rem, 0);\n }\n\n .enp-question-image-upload__icon--add {\n @include icon--gray-bg--hover;\n }\n }\n }\n\n .enp-question-image__container {\n position: relative;\n margin-bottom: 1rem;\n }\n\n .enp-question-image {\n margin-bottom: 1.2rem;\n }\n\n @include radio-inline(enp-question-type);\n\n .enp-question-type__label {\n position: relative;\n z-index: 9;\n }\n\n .enp-slider-options,\n .enp-mc-options {\n margin-top: 0rem;\n display: none;\n animation: slideOutTop .25s $fastInEaseOut forwards;\n animation-delay: 0s, .05s;\n }\n\n .enp-question-type__input--slider:checked ~ .enp-slider-options,\n .enp-question-type__input--mc:checked ~ .enp-mc-options {\n visibility: visible;\n display: block;\n animation: fadeIn .45s $fastInEaseOut forwards;\n }\n\n .enp-mc-options__list {\n @include ul-no-style;\n }\n\n .enp-mc-option {\n position: relative;\n padding-left: 6px;\n\n @include breakpoint(medium) {\n padding-left: 0;\n }\n }\n\n .enp-mc-options__legend {\n @include legend--bold;\n }\n\n .enp-mc-option__add,\n .enp-mc-option__button--correct,\n .enp-mc-option__button--delete {\n display: none;\n }\n\n .enp-question-type__input--mc:checked ~ .enp-mc-options {\n .enp-mc-option__add,\n .enp-mc-option__button--correct,\n .enp-mc-option__button--delete {\n display: block;\n }\n }\n\n .enp-button__question-image-delete,\n .enp-mc-option__button--delete {\n @include btn--reset;\n position: absolute;\n top: 9px;\n right: -24px;\n fill: #bbb;\n cursor: pointer;\n\n @include breakpoint(medium) {\n right: -30px;\n }\n\n &:focus,\n &:hover {\n fill: $red;\n }\n }\n\n .enp-mc-option__button--correct {\n @include btn--reset;\n position: absolute;\n top: 8px;\n left: -24px;\n\n @include breakpoint(medium) {\n left: -35px;\n }\n\n .enp-mc-option__icon--correct {\n @include icon--circle--pad;\n width: 28px;\n height: 28px;\n fill: #fff;\n background: #fff;\n cursor: pointer;\n border: 2px solid $fade_red;\n transition: all .2s;\n }\n\n &:focus .enp-mc-option__icon--correct,\n &:hover .enp-mc-option__icon--correct {\n background: #fff;\n border-color: $green;\n fill: $green;\n }\n\n &:disabled {\n opacity: 1;\n\n .enp-mc-option__icon--correct {\n cursor: default;\n fill: #fff;\n border: 2px solid transparent;\n }\n }\n }\n\n .enp-mc-option--correct {\n .enp-mc-option__input {\n box-shadow: inset 0 0 3px $blue;\n border: 1px solid $blue;\n }\n\n .enp-mc-option__button--correct:focus .enp-mc-option__icon--correct,\n .enp-mc-option__button--correct:hover .enp-mc-option__icon--correct,\n .enp-mc-option__icon--correct {\n fill: #fff;\n border-color: $blue;\n background: $blue;\n }\n }\n\n .enp-mc-option__add {\n @include btn--dashed--light--alt-bg;\n @include small-uppercase;\n text-align: left;\n padding: 0.7rem 0.75rem 0.8rem;\n\n .enp-mc-option__add__icon {\n @include btn--icon__icon--circle--small ;\n @include icon--gray-bg;\n position: relative;\n top: 0.2rem;\n }\n\n &:hover .enp-mc-option__add__icon {\n @include icon--gray-bg--hover;\n }\n }\n\n .enp-slider-options .enp-input {\n max-width: 11.8rem;\n }\n\n .enp-slider-range__container .enp-input,\n .enp-slider-correct__container .enp-input {\n max-width: 8.8rem;\n @include breakpoint('small') {\n max-width: 11.8rem;\n }\n }\n\n .enp-slider-preview {\n border: 1px solid #ddd;\n margin-top: 0.2rem;\n margin-bottom: 1.6rem;\n padding: 1.6rem 1.6rem .6rem;\n position: relative;\n\n .enp-label--slider-preview {\n position: absolute;\n width: 100%;\n top: 0.2rem;\n left: 0.4rem;\n font-size: 0.75rem;\n text-transform: uppercase;\n }\n }\n\n .enp-slider-range__container,\n .enp-slider-correct__container {\n @include flex-spread;\n align-items: center;\n }\n\n .enp-slider-range__helper,\n .enp-slider-correct__helper {\n color: #777;\n font-size: 0.85rem;\n background: #fff;\n padding: 0 .3rem;\n position: relative;\n\n &:before {\n content: '';\n position: absolute;\n top: 44%;\n height: 4px;\n background: #ddd;\n width: 120px;\n left: -60px;\n z-index: -1;\n transition: width 0.7s $fastInEaseOut, background 1.6s $fastInEaseOut;\n }\n }\n\n .enp-slider-options {\n margin-bottom: 2rem;\n\n .enp-accordion-header {\n text-transform: uppercase;\n font-size: 0.85rem;\n padding: 0.675rem;\n }\n\n .enp-slider-advanced-options__content {\n border: none;\n box-shadow: none;\n padding-top: 1rem;\n padding-bottom: 0;\n margin-bottom: 0;\n }\n }\n\n .enp-slider-correct-high__container {\n position: relative;\n }\n\n .enp-slider-correct-high__input-container--hidden {\n display: none;\n }\n\n .enp-slider-correct__helper--hidden {\n &:before {\n width: 0;\n background: $green;\n }\n }\n\n .enp-slider-correct-answer-range--add-range {\n @include btn--dashed--light--alt-bg;\n margin-left: 0.8rem;\n font-size: 0.7rem;\n\n @include breakpoint('small') {\n font-size: 0.8rem;\n padding: .7rem;\n }\n\n @include breakpoint('medium') {\n padding: .7rem 1.2rem;\n min-width: 11.4rem;\n }\n\n .enp-slider-correct-answer-range__icon {\n @include btn--icon__icon--circle--small ;\n @include icon--gray-bg;\n position: relative;\n left: -0.2rem;\n }\n\n &:hover .enp-slider-correct-answer-range__icon {\n @include icon--gray-bg--hover;\n }\n }\n\n .enp-slider-correct-answer-range--remove-range {\n position: absolute;\n right: -1.6rem;\n bottom: 1.6rem;\n background: none;\n border: none;\n box-shadow: none;\n padding: 0 0.1rem;\n\n .enp-slider-correct-answer-range__icon {\n width: 1.2em;\n height: 1.2em;\n fill: $dark_gray;\n }\n\n &:hover,\n &:focus {\n .enp-slider-correct-answer-range__icon {\n fill: $red;\n }\n }\n\n @include breakpoint(medium) {\n top: -0.2rem;\n right: -0.2rem;\n bottom: auto;\n }\n\n }\n\n .enp-slider-options .enp-input:read-only {\n background: $light_gray;\n }\n\n .enp-answer-explanation {\n background: $light_gray;\n padding-top: 2rem;\n box-shadow: inset 1px 0px 0 #ccc, inset -1px -1px 0 #ccc, inset 0 1px 0 #ddd;\n }\n\n .enp-answer-explanation__label {\n @include label--bold;\n\n }\n\n .enp-question__button--delete {\n @include btn--reset;\n position: absolute;\n top: 9px;\n right: 9px;\n fill: #bbb;\n cursor: pointer;\n\n @include breakpoint(medium) {\n right: -30px;\n }\n\n &:hover {\n fill: $red;\n }\n }\n\n .enp-question__move {\n position: absolute;\n left: 15px;\n\n @include breakpoint(medium) {\n left: -40px;\n }\n }\n\n .enp-sort__placeholder {\n background: #ddd;\n height: 60px;\n width: 100%;\n max-height: 120px;\n margin-bottom: 1.6rem;\n }\n\n .ui-sortable .ui-sortable-helper {\n .ui-sortable-handle {\n cursor: move;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n }\n }\n \n\n .enp-question__button--move {\n @include btn--reset;\n position: absolute;\n fill: #bbb;\n cursor: pointer;\n\n &:hover, &:focus {\n fill: #333;\n }\n\n &:disabled {\n opacity: 0.5;\n }\n }\n\n .enp-question__button--move--up {\n top: -25px;\n left: -4px;\n }\n\n\n .enp-question__button--move--down {\n top: 3px;\n right: -20px;\n }\n\n .enp-quiz-form__add-question {\n @include btn--icon;\n @include btn--dashed;\n padding-top: 1rem;\n padding-bottom: 1rem;\n margin-top: 1.6rem;\n margin-bottom: 2rem;\n\n .enp-add-question__icon {\n @include btn--icon__icon--circle--small;\n @include icon--normal;\n @include icon--gray-bg;\n position: relative;\n top: 0.2rem;\n }\n\n &:hover .enp-add-question__icon {\n @include icon--gray-bg--hover;\n }\n }\n\n .enp-btn--save__btns {\n @include flex;\n align-items: center;\n align-items: flex-start;\n }\n\n .enp-quiz-form__save {\n @include btn;\n width: 100%;\n margin-bottom: 1rem;\n opacity: 0.8;\n text-shadow: 0px -1px 2px rgba(0,0,0,.6);\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n\n @include breakpoint(small) {\n padding: 1.2rem 1.8rem 1.1rem;\n margin-right: 3%;\n position: relative;\n }\n }\n\n .enp-quiz-form__save--reveal {\n animation: slideInTop--reduced-opacity .3s $fastInEaseOut;\n }\n\n @include btn--icon--circle(enp-btn--next-step);\n\n .enp-btn--next-step {\n // @include btn;\n width: 100%;\n padding: 1rem 1.4rem 1rem;\n\n @include breakpoint(medium) {\n padding: 1.2rem 1.8rem 1.1rem;\n }\n .enp-btn--next-step__icon {\n width: 1rem;\n height: 1rem;\n }\n // @include breakpoint(small) {\n // width: auto;\n // }\n\n /*\n * AFTER we have removed the Save button,\n * use this code to add the preview button into the\n * header\n @include media(max-medium) {\n padding: 1rem 1.4rem 1rem;\n }\n\n @include breakpoint(medium) {\n position: absolute;\n right: 20px;\n top: 10px;\n width: auto;\n z-index: 999999;\n\n &.enp-btn--next-step--fixed {\n position: fixed;\n animation: navSlideIn .25s;\n }\n }*/\n\n }\n\n .enp-btn--next-step--reveal {\n animation: slideInTop .3s $fastInEaseOut;\n }\n\n\n // UX interactions\n .enp-mc-option--inputs,\n .enp-accordion-header--inserting {\n animation: slideInBottom .4s $fastInEaseOut forwards;\n }\n\n .enp-mc-option--remove,\n .enp-question--remove,\n .enp-question__image--remove {\n animation: removeElement .5s $fastInEaseOut forwards;\n }\n\n .enp-image-upload-wait {\n @include btn--dashed--light--alt-bg;\n padding-top: 4rem;\n padding-bottom: 4rem;\n margin-bottom: 1rem;\n width: 100%;\n }\n\n // validation\n .enp-accordion-header.question-has-error {\n color: $red;\n box-shadow: 0 0 3px $red;\n }\n\n}\n\n.enp-quiz.ui-sortable--sorting #enp-quiz .enp-accordion-content {\n display: none;\n}","#enp-quiz {\n\n\n .enp-quiz-settings-container {\n\n @include breakpoint(large) {\n // margin: 0;\n // width: 40%;\n // float: left;\n }\n }\n\n .enp-quiz-preview-container {\n\n @include breakpoint(large) {\n // width: 60%;\n // float: left;\n }\n\n }\n\n .enp-quiz-share__legend,\n .enp-quiz-settings__title {\n position: relative;\n @include small-uppercase;\n font-weight: 600;\n padding-top: 0;\n\n @include breakpoint(medium) {\n padding: 1em 0;\n }\n }\n\n .enp-quiz-settings__form {\n margin-bottom: 3rem;\n overflow: visible;\n @include breakpoint(large) {\n padding: 0;\n margin-bottom: 0;\n }\n }\n\n .enp-fieldset {\n @include breakpoint(medium) {\n // this is necessary to keep the form elements visible on top of the\n // white BG on the sidebar. We can't set this on the whole form bc\n // then the publish button won't be positioned right\n position: relative;\n }\n }\n\n .enp-title-display__legend {\n padding-top: 0;\n\n @include breakpoint(medium) {\n padding-top: 0.4rem;\n }\n }\n\n .enp-quiz-share__input,\n .enp-quiz-styles__input {\n width: 100%;\n }\n\n .enp-quiz-styles__textarea--custom-css {\n font-family: Monaco,Consolas,\"Andale Mono\",\"DejaVu Sans Mono\",monospace;\n font-size: 0.9rem;\n min-height: 200px;\n }\n\n .enp-fieldset--section {\n padding: 1.6rem 1rem;\n @include breakpoint(large) {\n padding: 1rem;\n }\n\n &.enp-accordion-content--open {\n margin-bottom: 0;\n }\n }\n\n .enp-quiz-share--facebook {\n margin-bottom: 2rem;\n }\n\n @include radio-inline(enp-title-display);\n @include radio-inline(enp-mc-options-order);\n\n .enp-mc-options-order {\n margin-bottom: 1.6rem;\n }\n\n .enp-quiz-share__textarea {\n min-height: 7.6rem;\n margin-bottom: 2rem;\n\n @include breakpoint('medium') {\n min-height: 4.6rem;\n }\n\n @include breakpoint('large') {\n min-height: 7.6rem;\n }\n\n\n }\n\n .enp-preview-form__submit {\n margin-top: 1.6rem;\n margin-bottom: 1.6rem;\n }\n\n .enp-quiz-preview__title {\n @include small-uppercase;\n font-weight: 600;\n @include breakpoint(medium) {\n padding: 1em 0;\n }\n }\n\n .enp-preview-form__submit {\n @include btn;\n width: 100%;\n padding-top: 0.85rem;\n padding-bottom: 0.85rem;\n margin-bottom: 1rem;\n opacity: 0.8;\n text-shadow: 0px -1px 2px rgba(0,0,0,.6);\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n }\n\n .enp-preview-form__submit--publish {\n width: 100%;\n position: relative;\n z-index: 99999999;\n padding: 1.05rem 1.8rem .95rem;\n }\n\n .enp-quiz-styles__iris-wrapper {\n position: relative;\n }\n\n // Fix for WP Color Picker formatting\n .iris-picker {\n box-sizing: content-box;\n position: relative;\n z-index: 9999999999;\n top: -1.2rem;\n margin-bottom: 1rem;\n padding-bottom: 3rem;\n padding-right: 30px;\n\n @include breakpoint(large) {\n position: absolute;\n top: 50px;\n left: 0;\n }\n\n &:last-of-type {\n margin-bottom: 0;\n }\n\n .ui-slider-handle:focus,\n .ui-draggable-handle:focus .ui-slider-handle {\n box-shadow: 0 0 3px rgba(0,0,0,.75);\n }\n\n }\n\n .enp-quiz-styles__set-default {\n @include btn--ghost;\n font-size: 0.75rem;\n position: absolute;\n left: 10px;\n bottom: 10px;\n }\n\n .enp-iris__close {\n @include btn--reset;\n position: absolute;\n top: 5px;\n right: 5px;\n fill: #888;\n cursor: pointer;\n }\n\n .enp-quiz-styles__input--color {\n padding-left: 45px;\n }\n\n .enp-quiz-styles__color-demo {\n width: 30px;\n height: 30px;\n border: 1px solid #ccc;\n top: 8px;\n left: 8px;\n border-radius: 3px;\n\n position: absolute;\n }\n\n\n}\n","#enp-quiz {\n .enp-share-quiz__container {\n @include breakpoint(medium) {\n padding: 0;\n border: none;\n }\n }\n /* Removing flexbox layout temporarily\n * because it wasn't laying out correctly before content loading\n * It would snap into the correct layout after a resize or textarea highlight\n .enp-publish-page-container {\n &:before {\n @include breakpoint(medium) {\n position: absolute;\n top: 0;\n bottom: 0;\n left: -100%;\n width: 128%;\n content: '';\n background: #fff;\n border-right: 1px solid #ddd;\n }\n\n @include breakpoint(large) {\n width: 124%;\n }\n }\n\n .enp-quiz-message {\n @include breakpoint(medium) {\n margin-left: 33%;\n }\n\n @include breakpoint(large) {\n margin-left: 26%;\n }\n }\n }\n\n .enp-publish-page-flex-container {\n @include breakpoint(medium) {\n @include flex;\n align-items: stretch;\n flex-direction: row-reverse;\n }\n }\n\n .enp-publish-page__aside-container {\n\n @include breakpoint(medium) {\n position: relative;\n margin: 0 6% 0 0;\n padding: 0;\n width: 24%;\n }\n\n @include breakpoint(large) {\n margin: 0;\n //padding-left: 20px;\n width: 20%;\n }\n }\n\n .enp-share-quiz__container,\n .enp-ab-ad__container {\n @include breakpoint(medium) {\n padding: 0;\n border: none;\n }\n }\n */\n\n .enp-share-quiz__url {\n display: block;\n font-size: 1rem;\n line-height: 1.4;\n word-wrap: break-word;\n }\n\n @include share_icons(enp-share-quiz);\n\n .enp-share-quiz {\n justify-content: space-around;\n margin-bottom: 0;\n .enp-icon--mail {\n background: $blue;\n }\n }\n}\n","#enp-quiz {\n .enp-ab-create__container {\n @include container--wide;\n width: 100%;\n background: $really_light_gray;\n padding-top: 3rem;\n padding-bottom: 3rem;\n @include breakpoint(large) {\n padding-top: 0;\n }\n }\n\n .enp-ab-create__form {\n @include container--thin;\n @include breakpoint(large) {\n @include container;\n margin: unset;\n }\n }\n\n .enp-ab-create__label {\n @include label--bold;\n }\n\n .enp-ab-create-title__textarea {\n @include input--xl;\n width: 100%;\n }\n\n .enp-ab-create__select {\n @include select--wide--chevron;\n }\n\n .enp-ab-create__submit {\n width: 100%;\n padding-top: 1em;\n padding-bottom: 1em;\n }\n}\n","// TEMP for dev theme\n#headerimg h1 {\n text-align: center;\n font-size: 40px !important;\n}\n#enp-quiz {\n\n &.enp-quiz__main {\n @include container;\n display: grid;\n gap: 1em;\n min-height: 85vh;\n \n @include breakpoint(large) {\n @include container--wide;\n grid-template-columns: 1fr 4fr;\n }\n }\n\n .enp-dash-container {\n @include xpadding-vertical;\n @include xpadding-horizontal;\n transition: all .25s $fastInEaseOut;\n }\n\n .enp-dash__section-aside {\n background-color: $background;\n @include breakpoint(medium) {\n @include xpadding-vertical;\n @include xpadding-horizontal;\n }\n }\n\n .enp-breadcrumb-link__container {\n padding-bottom: 2rem;\n }\n\n .enp-search-quizzes {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n padding: 1em;\n\n @include breakpoint(medium) {\n padding: 0.2rem 0;\n flex-wrap: nowrap;\n }\n @include breakpoint(large) {\n @include flex-spread-vertical;\n }\n }\n\n .enp-search-quizzes__form-item {\n margin-bottom: 0.6rem;\n flex: 0 1 48%;\n\n @include breakpoint(small) {\n margin-bottom: 0;\n margin-right: 1rem;\n flex: 1 0 auto;\n }\n\n }\n\n .enp-quiz-search {\n flex: 1 0 100%;\n position: relative;\n @include breakpoint(medium) {\n flex: 1 0 auto;\n }\n }\n\n .enp-search-quizzes__label {\n margin-bottom: 0;\n @include screen-reader-text ;\n }\n\n .enp-search-quizzes__select {\n padding: .3rem;\n border-radius: 3px;\n width: 100%;\n background-color: #ececec;\n @include breakpoint(large) {\n min-width: 200px;\n font-size: 0.85rem;\n }\n }\n\n .enp-quiz-search__input {\n width: 100%;\n margin: 0 0 0.1rem;\n padding: .3rem .3rem .3rem 26px;\n font-size: 0.85rem;\n @include breakpoint(medium) {\n // max-width: 200px;\n }\n }\n\n .enp-quiz-search__icon {\n position: absolute;\n bottom: 0.3rem;\n left: 0.2rem;\n width: 21px;\n height: 21px;\n }\n\n .enp-search-quizzes__button {\n padding: 0.2rem 0.8rem;\n }\n\n .enp-search-results-description {\n font-size: 0.85rem;\n }\n\n .enp-search-results-description__link {\n white-space: nowrap;\n }\n\n .enp-search-results-description__icon {\n width: 1.3em;\n height: 1.3em;\n position: relative;\n top: 4px;\n left: 2px;\n }\n\n .enp-dash__section-title {\n @include small-uppercase;\n margin-bottom: 0.325rem;\n border-bottom: 1px solid $dark-gray;\n @include breakpoint(medium) {\n padding: 2.5em 0 1em 0;\n }\n @include breakpoint(large) {\n padding: 1em 0;\n }\n }\n\n .enp-dash__ab-test-helper--not-enough-quizzes {\n color: $darker-gray;\n }\n\n .enp-view-toggle {\n cursor: pointer;\n opacity: .5;\n display: none; // hide the buttons for small screens\n\n @include breakpoint(medium) {\n display: flex;\n }\n }\n\n .enp-view-toggle__active {\n opacity: 1;\n }\n\n .enp-sort-by {\n margin-left: 5px;\n }\n\n .enp-dash-list {\n @include flex-grid;\n }\n\n .enp-dash-item {\n @include flex-grid__item ;\n @include flex-spread-vertical;\n display: flex;\n z-index: 1;\n flex-direction: column;\n align-content: flex-end;\n justify-content: flex-end;\n border: none;\n border-radius: 3px;\n }\n\n .enp-dash-item--published {\n box-shadow: inset 4px 0 0 $blue, 0 1px 0 rgba(0,0,0,.1);\n }\n\n .enp-dash-item--draft {\n box-shadow: inset 4px 0 0 $light_blue, 0 1px 0 rgba(0,0,0,.1);\n .enp-dash-item__title a {\n color: $dark_blue;\n }\n }\n\n .enp-dash-item--remove {\n animation: removeElement .5s $fastInEaseOut forwards;\n }\n\n .enp-dash-list--list-view {\n .enp-dash-item {\n margin: 0 0 0.8rem;\n flex-basis: 100%;\n }\n }\n\n .enp-dash-item__spinner {\n @include flex-center ;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(245,216,216,0.8);\n width: 100%;\n animation: fadeIn .3s $fastInEaseOut;\n }\n\n .enp-dash-item__header {\n padding: 0.5rem 1rem;\n background: $light_gray;\n border-bottom: 1px solid $dark_gray;\n display: flex;\n justify-content: space-between;\n align-items: center;\n @include border-radius;\n }\n\n .enp-dash-item__title {\n @include flex-grid__title ;\n padding: 0;\n margin-bottom: 0;\n a {\n color: $blue;\n }\n }\n\n .enp-dash-item__content {\n padding: 0rem 0 0.375rem;\n position: relative;\n transition: all .2s $fastInEaseOut;\n }\n\n .enp-dash-item__meta {\n @include hint;\n font-size: 0.75rem;\n }\n\n .enp-dash-item__username {\n word-wrap: break-word;\n padding-left: 0.4rem;\n margin-left: 0.2rem;\n border-left: 1px solid #ddd;\n }\n\n .enp-dash-item__title--ab-test {\n padding-bottom: 0;\n }\n\n .enp-dash-item__ab-quizzes {\n @include ul-no-style;\n font-size: 0.75rem;\n color: $darker_gray;\n margin-bottom: 0.8rem;\n }\n\n .enp-dash-item__nav {\n @include ul-no-style;\n margin-bottom: 0;\n font-size: 0.85rem;\n }\n\n .enp-dash-item__nav__item {\n display: flex;\n margin: 0;\n width: 100%;\n align-items: center;\n &:hover {\n background-color: $gray;\n .enp-dash-item__icon {\n fill: $red;\n }\n }\n a {\n font-weight: normal;\n color: $darker_gray;\n @include flex;\n align-items: center;\n width: 100%;\n padding: 12px;\n &:focus,\n &:hover {\n color: $red;\n outline: 1px dotted $link;\n outline-offset: 1px;\n .enp-dash-item__icon {\n fill: $red;\n }\n }\n }\n }\n .enp-delete-quiz {\n width: 100%;\n &:hover {\n .enp-dash-item__delete {\n color: $red;\n }\n .enp-icon {\n fill: $red;\n }\n }\n }\n .enp-dash-item__delete {\n @include btn--reset;\n @include flex;\n padding: 12px;\n align-items: center;\n position: relative;\n line-height: 1.6;\n color: $darker_gray;\n cursor: pointer;\n width: 100%;\n font-size: 0.85rem;\n .enp-icon {\n fill: $darker_gray;\n }\n }\n .enp-dash-item__icon {\n fill: $darker_gray;\n width: 15px;\n height: 15px;\n margin-right: 10px;\n }\n\n .enp-dash-item__nav--collapsible {\n display: none;\n position: absolute;\n z-index: 2;\n top: 44px;\n right: -17px;\n width: 195px;\n background-color: #fff;\n text-align: left;\n transform: translate3d(0,0,0);\n transition: all .2s $fastInEaseOut;\n\n .enp-dash-item__nav__item {\n cursor: pointer;\n }\n }\n\n .enp-dash-item__menu-action {\n height: 24px;\n background: none;\n border: none;\n color: #444;\n padding: 0;\n bottom: 0.2rem;\n right: 1.5rem;\n top: 1.5rem;\n cursor: pointer;\n }\n\n .enp-dash-item__menu-action-wrap {\n max-width: 0;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n\n .enp-dash-item__menu-action__icon {\n width: 15px;\n height: 15px;\n fill: $darker_gray;\n transition: all .3s $fastInEaseOut;\n }\n\n .enp-dash-item__menu-action__icon--bottom {\n \n }\n\n .enp-dash-item--menu-active {\n transform: translate3d(0,-3px,0);\n z-index: 2;\n .enp-dash-item__nav-wrap {\n position: relative;\n }\n\n &.enp-dash-item--published {\n box-shadow: inset 4px 0 0 $green, 0 2px 2px rgba(0,0,0,.2);\n }\n\n &.enp-dash-item--draft {\n box-shadow: inset 4px 0 0 lighten($green, 25%), 0 2px 2px rgba(0,0,0,.2);\n }\n\n .enp-dash-item__menu-action__icon--bottom {\n transform: rotateX(180deg);\n }\n\n .enp-dash-item__nav--collapsible {\n display: block;\n animation: slideInTop .25s $fastInEaseOut forwards;\n @include border-radius;\n @include box-shadow;\n }\n\n .enp-dash-item__content {\n opacity: 0.4;\n }\n\n }\n\n\n .enp-quiz-results {\n display: flex;\n justify-content: space-around;\n list-style: none;\n margin: 0.8rem 0 0;\n padding: 0;\n text-align: center;\n }\n\n .enp-quiz-results__item {\n\n margin: 0 2% 0 0;\n padding: 0;\n color: $title;\n\n @media (max-width:280px) {\n width: 100%;\n padding: 0;\n margin-bottom: 0.6rem;\n }\n }\n\n .enp-quiz-results__number {\n font-size: 1.6rem;\n line-height: 1;\n position: relative;\n }\n\n .enp-dash-item--draft .enp-quiz-results__number {\n opacity: 0.5;\n }\n\n .enp-quiz-results__number--average-score {\n color: darken($green, 8);\n\n &:after {\n content: '%';\n font-size: .9rem;\n position: absolute;\n top: .3rem;\n right: -1rem;\n }\n }\n\n .enp-quiz-results__label {\n text-transform: uppercase;\n font-size: .7rem;\n font-weight: 300;\n color: $darker_gray;\n }\n\n\n .enp-quiz-list__view {\n // @include flex-bottom;\n }\n\n .enp-dash-item--add-new__wrap {\n display: grid;\n gap: 1em;\n grid-template-columns: 1fr 1fr;\n }\n\n .enp-dash-list--quiz__container {\n display: grid;\n gap: 1em;\n @include breakpoint(large) {\n grid-template-columns: 1fr 1fr;\n }\n }\n\n .enp-dash-item--add-new {\n background: none;\n border: none;\n padding: 0;\n position: relative;\n @include header-space;\n }\n\n .enp-dash-link--add-new {\n @include btn--dashed--light;\n justify-content: flex-start;\n color: $light_blue;\n padding: 1rem 1.2rem;\n\n\n @include breakpoint(medium) {\n @include small-uppercase;\n @include flex-center;\n flex-direction: column;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 0.75rem 1.2rem 1.5rem 1.2rem;\n }\n\n .enp-dash-link__icon {\n @include icon--circle;\n @include icon--normal;\n margin-right: 5px;\n background-color: $light_blue;\n\n @include breakpoint(medium) {\n width: 2rem;\n height: 2rem;\n margin: 0.8rem 0 0.2rem;\n }\n }\n\n &:hover {\n color: $dark_blue;\n\n .enp-dash-link__icon {\n fill: #fff;\n background: $dark_blue;\n }\n }\n\n }\n\n .enp-quiz-message--welcome p {\n color: $font;\n }\n\n // pagination\n .enp-paginate {\n @include ul-no-style ;\n @include flex-center ;\n font-size: 1rem;\n }\n\n .enp-paginate__link {\n @include flex-center ;\n margin: 0 0.2rem;\n padding: 0 0.4rem;\n border-radius: 3px;\n font-weight: normal;\n\n }\n\n .enp-paginate__link--current-page {\n border: 2px solid $blue;\n }\n\n .enp-paginate__item--last-page,\n .enp-paginate__item--first-page {\n display: flex;\n }\n\n .enp-paginate__item--first-page:after,\n .enp-paginate__item--last-page:before {\n content: '...';\n font-size: 1rem;\n position: relative;\n bottom: 0.2rem;\n opacity: 0.6;\n }\n\n .enp-paginate__item--no-gap {\n &:before,\n &:after {\n content:'';\n }\n }\n\n .enp-paginate__item--next-page {\n margin-left: 0.2rem;\n }\n\n .enp-paginate__item--previous-page {\n margin-right: 0.2rem;\n }\n}\n","#enp-quiz {\n .enp-quiz-breadcrumbs {\n grid-row: 1;\n // @include flex-center;\n // position: absolute;\n // top: 0;\n // width: 1000%;\n // left: -500%;\n // right: -500%;\n // margin-left: auto;\n // margin-right: auto;\n // background: #fff;\n // border-bottom: 1px solid #ddd;\n // padding: 10px;\n // z-index: 99999;\n }\n\n .enp-quiz-breadcrumbs__list {\n @include flex-inline;\n }\n\n .enp-quiz-breadcrumbs__item {\n @include flex-inline__item ;\n @include flex-center;\n fill: $link;\n margin-right: 5px;\n\n @include breakpoint(small) {\n margin-right: 10px;\n }\n }\n\n .enp-quiz-breadcrumbs__link--disabled {\n @include disabled;\n }\n\n .enp-quiz-breadcrumbs__link--active {\n @include btn--ghost;\n @include btn--thin;\n }\n\n .enp-quiz-breadcrumbs__link {\n font-size: 1rem;\n font-weight: 400;\n text-transform: none;\n letter-spacing: 0;\n }\n\n // JS\n .enp-quiz-breadcrumbs--fixed {\n top: 0;\n position: fixed;\n animation: navSlideIn .25s;\n }\n}\n","#enp-quiz {\n .enp-results-title {\n font-size: 1.6rem;\n text-align: center;\n padding: 3.2rem 20px 2.6rem;\n background: $really_light_gray;\n margin: -1.2rem 0 2rem;\n border-bottom: 1px solid #ddd;\n\n &:after {\n @include small-uppercase;\n display: block;\n content: \"RESULTS\";\n font-weight: normal;\n }\n }\n\n .enp-results__container {\n @include container--wide;\n display: block;\n\n @include breakpoint(large) {\n display: flex;\n @include flex-spread;\n }\n }\n\n .enp-results__container,\n .enp-quiz-scores__container,\n .enp-results-flow__container {\n @include media(max-medium) {\n padding: 8px;\n }\n }\n\n .enp-quiz-scores__container,\n .enp-results-flow__container {\n width: 100%;\n\n @include breakpoint(large) {\n width: 48%;\n }\n }\n\n .enp-quiz-scores {\n margin-top: 2.6rem;\n }\n\n .enp-quiz-score__line-chart {\n height: 300px;\n margin-bottom: 1rem;\n\n .ct-label {\n color: $font;\n }\n\n .ct-grid {\n stroke: #dadada;\n stroke-dasharray: 0;\n }\n\n .ct-line {\n stroke: $green;\n stroke-width: 2px;\n }\n\n .ct-point {\n stroke: $green;\n stroke-width: 8px;\n }\n }\n\n .enp-quiz-scores-table {\n width: 100%;\n max-width: 500px;\n margin: 0 auto;\n\n tr th {\n background-color: #fff;\n }\n }\n\n .enp-quiz-scores-table__label {\n padding-left: 5%;\n }\n\n .enp-quiz-scores-table__score {\n text-align: right;\n padding-right: 5%;\n }\n\n .enp-results-flow {\n position: relative;\n margin: 2rem auto;\n width: 320px;\n height: 320px;\n border-radius: 50%;\n\n @include media(300px) {\n left: -100px;\n }\n\n @include breakpoint(small) {\n width: 390px;\n height: 390px;\n }\n\n @include breakpoint(medium) {\n width: 450px;\n height: 450px;\n }\n\n @include breakpoint(large) {\n width: 400px;\n height: 400px;\n }\n\n }\n\n .enp-results-flow__section-title {\n @include screen-reader-text;\n }\n\n .enp-results-flow__item {\n border-radius: 50%;\n text-align: center;\n height: 100%;\n width: 100%;\n margin: 0 auto;\n left: 0;\n right: 0;\n padding: 12.5% 0 0;\n letter-spacing: 0.05rem;\n border: 2px solid $green;\n animation: 0.85s slideInBottom $fastInEaseOut forwards;\n }\n\n .enp-results-flow__item--total-views {\n background: #fff;\n }\n\n .enp-results-flow__item--quiz-starts {\n width: 65%;\n height: 65%;\n position: absolute;\n padding-top: 8%;\n bottom: 2.5%;\n background: lighten($green, 48);\n }\n\n .enp-results-flow__item--quiz-finishes {\n width: 35%;\n height: 35%;\n position: absolute;\n bottom: 5%;\n background: lighten($green, 35);\n }\n\n .enp-results-flow__title {\n @include small-uppercase;\n color: #444;\n font-size: .7rem;\n margin-bottom: 0px;\n\n @include breakpoint(medium) {\n font-weight: bold;\n margin-bottom: 2px;\n }\n }\n\n .enp-results-flow__number {\n font-weight: bold;\n font-size: 1.4rem;\n line-height: 1.2;\n }\n\n .enp-results-flow__number--total-views {\n font-size: 2rem;\n }\n\n .enp-results-flow__number--quiz-starts {\n font-size: 1.65rem;\n }\n\n .enp-results-flow__percentage {\n font-size: .8rem;\n font-weight: normal;\n position: relative;\n display: inline-block;\n top: -0.7em;\n left: -.1rem;\n color: #444;\n\n &:after {\n content: '%';\n position: absolute;\n right: -0.75rem;\n font-size: .7rem;\n color: #444;\n }\n }\n\n .enp-results-questions__section {\n // @include section--alt;\n padding-top: 5rem;\n padding-bottom: 3rem;\n margin-top: 5rem;\n margin-bottom: 3rem;\n @include breakpoint(medium) {\n @include xmargin-horizontal;\n }\n }\n\n .enp-results-questions__container {\n @include media(max-small) {\n padding-left: 8px;\n padding-right: 8px;\n }\n }\n\n .enp-results-questions__header {\n align-items: flex-start;\n flex-direction: column;\n\n @include breakpoint(small) {\n @include flex-spread;\n flex-direction: row;\n align-items: flex-end;\n }\n }\n\n .enp-results-questions__title {\n @include small-uppercase;\n }\n\n .enp-results-questions__key {\n @include small-uppercase;\n }\n\n .enp-results-questions {\n @include ul-no-style;\n }\n\n .enp-results-question {\n width: 100%;\n font-size: 1rem;\n padding: 0;\n margin-bottom: 1rem;\n }\n\n .enp-results-question__header {\n padding: 1rem 1.2rem;\n position: relative;\n }\n\n .enp-results-question__question,\n .enp-results-question__stats {\n font-size: 1rem;\n line-height: 1.4;\n }\n\n .enp-results-question__question {\n font-weight: normal;\n\n @include breakpoint(small) {\n padding-right: 7em;\n margin-bottom: 0;\n }\n }\n\n .enp-results-question__stats {\n font-size: .9rem;\n\n @include breakpoint(small) {\n position: absolute;\n bottom: 1rem;\n right: 1.2rem;\n text-align: right;\n }\n }\n\n .enp-results-questions__key,\n .enp-results-question__stats {\n font-weight: 300;\n }\n\n .enp-results-question__content {\n padding: 2rem 1.2rem 1.2rem;\n @include border-radius;\n }\n\n .enp-results-question__deep-stats {\n @include flex-spread-around;\n @include ul-no-style;\n text-align: center;\n\n @include media(500px) {\n flex-wrap: wrap;\n }\n }\n\n .enp-results-question__deep-stat {\n\n @include media(500px) {\n width: 48%;\n margin: 0 2% 2% 0;\n padding: 1.6rem 0;\n\n &:nth-child(even) {\n margin-right: 0;\n }\n }\n\n @include media(280px) {\n width: 100%;\n padding: 0;\n margin-bottom: 1.6rem;\n }\n }\n\n .enp-results-question__deep-stat__number {\n font-size: 1.8rem;\n line-height: 1;\n position: relative;\n }\n\n .enp-results-question__deep-stat__number--finishes,\n .enp-results-question__deep-stat__number--correct {\n @include dark-green;\n }\n\n .enp-results-question__deep-stat__number--incorrect {\n @include fade-red;\n }\n\n .enp-results-question__deep-stat__number--correct,\n .enp-results-question__deep-stat__number--incorrect,\n .enp-results-question__deep-stat__number--finishes {\n &:after {\n content: '%';\n font-size: .9rem;\n position: absolute;\n top: .3rem;\n right: -1rem;\n }\n }\n\n .enp-results-question__deep-stat__label {\n @include small-uppercase;\n font-size: .8rem;\n }\n\n .enp-results-question__options {\n @include ul-no-style;\n margin-bottom: 0;\n }\n\n .enp-results-question__option {\n padding: 0.8rem 0.8rem 0.8rem 0.4rem;\n border-top: 1px solid #ddd;\n @include media(max-small) {\n position: relative;\n flex-direction: column;\n }\n\n @include breakpoint(small) {\n @include flex-spread;\n flex-direction: row;\n }\n\n &:first-of-type {\n margin-top: 1.4rem;\n }\n\n }\n\n .enp-results-question__option--correct {\n background: lighten($green, 48);\n }\n\n .enp-results-question__option__text {\n flex-grow: 100;\n margin-right: 1rem;\n }\n\n .enp-results-question__option__text__helper {\n font-weight: 300;\n @include small-uppercase;\n margin-right: 0.4rem;\n }\n\n .enp-results-question__option__icon {\n @include media(max-small) {\n position: relative;\n left: -3px;\n }\n\n @include breakpoint(small) {\n margin-right: 0.3rem;\n min-width: 1.6rem;\n }\n }\n\n .enp-results-question__option__icon--incorrect {\n fill: $fade_red;\n opacity: 0.5;\n }\n\n .enp-results-question__option__icon--correct {\n fill: $dark_green;\n opacity: 1;\n }\n\n .enp-results-question__option__percentage--incorrect {\n @include fade-red;\n }\n\n .enp-results-question__option__percentage--correct {\n @include dark-green;\n }\n\n .enp-results-question__option__number-selected {\n font-weight: 300;\n\n @include media(max-small) {\n position: absolute;\n top: 0.8rem;\n right: 0.8rem;\n }\n }\n\n .enp-slider-responses__title {\n @include small-uppercase;\n font-weight: 400;\n margin-top: 1.6rem;\n }\n\n .enp-slider-responses__line-chart {\n .ct-point {\n stroke-width: 8px;\n }\n }\n\n .enp-slider-responses__line-chart--low,\n .enp-slider-responses__line-chart--high {\n stroke: $red;\n }\n\n .enp-slider-responses__line-chart--correct {\n stroke: $green;\n }\n\n .enp-slider-responses-table {\n width: 100%;\n }\n\n .enp-slider-responses-table tr:nth-child(even) td {\n background-color: #fff;\n }\n\n .enp-slider-responses-table tr.enp-slider-responses-table__response--correct td {\n background-color: lighten($green, 48);\n }\n\n .enp-slider-responses-table__content {\n box-shadow: none;\n padding-top: 1rem;\n }\n\n .enp-slider-responses-table--hide-zero {\n .enp-slider-responses-table__frequency--zero {\n display: none;\n }\n }\n\n .enp-slider-responses-table__response-frequency {\n @include flex-spread ;\n align-items: center;\n }\n\n .enp-slider-responses-table__toggle-zero-frequency {\n @include accordion__header ;\n width: auto;\n padding: 0 0.6rem;\n margin: 0;\n }\n\n\n\n}\n\n.enp-quiz-results {\n #enp-quiz .enp-aside {\n border: none;\n }\n\n .enp-results-questions__title__quiz-title {\n @include screen-reader-text;\n }\n}\n","#enp-quiz {\n\n .enp-results--ab {\n display: block;\n margin-bottom: 3rem;\n\n @include breakpoint(large) {\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n width: 50%;\n padding: 10px;\n }\n\n }\n\n .enp-results--a {\n @include breakpoint(large) {\n padding-right: 1rem;\n border-right: 1px solid #ddd;\n }\n }\n\n .enp-results--b {\n @include breakpoint(large) {\n padding-left: 1rem;\n }\n }\n\n .enp-results-title--ab,\n .enp-results__container--ab .enp-results-flow__container {\n min-width: 100%;\n }\n\n .enp-results--loser {\n .enp-results-flow__item {\n border: 2px solid $red;\n }\n\n .enp-results-flow__item--quiz-starts {\n background: lighten($red, 42);\n }\n\n .enp-results-flow__item--quiz-finishes {\n background: lighten($red, 34);\n }\n\n th,\n .enp-results-questions__title {\n color: $dark_red;\n }\n\n }\n\n .enp-results--winner {\n th,\n .enp-results-questions__title {\n color: $dark_green;\n }\n\n }\n\n .enp-results-title--a,\n .enp-results-title--b {\n background: transparent;\n }\n\n .enp-ab-scores {\n @include container--wide;\n\n th.enp-quiz-scores-table__label,\n th.enp-quiz-scores-table__score {\n padding-left: 0;\n padding-right: 0;\n }\n }\n\n .enp-ab-scores__title {\n padding-left: 50px;\n @include small-uppercase;\n }\n\n .enp-quiz-score__line-chart .enp-test-loser {\n\n .ct-line,\n .ct-point {\n stroke: $red;\n }\n }\n\n .enp-quiz-scores {\n margin-top: 0;\n }\n\n .enp-question-results,\n .enp-ab-scores .enp-quiz-scores-table {\n margin-bottom: 1.6rem;\n\n @include breakpoint(large) {\n float: left;\n width: 48%;\n margin: 0;\n\n &:first-of-type {\n margin-right: 4%;\n }\n }\n }\n\n .enp-question-results__container {\n @include container--wide;\n padding-top: 3rem;\n }\n\n .enp-question-results--ab {\n\n .enp-results-questions__section {\n background: #fff;\n border: none;\n padding: 1.6rem 0;\n margin: 1.6rem auto;\n }\n\n .enp-results-questions__container {\n padding: 0;\n }\n\n }\n\n .enp-ab-new-embed-code__section {\n @include container--thin;\n max-width: 540px;\n padding-bottom: 2rem;\n margin-bottom: 2rem;\n\n .enp-ab-embed-code {\n padding: 0;\n margin: 0;\n }\n }\n\n .enp-ab-embed-code__section {\n @include section--alt;\n padding-top: 5rem;\n margin-top: 5rem;\n }\n\n .enp-ab-embed-code {\n @include container;\n }\n\n .enp-ab-embed-code__title {\n @include small-uppercase;\n }\n\n .enp-embed-code__textarea {\n margin-bottom: 0;\n }\n\n .enp-embed-code__instructions {\n font-size: 1.1rem;\n }\n}\n","#enp-quiz {\n\n .enp-slider {\n margin-bottom: 1.6rem;\n }\n\n .enp-slider-input__container {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 1.6rem auto;\n position: relative;\n }\n\n .enp-slider-input__label {\n @include label;\n }\n\n .enp-slider-input__prefix,\n .enp-slider-input__suffix {\n font-size: 1rem;\n }\n\n .enp-slider-input__prefix {\n margin-right: .2rem;\n white-space: pre;\n }\n\n .enp-slider-input__suffix {\n margin-left: .2rem;\n white-space: pre;\n }\n\n .enp-slider-input__input {\n @include input;\n margin-bottom: 0;\n padding: .75rem;\n width: auto;\n transition: all .25s $fastInEaseOut;\n }\n\n .enp-slider-input__input--incorrect {\n color: $red;\n }\n\n .enp-slider-input__input--correct {\n color: $dark_green;\n }\n\n .enp-slider-input__input--invalid-animation {\n box-shadow: 0 0 2px 1px $fade_red;\n }\n\n .enp-slider_input__range-helper {\n position: absolute;\n bottom: -1.2rem;\n font-size: 0.8rem;\n }\n\n .enp-slider_input__range-helper--low {\n left: 0;\n }\n\n .enp-slider_input__range-helper--high {\n right: 0;\n }\n\n .enp-slider-input__range-helper__number {\n position: relative;\n color: $dark_gray;\n }\n\n .enp-slider_input__range-helper__number--low {\n\n }\n\n .enp-slider_input__range-helper__number--high {\n\n }\n\n .ui-slider-range-show-correct__tooltip-container {\n position: relative;\n }\n\n .ui-slider-range-show-correct__tooltip {\n position: absolute;\n top: -0.4rem;\n margin-left: -0.55rem;\n height: 1rem;\n width: 1.1rem;\n height: 1.1rem;\n border: 2px solid $green;\n background-color: #fff;\n border-radius: 50%;\n z-index: 9999;\n }\n\n .ui-slider-range-show-correct__tooltip--low {\n left: 0;\n }\n\n .ui-slider-range-show-correct__tooltip--high {\n right: -0.55rem;\n }\n\n .ui-slider-range-show-correct__tooltip__text {\n position: relative;\n color: darken($green, 15);\n top: -1.35rem;\n font-size: .825rem;\n min-width: 100%;\n display: inline-block;\n text-align: center;\n text-shadow: 0 1px 0 #fff;\n }\n\n .ui-slider-range-show-correct__tooltip__text--low {\n\n }\n\n .ui-slider-range-show-correct__tooltip__text--high {\n\n }\n\n .ui-slider-range-show-correct__tooltip__text--low-center {\n //left: 0; // not perfectly centered for huge numbers, but is for small numbers\n }\n\n // JQUERY SLIDER\n .enp-slider {\n\t\tposition: relative;\n\t\ttext-align: left;\n\t\tbackground: #ddd;\n\n\t\t/* Layout helpers\n\t\t----------------------------------*/\n\t\t.ui-helper-hidden {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.ui-helper-hidden-accessible {\n\t\t\tborder: 0;\n\t\t\tclip: rect(0 0 0 0);\n\t\t\theight: 1px;\n\t\t\tmargin: -1px;\n\t\t\toverflow: hidden;\n\t\t\tpadding: 0;\n\t\t\tposition: absolute;\n\t\t\twidth: 1px;\n\t\t}\n\t\t.ui-helper-reset {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\tborder: 0;\n\t\t\toutline: 0;\n\t\t\tline-height: 1.3;\n\t\t\ttext-decoration: none;\n\t\t\tfont-size: 100%;\n\t\t\tlist-style: none;\n\t\t}\n\t\t.ui-helper-clearfix:before,\n\t\t.ui-helper-clearfix:after {\n\t\t\tcontent: \"\";\n\t\t\tdisplay: table;\n\t\t\tborder-collapse: collapse;\n\t\t}\n\t\t.ui-helper-clearfix:after {\n\t\t\tclear: both;\n\t\t}\n\t\t.ui-helper-clearfix {\n\t\t\tmin-height: 0; /* support: IE7 */\n\t\t}\n\t\t.ui-helper-zfix {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tposition: absolute;\n\t\t\topacity: 0;\n\t\t\tfilter:alpha(opacity=0); /* support: IE8 */\n\t\t}\n\n\t\t.ui-front {\n\t\t\tz-index: 100;\n\t\t}\n\n\n\t\t/* Interaction Cues\n\t\t----------------------------------*/\n\t\t.ui-state-disabled {\n\t\t\tcursor: default !important;\n\t\t}\n\n\n\t\t/* Icons\n\t\t----------------------------------*/\n\n\t\t/* states and images */\n\t\t.ui-icon {\n\t\t\tdisplay: block;\n\t\t\ttext-indent: -99999px;\n\t\t\toverflow: hidden;\n\t\t\tbackground-repeat: no-repeat;\n\t\t}\n\n\n\t\t/* Misc visuals\n\t\t----------------------------------*/\n\n\t\t/* Overlays */\n\t\t.ui-widget-overlay {\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\n\t\t.ui-slider-handle {\n\t\t\tbackground: #fff;\n\t\t\tborder-radius: 50%;\n\t\t\tborder: 1px solid #aaa;\n\t\t\tposition: absolute;\n\t\t\tz-index: 2;\n\t\t\twidth: 1.2rem;\n\t\t\theight: 1.2rem;\n top: -.4rem;\n\t\t\tmargin-left: -.6rem;\n\t\t\tcursor: default;\n\t\t\t-ms-touch-action: none;\n\t\t\ttouch-action: none;\n\t\t\ttransition: opacity 0.2s $fastInEaseOut, height .18s $fastInEaseOut, width .18s $fastInEaseOut, transform 0.18s $fastInEaseOut;\n\n @include media(max-medium) {\n width: 2rem;\n \t\t\theight: 2rem;\n top: -.85rem;\n margin-left: -1rem;\n transform: rotate(225deg);\n }\n\n\t\t\t&:focus {\n\t\t\t\toutline: none;\n\t\t\t\tbox-shadow: 0 0 3px 1px #4D90FE;\n\t\t\t}\n\n &.ui-state-active {\n @include media(max-medium) {\n width: 2.2rem;\n height: 2.2rem;\n border-top-left-radius: 0;\n transform: translate3d(-0.2rem, -0.8rem, 0) rotate(225deg);\n }\n\n }\n\n\t\t}\n\n .ui-slider-handle--correct,\n\t\t.ui-slider-handle--incorrect {\n width: 1.1rem;\n\t\t\theight: 1.1rem;\n top: -.4rem;\n margin-left: -.55rem;\n }\n\n .ui-slider-handle--incorrect {\n z-index: 1;\n\t\t\tborder: 2px solid $red;\n\t\t}\n\n .ui-slider-handle--correct {\n border: 2px solid $green;\n z-index: 99999;\n }\n\n\t\t.ui-slider-range {\n\t\t\tposition: absolute;\n\t\t\tz-index: 1;\n\t\t\tfont-size: .7rem;\n\t\t\tdisplay: block;\n\t\t\tborder: 0;\n\t\t\tbackground-position: 0 0;\n\t\t\ttop: 0;\n\t\t\theight: 100%;\n\t\t}\n\n .ui-slider-range-show-correct {\n background: $green;\n z-index: 9;\n }\n\n\t\t.ui-slider-range-min {\n\t\t\tleft: 0;\n\t\t\tbackground: $blue;\n\t\t}\n\n\t\t.ui-slider-range-max {\n\t\t\tright: 0;\n\t\t}\n\n\t\t/* support: IE8 - See #6727 */\n\t\t&.ui-state-disabled .ui-slider-handle,\n\t\t&.ui-state-disabled .ui-slider-range {\n\t\t\tfilter: inherit;\n\t\t}\n\t}\n\n\t.ui-slider-horizontal {\n\t\theight: .3rem;\n\t}\n\n\t.enp-question__answered {\n\t\t.enp-slider {\n\t\t\tbackground: #bbb;\n\t\t}\n\n\t\t.ui-slider-range-min {\n\t\t\tbackground: #fff;\n\t\t}\n\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/public/quiz-create/css/sass/_ab-create.scss b/public/quiz-create/css/sass/_ab-create.scss index 7d9d945d..d4b1677b 100644 --- a/public/quiz-create/css/sass/_ab-create.scss +++ b/public/quiz-create/css/sass/_ab-create.scss @@ -5,10 +5,17 @@ background: $really_light_gray; padding-top: 3rem; padding-bottom: 3rem; + @include breakpoint(large) { + padding-top: 0; + } } .enp-ab-create__form { @include container--thin; + @include breakpoint(large) { + @include container; + margin: unset; + } } .enp-ab-create__label { diff --git a/public/quiz-create/css/sass/_ab-results.scss b/public/quiz-create/css/sass/_ab-results.scss index 10299006..2881314f 100644 --- a/public/quiz-create/css/sass/_ab-results.scss +++ b/public/quiz-create/css/sass/_ab-results.scss @@ -109,6 +109,7 @@ .enp-question-results__container { @include container--wide; + padding-top: 3rem; } .enp-question-results--ab { diff --git a/public/quiz-create/css/sass/_base.scss b/public/quiz-create/css/sass/_base.scss index 165de936..8a246031 100644 --- a/public/quiz-create/css/sass/_base.scss +++ b/public/quiz-create/css/sass/_base.scss @@ -2,17 +2,22 @@ transition: background .25s $fastInEaseOut; .enp-container { - @include container; + // @include container; } .enp-aside { @include well; @include container--thin; font-size: 1.2rem; + background: $light_gray; } .enp-aside__title { @include small-uppercase; font-weight: 600; } + + .enp-page-title { + border-bottom: 2px solid $blue; + } } diff --git a/public/quiz-create/css/sass/_breadcrumbs.scss b/public/quiz-create/css/sass/_breadcrumbs.scss index 6e819dc4..b5e60b29 100644 --- a/public/quiz-create/css/sass/_breadcrumbs.scss +++ b/public/quiz-create/css/sass/_breadcrumbs.scss @@ -1,17 +1,18 @@ #enp-quiz { .enp-quiz-breadcrumbs { - @include flex-center; - position: absolute; - top: 0; - width: 1000%; - left: -500%; - right: -500%; - margin-left: auto; - margin-right: auto; - background: #fff; - border-bottom: 1px solid #ddd; - padding: 10px; - z-index: 99999; + grid-row: 1; + // @include flex-center; + // position: absolute; + // top: 0; + // width: 1000%; + // left: -500%; + // right: -500%; + // margin-left: auto; + // margin-right: auto; + // background: #fff; + // border-bottom: 1px solid #ddd; + // padding: 10px; + // z-index: 99999; } .enp-quiz-breadcrumbs__list { diff --git a/public/quiz-create/css/sass/_dashboard.scss b/public/quiz-create/css/sass/_dashboard.scss index cbf19a0d..8ba28d95 100644 --- a/public/quiz-create/css/sass/_dashboard.scss +++ b/public/quiz-create/css/sass/_dashboard.scss @@ -1,50 +1,73 @@ +// TEMP for dev theme +#headerimg h1 { + text-align: center; + font-size: 40px !important; +} #enp-quiz { + &.enp-quiz__main { + @include container; + display: grid; + gap: 1em; + min-height: 85vh; + + @include breakpoint(large) { + @include container--wide; + grid-template-columns: 1fr 4fr; + } + } + .enp-dash-container { - @include container--wide; @include xpadding-vertical; - background: $really_light_gray; + @include xpadding-horizontal; transition: all .25s $fastInEaseOut; } - .enp-dash__section-header { - display: block; - margin-bottom: 0.325rem; - + .enp-dash__section-aside { + background-color: $background; @include breakpoint(medium) { - display: flex; - @include flex-bottom; - justify-content: space-between; + @include xpadding-vertical; + @include xpadding-horizontal; } + } + .enp-breadcrumb-link__container { + padding-bottom: 2rem; } .enp-search-quizzes { - display: block; - @include breakpoint(small) { - display: flex; - @include flex-bottom; - } + display: flex; + justify-content: space-between; + flex-wrap: wrap; + padding: 1em; + @include breakpoint(medium) { + padding: 0.2rem 0; + flex-wrap: nowrap; + } + @include breakpoint(large) { + @include flex-spread-vertical; + } } .enp-search-quizzes__form-item { margin-bottom: 0.6rem; - display: block; + flex: 0 1 48%; - @include breakpoint('small') { + @include breakpoint(small) { margin-bottom: 0; margin-right: 1rem; - - &:last-of-type { - margin-right: 0; - } + flex: 1 0 auto; } } .enp-quiz-search { + flex: 1 0 100%; position: relative; + @include breakpoint(medium) { + flex: 1 0 auto; + } } .enp-search-quizzes__label { @@ -52,11 +75,25 @@ @include screen-reader-text ; } + .enp-search-quizzes__select { + padding: .3rem; + border-radius: 3px; + width: 100%; + background-color: #ececec; + @include breakpoint(large) { + min-width: 200px; + font-size: 0.85rem; + } + } + .enp-quiz-search__input { - max-width: 160px; + width: 100%; margin: 0 0 0.1rem; padding: .3rem .3rem .3rem 26px; font-size: 0.85rem; + @include breakpoint(medium) { + // max-width: 200px; + } } .enp-quiz-search__icon { @@ -90,6 +127,17 @@ .enp-dash__section-title { @include small-uppercase; margin-bottom: 0.325rem; + border-bottom: 1px solid $dark-gray; + @include breakpoint(medium) { + padding: 2.5em 0 1em 0; + } + @include breakpoint(large) { + padding: 1em 0; + } + } + + .enp-dash__ab-test-helper--not-enough-quizzes { + color: $darker-gray; } .enp-view-toggle { @@ -118,18 +166,23 @@ @include flex-grid__item ; @include flex-spread-vertical; display: flex; + z-index: 1; flex-direction: column; align-content: flex-end; justify-content: flex-end; border: none; + border-radius: 3px; } .enp-dash-item--published { - box-shadow: inset 4px 0 0 $green, 0 1px 0 rgba(0,0,0,.1); + box-shadow: inset 4px 0 0 $blue, 0 1px 0 rgba(0,0,0,.1); } .enp-dash-item--draft { - box-shadow: inset 4px 0 0 lighten($green, 25%), 0 1px 0 rgba(0,0,0,.1); + box-shadow: inset 4px 0 0 $light_blue, 0 1px 0 rgba(0,0,0,.1); + .enp-dash-item__title a { + color: $dark_blue; + } } .enp-dash-item--remove { @@ -152,20 +205,26 @@ right: 0; background: rgba(245,216,216,0.8); width: 100%; - z-index: 999; animation: fadeIn .3s $fastInEaseOut; } .enp-dash-item__header { - position: relative; - z-index: 99; - background: #fff; - border-bottom: 1px solid #ddd; + padding: 0.5rem 1rem; + background: $light_gray; + border-bottom: 1px solid $dark_gray; + display: flex; + justify-content: space-between; + align-items: center; + @include border-radius; } .enp-dash-item__title { @include flex-grid__title ; - padding: 0 24px 0.375rem 0; + padding: 0; + margin-bottom: 0; + a { + color: $blue; + } } .enp-dash-item__content { @@ -192,8 +251,8 @@ .enp-dash-item__ab-quizzes { @include ul-no-style; - font-size: 0.85rem; - color: $dark_gray; + font-size: 0.75rem; + color: $darker_gray; margin-bottom: 0.8rem; } @@ -204,57 +263,81 @@ } .enp-dash-item__nav__item { - display: inline-block; - font-size: 0.85rem; - margin-bottom: 0; - padding-bottom: 0; - margin-right: 10px; - + display: flex; + margin: 0; + width: 100%; + align-items: center; + &:hover { + background-color: $gray; + .enp-dash-item__icon { + fill: $red; + } + } a { font-weight: normal; - - &:focus { + color: $darker_gray; + @include flex; + align-items: center; + width: 100%; + padding: 12px; + &:focus, + &:hover { + color: $red; outline: 1px dotted $link; outline-offset: 1px; + .enp-dash-item__icon { + fill: $red; + } } } - - &:last-of-type { - margin-right: 0; + } + .enp-delete-quiz { + width: 100%; + &:hover { + .enp-dash-item__delete { + color: $red; + } + .enp-icon { + fill: $red; + } } } - .enp-dash-item__delete { @include btn--reset; + @include flex; + padding: 12px; + align-items: center; position: relative; - top: 4px; + line-height: 1.6; + color: $darker_gray; cursor: pointer; - } - - .enp-dash-item__delete__icon { - fill: #bbb; - width: 20px; - height: 20px; - - &:focus, - &:hover { - fill: $red; + width: 100%; + font-size: 0.85rem; + .enp-icon { + fill: $darker_gray; } } + .enp-dash-item__icon { + fill: $darker_gray; + width: 15px; + height: 15px; + margin-right: 10px; + } .enp-dash-item__nav--collapsible { display: none; position: absolute; - background: #fff; - bottom: auto; - right: auto; - top: 100%; - margin-top: 0.2rem; + z-index: 2; + top: 44px; + right: -17px; + width: 195px; + background-color: #fff; + text-align: left; transform: translate3d(0,0,0); transition: all .2s $fastInEaseOut; .enp-dash-item__nav__item { - padding: 0 0 0.4rem; + cursor: pointer; } } @@ -264,26 +347,36 @@ border: none; color: #444; padding: 0; - position: absolute; bottom: 0.2rem; - right: 0; + right: 1.5rem; + top: 1.5rem; cursor: pointer; } + .enp-dash-item__menu-action-wrap { + max-width: 0; + display: flex; + flex-direction: column; + align-items: flex-end; + } + .enp-dash-item__menu-action__icon { - width: 24px; - height: 24px; - fill: #444; + width: 15px; + height: 15px; + fill: $darker_gray; transition: all .3s $fastInEaseOut; } .enp-dash-item__menu-action__icon--bottom { - position: absolute; - left: 0; + } .enp-dash-item--menu-active { transform: translate3d(0,-3px,0); + z-index: 2; + .enp-dash-item__nav-wrap { + position: relative; + } &.enp-dash-item--published { box-shadow: inset 4px 0 0 $green, 0 2px 2px rgba(0,0,0,.2); @@ -294,20 +387,18 @@ } .enp-dash-item__menu-action__icon--bottom { - transform: translateY(-15.5%); - } - .enp-dash-item__menu-action__icon--top { - transform: rotateX(-180deg) translateY(0px); + transform: rotateX(180deg); } .enp-dash-item__nav--collapsible { display: block; animation: slideInTop .25s $fastInEaseOut forwards; + @include border-radius; + @include box-shadow; } .enp-dash-item__content { opacity: 0.4; - transform: translate3d(0, 0.675rem, 0); } } @@ -326,7 +417,7 @@ margin: 0 2% 0 0; padding: 0; - color: #454545; + color: $title; @media (max-width:280px) { width: 100%; @@ -361,12 +452,26 @@ text-transform: uppercase; font-size: .7rem; font-weight: 300; - color: #888; + color: $darker_gray; } .enp-quiz-list__view { - @include flex-bottom; + // @include flex-bottom; + } + + .enp-dash-item--add-new__wrap { + display: grid; + gap: 1em; + grid-template-columns: 1fr 1fr; + } + + .enp-dash-list--quiz__container { + display: grid; + gap: 1em; + @include breakpoint(large) { + grid-template-columns: 1fr 1fr; + } } .enp-dash-item--add-new { @@ -374,17 +479,13 @@ border: none; padding: 0; position: relative; - - @include breakpoint(medium) { - min-height: 7rem; - } - + @include header-space; } .enp-dash-link--add-new { @include btn--dashed--light; justify-content: flex-start; - color: $link; + color: $light_blue; padding: 1rem 1.2rem; @@ -397,12 +498,14 @@ left: 0; right: 0; bottom: 0; + padding: 0.75rem 1.2rem 1.5rem 1.2rem; } .enp-dash-link__icon { @include icon--circle; @include icon--normal; margin-right: 5px; + background-color: $light_blue; @include breakpoint(medium) { width: 2rem; @@ -412,11 +515,11 @@ } &:hover { - color: $link_hover; + color: $dark_blue; .enp-dash-link__icon { fill: #fff; - background: $link_hover; + background: $dark_blue; } } diff --git a/public/quiz-create/css/sass/_forms.scss b/public/quiz-create/css/sass/_forms.scss index 2f7be819..f3f624b5 100644 --- a/public/quiz-create/css/sass/_forms.scss +++ b/public/quiz-create/css/sass/_forms.scss @@ -83,13 +83,14 @@ @include breakpoint(medium) { padding: 0.8rem; + width: 100%; } } @mixin input--large { @include input; padding: 1rem 1.2rem; - font-size: 1.3rem; + font-size: 1rem; } @mixin input--xl { @@ -106,7 +107,6 @@ @mixin textarea { @include input; line-height: 1.5; - width: 100%; &:focus { @include focus--glow; @@ -159,7 +159,7 @@ } @mixin radio-block__label--checked { - background: $green; + background: $blue; color: #fff; text-shadow: 0 0 1px rgba(0,0,0,.7); } @@ -219,15 +219,25 @@ .enp-label { @include label; + &__sm { + font-size: 0.85rem; + } + &.enp-quiz-winlose__label { + padding: 1rem 0 0 0; + } } .enp-legend { @include legend; + padding-top: 0; } .enp-input { @include input; - + &__sm { + padding: 5px; + margin-bottom: 5px; + } &.enp-input--has-description { margin-bottom: 0.2rem; } @@ -264,9 +274,8 @@ .enp-embed-code { @include textarea; - width: 100%; padding: 1.6rem; - font-size: 0.9rem; + font-size: 0.7rem; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; @include media(max-medium) { diff --git a/public/quiz-create/css/sass/_quiz-create.scss b/public/quiz-create/css/sass/_quiz-create.scss index 0a27b4cf..c7a453df 100644 --- a/public/quiz-create/css/sass/_quiz-create.scss +++ b/public/quiz-create/css/sass/_quiz-create.scss @@ -1,23 +1,56 @@ #enp-quiz { - .enp-publish-page-container, - .enp-preview-page-container, - .enp-quiz-form-container { - @include container--wide; - position: relative; - padding-top: 6rem; - padding-bottom: 4rem; - background: $really_light_gray; + // .enp-publish-page-container, + // .enp-preview-page-container { + // @include container--wide; + // position: relative; + // @include xpadding-vertical; + // background: $really_light_gray; + + + // } + .enp-publish-page-container, + .enp-quiz-form-container, + .enp-preview-page-container { + display: grid; + grid-column: 2/-1; + gap: 1rem;; + width: 100%; + justify-items: center; + @include media(max-small) { padding-left: 8px; padding-right: 8px; } + @include breakpoint(medium) { + justify-items: start; + } } - + // .enp-breadcrumb-link__container { + // display: grid; + // grid-column: 1/span 1; + // justify-content: center; + // align-items: flex-start; + // @include xpadding-vertical; + // } .enp-quiz-form { - @include container--form; + display: grid; padding-left: 0; padding-right: 0; + @include breakpoint(large) { + width: 100%; + max-width: 40rem; + } + } + + .enp-preview-page-flex-container { + display: grid; + gap: 1rem; + + @include breakpoint(medium) { + grid-template-columns: 1fr 3fr; + // padding: 0 2rem; + } } .enp-quiz-title__label { @@ -27,6 +60,10 @@ .enp-quiz-title__textarea { @include input--xl; } + + textarea { + color: #000; + } .enp-accordion-container { margin-bottom: 1.6rem; @@ -226,16 +263,16 @@ .enp-mc-option--correct { .enp-mc-option__input { - box-shadow: inset 0 0 3px $green; - border: 1px solid $green; + box-shadow: inset 0 0 3px $blue; + border: 1px solid $blue; } .enp-mc-option__button--correct:focus .enp-mc-option__icon--correct, .enp-mc-option__button--correct:hover .enp-mc-option__icon--correct, .enp-mc-option__icon--correct { fill: #fff; - border-color: $green; - background: $green; + border-color: $blue; + background: $blue; } } @@ -408,13 +445,14 @@ } .enp-answer-explanation { - background: $light_blue; + background: $light_gray; padding-top: 2rem; box-shadow: inset 1px 0px 0 #ccc, inset -1px -1px 0 #ccc, inset 0 1px 0 #ddd; } .enp-answer-explanation__label { @include label--bold; + } .enp-question__button--delete { @@ -476,14 +514,14 @@ } .enp-question__button--move--up { - top: 0px; - left: -9px; + top: -25px; + left: -4px; } .enp-question__button--move--down { top: 3px; - right: -9px; + right: -20px; } .enp-quiz-form__add-question { @@ -507,6 +545,12 @@ } } + .enp-btn--save__btns { + @include flex; + align-items: center; + align-items: flex-start; + } + .enp-quiz-form__save { @include btn; width: 100%; @@ -521,19 +565,9 @@ @include breakpoint(small) { padding: 1.2rem 1.8rem 1.1rem; - width: 27%; margin-right: 3%; position: relative; - top: -2px; - margin-top: 1.6rem; } - - /*@include breakpoint(medium) { - padding-top: 1rem; - padding-bottom: 1rem; - margin-top: 1.6rem; - margin-bottom: 2rem; - }*/ } .enp-quiz-form__save--reveal { @@ -543,15 +577,23 @@ @include btn--icon--circle(enp-btn--next-step); .enp-btn--next-step { + // @include btn; width: 100%; padding: 1rem 1.4rem 1rem; - @include breakpoint(small) { - width: 68%; + @include breakpoint(medium) { + padding: 1.2rem 1.8rem 1.1rem; + } + .enp-btn--next-step__icon { + width: 1rem; + height: 1rem; } + // @include breakpoint(small) { + // width: auto; + // } /* - * AFTER we have remove the Save button, + * AFTER we have removed the Save button, * use this code to add the preview button into the * header @include media(max-medium) { diff --git a/public/quiz-create/css/sass/_quiz-preview.scss b/public/quiz-create/css/sass/_quiz-preview.scss index 4d3f235f..5892f255 100644 --- a/public/quiz-create/css/sass/_quiz-preview.scss +++ b/public/quiz-create/css/sass/_quiz-preview.scss @@ -4,17 +4,17 @@ .enp-quiz-settings-container { @include breakpoint(large) { - margin: 0; - width: 40%; - float: left; + // margin: 0; + // width: 40%; + // float: left; } } .enp-quiz-preview-container { @include breakpoint(large) { - width: 60%; - float: left; + // width: 60%; + // float: left; } } @@ -25,11 +25,15 @@ @include small-uppercase; font-weight: 600; padding-top: 0; + + @include breakpoint(medium) { + padding: 1em 0; + } } .enp-quiz-settings__form { margin-bottom: 3rem; - + overflow: visible; @include breakpoint(large) { padding: 0; margin-bottom: 0; @@ -66,6 +70,9 @@ .enp-fieldset--section { padding: 1.6rem 1rem; + @include breakpoint(large) { + padding: 1rem; + } &.enp-accordion-content--open { margin-bottom: 0; @@ -106,6 +113,9 @@ .enp-quiz-preview__title { @include small-uppercase; font-weight: 600; + @include breakpoint(medium) { + padding: 1em 0; + } } .enp-preview-form__submit { @@ -146,8 +156,8 @@ @include breakpoint(large) { position: absolute; - top: -4px; - left: 36%; + top: 50px; + left: 0; } &:last-of-type { diff --git a/public/quiz-create/css/sass/_quiz-publish.scss b/public/quiz-create/css/sass/_quiz-publish.scss index 681eae99..5694d811 100644 --- a/public/quiz-create/css/sass/_quiz-publish.scss +++ b/public/quiz-create/css/sass/_quiz-publish.scss @@ -1,5 +1,11 @@ #enp-quiz { - /* Removing flexbox layout temporarily + .enp-share-quiz__container { + @include breakpoint(medium) { + padding: 0; + border: none; + } + } + /* Removing flexbox layout temporarily * because it wasn't laying out correctly before content loading * It would snap into the correct layout after a resize or textarea highlight .enp-publish-page-container { @@ -64,56 +70,48 @@ } */ - .enp-share-quiz__url { - display: block; - font-size: 1rem; - line-height: 1.4; - word-wrap: break-word; - } - #enp-open__btn { - cursor: pointer; - } - #enp-modal__background { - display: none; - background-color: $transparent_gray; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 1; - } - - #enp-modal { - background-color: #fff; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - padding: 10px 20px; - border-radius: 5px; - display: flex; - flex-direction: column; - align-items: center; - box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), - 0 10px 10px rgba(0, 0, 0, 0.22); - animation-name: fadeIn; - animation-duration: 0.4s; - } - - #enp-close__btn { - align-self: flex-end; - } - - #enp-close__btn:hover { - cursor: pointer; - color: $darker_gray; - } + .enp-share-quiz__url { + display: block; + font-size: 1rem; + line-height: 1.4; + word-wrap: break-word; + } + #enp-open__btn { + cursor: pointer; + } + #enp-modal__background { + display: none; + background-color: $transparent_gray; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + } - @include share_icons(enp-share-quiz); + #enp-modal { + background-color: #fff; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 10px 20px; + border-radius: 5px; + display: flex; + flex-direction: column; + align-items: center; + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), + 0 10px 10px rgba(0, 0, 0, 0.22); + animation-name: fadeIn; + animation-duration: 0.4s; + } - .enp-share-quiz { - justify-content: space-around; - margin-bottom: 0; - } + .enp-share-quiz { + justify-content: space-around; + margin-bottom: 0; + .enp-icon--mail { + background: $blue; + } + } } diff --git a/public/quiz-create/css/sass/_quiz-results.scss b/public/quiz-create/css/sass/_quiz-results.scss index 937f827f..bfaf7a8d 100644 --- a/public/quiz-create/css/sass/_quiz-results.scss +++ b/public/quiz-create/css/sass/_quiz-results.scss @@ -201,11 +201,14 @@ } .enp-results-questions__section { - @include section--alt; + // @include section--alt; padding-top: 5rem; padding-bottom: 3rem; margin-top: 5rem; margin-bottom: 3rem; + @include breakpoint(medium) { + @include xmargin-horizontal; + } } .enp-results-questions__container { @@ -283,6 +286,7 @@ .enp-results-question__content { padding: 2rem 1.2rem 1.2rem; + @include border-radius; } .enp-results-question__deep-stats { diff --git a/public/quiz-create/css/sass/_structure.scss b/public/quiz-create/css/sass/_structure.scss index 043b40eb..ec6e7755 100644 --- a/public/quiz-create/css/sass/_structure.scss +++ b/public/quiz-create/css/sass/_structure.scss @@ -7,18 +7,16 @@ } @mixin container { - max-width: 640px; - margin-left: auto; - margin-right: auto; - padding-left: 20px; - padding-right: 20px; - @include clearfix; + max-width: 80vw; + margin: 0 auto; + // @include clearfix; } @mixin well { padding: 1.6rem; margin-bottom: 1.6rem; - background: #fff; + background: $light_blue; + @include border-radius; border: 1px solid #eee; border-bottom-color: #ccc; @@ -32,18 +30,18 @@ @include container; @include breakpoint(medium) { - max-width: 840px; + max-width: 1000px; } @include breakpoint(large) { - max-width: 1000px; + max-width: 1440px; } } @mixin container--thin { @include container; - max-width: 512px; + // max-width: 512px; } @mixin container--really-thin { @@ -147,7 +145,7 @@ @mixin flex-grid { @include flex; - flex-flow: row wrap; + flex-flow: column wrap; align-items: stretch; @include ul-no-style; } @@ -155,36 +153,36 @@ @mixin flex-grid__item { flex-basis: 100%; padding: 1rem 1.2rem; - background: #fff; + background-color: $gray; border: 1px solid #eee; border-bottom: 1px solid #ddd; list-style: none; transition: all .35s $fastInEaseOut; margin: 0 0 0.8rem; - @include breakpoint(medium) { - flex-basis: 49%; - max-width: 49%; - margin: 0 2% 0.8rem 0; - - &:nth-child(2n) { - margin-right: 0; - } - } - - @include breakpoint(large) { - flex-basis: 32.5%; - max-width: 32.5%; - margin-right: 1.25%; - - &:nth-child(2n) { - margin-right: 1.25%; - } - - &:nth-child(3n) { - margin-right: 0; - } - } + // @include breakpoint(medium) { + // flex-basis: 100%; + // max-width: 100%; + // margin: 0 2% 0.8rem 0; + + // &:nth-child(2n) { + // margin-right: 0; + // } + // } + + // @include breakpoint(large) { + // flex-basis: 100%; + // max-width: 100%; + // margin-right: 1.25%; + + // &:nth-child(2n) { + // margin-right: 1.25%; + // } + + // &:nth-child(3n) { + // margin-right: 0; + // } + // } } @mixin flex-grid__title { diff --git a/public/quiz-create/css/sass/_typography.scss b/public/quiz-create/css/sass/_typography.scss index 72f0802e..fe3a5502 100644 --- a/public/quiz-create/css/sass/_typography.scss +++ b/public/quiz-create/css/sass/_typography.scss @@ -93,6 +93,9 @@ body #enp-quiz { padding: 1.6em; overflow: auto; max-width: 100%; + overflow: scroll; + max-width: 68vw; + overflow-wrap: break-word; } .code, code, kbd, tt, var { font: .7em Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; diff --git a/public/quiz-create/css/sass/_utilities.scss b/public/quiz-create/css/sass/_utilities.scss index 0e6ead78..5c53eaaa 100644 --- a/public/quiz-create/css/sass/_utilities.scss +++ b/public/quiz-create/css/sass/_utilities.scss @@ -81,16 +81,20 @@ } } +@mixin box-shadow { + box-shadow: 0 2px 2px rgba(0,0,0,.2); +} + @mixin btn--dashed { @include btn; - border: 3px dashed $dark_gray; + border: 1px dashed $darker_gray; background: none; color: #545454; box-shadow: none; &:hover, &:focus { - border: 3px dashed $darker_gray; + border: 1px dashed $darkest_gray; color: $darker_gray; background: rgba(255,255,255,.9); } @@ -98,7 +102,7 @@ @mixin btn--dashed--light { @include btn--dashed; - border: 2px dashed $gray; + border: 2px dashed $darker-gray; color: $dark_gray; transition: all .2s; @@ -213,8 +217,8 @@ .#{$rootBEM}__icon { @include btn--icon__icon--circle ; margin-left: 0; - width: 1.6em; - height: 1.6em; + width: 1em; + height: 1em; background: transparent; fill: #fff; transform: translate3d(0, 0, 0); @@ -277,10 +281,13 @@ @mixin icon--circle { border-radius: 50%; - background: $blue; fill: #fff; } +@mixin border-radius { + border-radius: 3px; +} + @mixin icon--circle--pad { @include icon--circle ; padding: 0.05em; @@ -326,14 +333,14 @@ } @mixin small-uppercase { - font-size: 0.85rem; + font-size: 1rem; text-transform: uppercase; } @mixin hint { font-size: .7rem; font-weight: 300; - color: #565656; + color: $darker_gray; } @mixin green { @@ -397,11 +404,21 @@ padding-bottom: 2rem; } +@mixin xpadding-vertical-top { + padding-top: 2rem; +} + @mixin xpadding-horizontal { padding-right: 2rem; padding-left: 2rem; } +@mixin header-space { + @include breakpoint(large) { + padding-top: 7rem; + } +} + @mixin ul-no-style { list-style: none; margin-left: 0; @@ -431,7 +448,7 @@ letter-spacing: 0; text-align: left; border: none; - border-radius: 0; + border-radius: 3px; min-height: 3.065rem; padding: 1rem 2rem 1rem 1rem; margin: 1.6rem 0 0; @@ -452,6 +469,7 @@ } @mixin accordion__content--closed { + // TEMP DEV comment out margin-top: 0; padding-top: 0rem; animation: slideOutTop .25s $fastInEaseOut forwards; @@ -536,13 +554,19 @@ .enp-accordion-header--open { .enp-accordion-header__icon { - transform: rotateX(180deg) translateY(2px); + transform: rotateX(180deg); } } + .enp-quiz-settings__form .enp-accordion-header { + position: relative; + overflow-y: hidden; + } + .enp-accordion-content { @include accordion__content ; + } .enp-accordion-content--closed { @@ -558,9 +582,11 @@ background: #fff; border: 1px solid #eee; border-bottom: 1px solid #ccc; - padding: 1rem 0.375rem; + padding: 1rem; margin-bottom: 1.6rem; - position: relative; + position: fixed; + bottom: 0; + left: 0; } .enp-quiz-message__title { @@ -575,7 +601,7 @@ .enp-quiz-message--error { border-left: 6px solid $red; - color: $dark_red; + color: $red; } .enp-quiz-message__title--error { diff --git a/public/quiz-create/css/sass/_variables.scss b/public/quiz-create/css/sass/_variables.scss index 6b4bd54a..b24e60df 100644 --- a/public/quiz-create/css/sass/_variables.scss +++ b/public/quiz-create/css/sass/_variables.scss @@ -1,33 +1,43 @@ //fonts -$fontBody: "tablet-gothic", "helvetica neue", helvetica, arial, sans-serif; -$fontTitle: "tablet-gothic", "helvetica neue", helvetica, arial, sans-serif; -//colors -$font: #444; -$title: #5d5e5f; -$blue: #5887c0; -$dark_blue: #242f42; -$light_blue: #eaf4ff; -$light_gray: #f5f5f5; -$transparent_gray: rgba(0, 0, 0, 0.2); -$gray: #bbb; -$dark_gray: #666; -$darker_gray: #444; -$really_light_gray: #f8f8f8; -$link: darken($blue, 6); -$khaki: #cca562; -$green: darken(#58c88f, 10); +$fontBody : Arial,monospace, helvetica, arial, sans-serif; +$fontTitle : Arial,monospace, helvetica, arial, sans-serif; + +// // // colors +$font : #1d1c25; +$background: #FAF9FB; +$title : #5D5E5F; + +// Blues +$blue: #00A9B7; +$dark_blue: #333F48; +$light_blue: lighten($dark_blue, 40); + +// Grays +$light_gray: #FAF9FB; +$really_light_gray: lighten($light_gray, 1); +$gray: darken($light_gray, 2); +$dark_gray: darken($gray, 5); +$darker_gray: darken($dark_gray, 25); +$darkest_gray: darken($dark_gray, 50); + +// Other colors +$khaki: #CCA562; +$green: #60AAAD; $dark_green: darken($green, 8); -$red: #f14021; -$dark_red: darken(#f14021, 8); -$fade_red: #e97763; +$red: #bf5700; +$dark_red: darken($red, 8); +$fade_red: #C1893E; + +// Elements +$link: #bf5700; $link_hover: darken($link, 8); // animation $fastInEaseOut: cubic-bezier(0, 0, 0.3, 1); $breakpoints: ( - "small": 400px, - "medium": 700px, - "large": 1000px, + "small": 400px, + "medium": 700px, + "large": 1000px, ); // ----------------------------------------------------------------------------- @@ -48,39 +58,39 @@ $current-breakpoint: $default-breakpoint; // 5. Then reset $current-breakpoint // 6. If breakpoint name doesn't exist in map, warn the user @mixin breakpoint($breakpoint) { - $value: map-get($breakpoints, $breakpoint); + $value: map-get($breakpoints, $breakpoint); - @if $value != null { - // 1 - $current-breakpoint: $breakpoint !global; // 2 - @media (min-width: $value) { - @content; - } // 3 - $current-breakpoint: $default-breakpoint !global; // 5 - } @else { - @warn "Invalid breakpoint `#{$breakpoint}`."; // 6 - } + @if $value != null { + // 1 + $current-breakpoint: $breakpoint !global; // 2 + @media (min-width: $value) { + @content; + } // 3 + $current-breakpoint: $default-breakpoint !global; // 5 + } @else { + @warn "Invalid breakpoint `#{$breakpoint}`."; // 6 + } } // for only targeting a specific device // NOTE: DOESN'T SUPPORT THE @include placeholders!!! @mixin media($query) { - @if $query == max-small { - $media_query: "max-width: #{map-get($breakpoints, " small ")}"; - } @else if $query == only-medium { - $media_query: "min-width: #{map-get($breakpoints, "medium")}) and (max-width: #{(map-get($breakpoints, "large") - 1px)}"; - } @else if $query == max-medium { - $media_query: "max-width: #{(map-get($breakpoints, "medium") - 1px)}"; - } @else if $query == max-large { - $media_query: "max-width: #{(map-get($breakpoints, "large") - 1px)}"; - } @else { - // just use the number provided as a max width - $media_query: "max-width: #{$query}"; - } + @if $query == max-small { + $media_query: "max-width: #{map-get($breakpoints, " small ")}"; + } @else if $query == only-medium { + $media_query: "min-width: #{map-get($breakpoints, "medium")}) and (max-width: #{(map-get($breakpoints, "large") - 1px)}"; + } @else if $query == max-medium { + $media_query: "max-width: #{(map-get($breakpoints, "medium") - 1px)}"; + } @else if $query == max-large { + $media_query: "max-width: #{(map-get($breakpoints, "large") - 1px)}"; + } @else { + // just use the number provided as a max width + $media_query: "max-width: #{$query}"; + } - @if variable-exists(media_query) { - @media ($media_query) { - @content; - } - } + @if variable-exists(media_query) { + @media ($media_query) { + @content; + } + } } diff --git a/public/quiz-create/includes/class-enp_quiz-dashboard.php b/public/quiz-create/includes/class-enp_quiz-dashboard.php index b4c64933..5895c150 100644 --- a/public/quiz-create/includes/class-enp_quiz-dashboard.php +++ b/public/quiz-create/includes/class-enp_quiz-dashboard.php @@ -22,36 +22,38 @@ */ class Enp_quiz_Dashboard extends Enp_quiz_Create { public $user, - $quizzes, - $paginate; + $quizzes, + $paginate; public function __construct() { $this->user = new Enp_quiz_User(get_current_user_id()); $this->quizzes = $this->set_quizzes(); // we're including this as a fallback for the other pages. // Other page classes will not need to do this - add_filter( 'the_content', array($this, 'load_template' )); + add_filter('the_content', array($this, 'load_template')); // load take quiz styles - add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); - // load take quiz scripts - add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); + add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); + // load take quiz scripts + add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); } - public function load_template() { + public function load_template() + { ob_start(); //Start the class $user = $this->user; $quizzes = $this->quizzes; $paginate = $this->paginate; $nonce_input = $this->get_enp_quiz_nonce(); - include_once( ENP_QUIZ_CREATE_TEMPLATES_PATH.'/dashboard.php' ); + include_once(ENP_QUIZ_CREATE_TEMPLATES_PATH . '/dashboard.php'); $content = ob_get_contents(); if (ob_get_length()) ob_end_clean(); return $content; } - public function set_quizzes() { + public function set_quizzes() + { $quizzes = new Enp_quiz_Search_quizzes(); // build the search from the URL $quizzes->set_variables_from_url_query(); @@ -59,53 +61,69 @@ public function set_quizzes() { // return the selected quizzes $the_quizzes = $quizzes->select_quizzes(); - $this->paginate = new Enp_quiz_Paginate($quizzes->get_total(), $quizzes->get_page(), $quizzes->get_limit(), ENP_QUIZ_DASHBOARD_URL.'user/?'.$_SERVER['QUERY_STRING']); + $this->paginate = new Enp_quiz_Paginate($quizzes->get_total(), $quizzes->get_page(), $quizzes->get_limit(), ENP_QUIZ_DASHBOARD_URL . 'user/?' . $_SERVER['QUERY_STRING']); return $the_quizzes; } - public function enqueue_styles() { - - } + public function enqueue_styles() + { + } - /** - * Register and enqueue the JavaScript for quiz create. - * - * @since 0.0.1 - */ - public function enqueue_scripts() { + /** + * Register and enqueue the JavaScript for quiz create. + * + * @since 0.0.1 + */ + public function enqueue_scripts() + { - wp_register_script( $this->plugin_name.'-dashboard', plugin_dir_url( __FILE__ ) . '../js/dist/dashboard.min.js', array( 'jquery' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-dashboard' ); + wp_register_script($this->plugin_name . '-dashboard', plugin_dir_url(__FILE__) . '../js/dist/dashboard.min.js', array('jquery'), ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-dashboard'); // addClass with SVG shim for old jquery - wp_register_script( $this->plugin_name.'-svg-class-shim', plugin_dir_url( __FILE__ ) . '../js/dist/svg-class-shim.min.js', array( 'jquery' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-svg-class-shim' ); + wp_register_script($this->plugin_name . '-svg-class-shim', plugin_dir_url(__FILE__) . '../js/dist/svg-class-shim.min.js', array('jquery'), ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-svg-class-shim'); // localize scripts for use with JS - wp_localize_script( $this->plugin_name.'-dashboard','quizDashboard', array( - 'ajax_url' => admin_url( 'admin-ajax.php' ), + wp_localize_script($this->plugin_name . '-dashboard', 'quizDashboard', array( + 'ajax_url' => admin_url('admin-ajax.php'), 'quiz_dashboard_url' => ENP_QUIZ_DASHBOARD_URL, - )); - - } + )); + } - public function get_quiz_dashboard_item_title($quiz) { - if(!is_object($quiz)) { + public function get_quiz_dashboard_item_title($quiz) + { + if (!is_object($quiz)) { return false; } $quiz_status = $quiz->get_quiz_status(); - if($quiz_status === 'published') { - $quiz_title = ''.$quiz->get_quiz_title().''; - } elseif($quiz_status === 'draft') { + if ($quiz_status === 'published') { + $quiz_title = '' . $quiz->get_quiz_title() . ''; + } elseif ($quiz_status === 'draft') { // if you want to add back in the edit pencil icons //$quiz_title .= ' '; - $quiz_title = 'Edit '.$quiz->get_quiz_title().''; + $quiz_title = 'Edit ' . $quiz->get_quiz_title() . ''; } return $quiz_title; } - public function get_quiz_actions($quiz) { - if(!is_object($quiz)) { + // public function get_quiz_dashboard_item_title_test($quiz) + // { + // if (!is_object($quiz)) { + // return false; + // } + // $quiz_status = $quiz->get_quiz_status(); + // if ($quiz_status === 'published') { + // $quiz_title_test = '' . $quiz->get_quiz_title_test() . ''; + // } elseif ($quiz_status === 'draft') { + // $quiz_title_test = 'Edit ' . $quiz->get_quiz_title_test() . ''; + // } + // return $quiz_title_test; + // } + + public function get_quiz_actions($quiz) + { + if (!is_object($quiz)) { return false; } // set blank array @@ -113,37 +131,43 @@ public function get_quiz_actions($quiz) { $quiz_status = $quiz->get_quiz_status(); $quiz_id = $quiz->get_quiz_id(); - if($quiz_status === 'published') { + if ($quiz_status === 'published') { $quiz_actions[] = array( - 'title'=>'Results', - 'url' => ENP_QUIZ_RESULTS_URL.$quiz_id, - ); + 'title' => 'Results', + 'url' => ENP_QUIZ_RESULTS_URL . $quiz_id, + 'icon' => 'results', + ); $quiz_actions[] = array( - 'title'=>'Edit', - 'url' => ENP_QUIZ_CREATE_URL.$quiz_id, - ); + 'title' => 'Edit', + 'url' => ENP_QUIZ_CREATE_URL . $quiz_id, + 'icon' => 'edit', + ); $quiz_actions[] = array( - 'title'=>'Settings', - 'url' => ENP_QUIZ_PREVIEW_URL.$quiz_id, - ); + 'title' => 'Settings', + 'url' => ENP_QUIZ_PREVIEW_URL . $quiz_id, + 'icon' => 'settings', + ); $quiz_actions[] = array( - 'title'=>'Embed', - 'url' => ENP_QUIZ_PUBLISH_URL.$quiz_id, - ); - } elseif($quiz_status === 'draft') { + 'title' => 'Embed', + 'url' => ENP_QUIZ_PUBLISH_URL . $quiz_id, + 'icon' => 'share', + ); + } elseif ($quiz_status === 'draft') { $quiz_actions[] = array( - 'title'=>'Edit', - 'url' => ENP_QUIZ_CREATE_URL.$quiz_id, - ); + 'title' => 'Edit', + 'url' => ENP_QUIZ_CREATE_URL . $quiz_id, + 'icon' => 'edit', + ); // see if the quiz is valid. If it is, allow a preview for it $response = new Enp_quiz_Save_quiz_Response(); $validate = $response->validate_quiz_and_questions($quiz); - if($validate === 'valid') { + if ($validate === 'valid') { $quiz_actions[] = array( - 'title'=>'Preview', - 'url' => ENP_QUIZ_PREVIEW_URL.$quiz_id, - ); + 'title' => 'Preview', + 'url' => ENP_QUIZ_PREVIEW_URL . $quiz_id, + 'icon' => 'preview', + ); } } @@ -151,33 +175,37 @@ public function get_quiz_actions($quiz) { return $quiz_actions; } - public function get_dashboard_quiz_views($quiz) { + public function get_dashboard_quiz_views($quiz) + { $views = 0; - if($quiz->get_quiz_status() === 'published') { + if ($quiz->get_quiz_status() === 'published') { $views = $quiz->get_quiz_views(); } return $views; } - public function get_dashboard_quiz_finishes($quiz) { + public function get_dashboard_quiz_finishes($quiz) + { $finishes = 0; - if($quiz->get_quiz_status() === 'published') { + if ($quiz->get_quiz_status() === 'published') { $finishes = $quiz->get_quiz_finishes(); } return $finishes; } - public function get_dashboard_quiz_score_average($quiz) { + public function get_dashboard_quiz_score_average($quiz) + { $score_average = 0; - if($quiz->get_quiz_status() === 'published') { + if ($quiz->get_quiz_status() === 'published') { $score_average = round($quiz->get_quiz_score_average() * 100); } return $score_average; } - public function get_clear_search_url() { + public function get_clear_search_url() + { $query = $_SERVER['QUERY_STRING']; - if(!empty($query)) { + if (!empty($query)) { // regex to strip out the search query string // matches // ex1: search followed by & (& included in result) @@ -188,26 +216,25 @@ public function get_clear_search_url() { // search=test/ //$query = preg_replace('/(?:search=)(?:[\S])+((&|(?=\/)|$))/', '', $query); $query = preg_replace('/search=\S*?(&|(?=\/)|$)/', '', $query); - } - return ENP_QUIZ_DASHBOARD_URL.'user/?'.$query; + return ENP_QUIZ_DASHBOARD_URL . 'user/?' . $query; } - public function include_draft_published_option($include) { + public function include_draft_published_option($include) + { $include_draft_published = false; - if( current_user_can('manage_options') && $include === 'all_users') { + if (current_user_can('manage_options') && $include === 'all_users') { $include_draft_published = true; } else { $pub_quiz_count = count($this->user->get_published_quizzes()); $all_quiz_count = count($this->user->get_quizzes()); // see if there are published quizzes and draft quizzes - if(0 < $pub_quiz_count && $pub_quiz_count < $all_quiz_count) { + if (0 < $pub_quiz_count && $pub_quiz_count < $all_quiz_count) { $include_draft_published = true; } } return $include_draft_published; } - } diff --git a/public/quiz-create/includes/class-enp_quiz-quiz_create.php b/public/quiz-create/includes/class-enp_quiz-quiz_create.php index 5c7ec59b..5616832c 100644 --- a/public/quiz-create/includes/class-enp_quiz-quiz_create.php +++ b/public/quiz-create/includes/class-enp_quiz-quiz_create.php @@ -40,9 +40,9 @@ public function __construct() { // Other page classes will not need to do this add_filter( 'the_content', array($this, 'load_content' )); // load take quiz styles - add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); - // load take quiz scripts - add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); + add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); + // load take quiz scripts + add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); // load js templates add_action('wp_footer', array($this, 'quiz_create_js_templates')); } @@ -67,22 +67,22 @@ public function load_content($content) { public function enqueue_styles() { - } + } - /** - * Register and enqueue the JavaScript for quiz create. - * - * @since 0.0.1 - */ - public function enqueue_scripts() { + /** + * Register and enqueue the JavaScript for quiz create. + * + * @since 0.0.1 + */ + public function enqueue_scripts() { $plugin_name = $this->plugin_name; wp_register_script( $plugin_name.'-accordion', plugin_dir_url( __FILE__ ) . '../js/utilities/accordion.js', array( 'underscore' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $plugin_name.'-accordion' ); + wp_enqueue_script( $plugin_name.'-accordion' ); /*wp_register_script( $plugin_name.'-sticky-header', plugin_dir_url( __FILE__ ) . '../js/utilities/sticky-header.js', array( 'jquery', 'underscore' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $plugin_name.'-sticky-header' );*/ + wp_enqueue_script( $plugin_name.'-sticky-header' );*/ // quiz create script. @@ -104,14 +104,14 @@ public function enqueue_scripts() { wp_enqueue_script( $plugin_name.'-quiz-create' ); wp_localize_script( $plugin_name.'-quiz-create','quizCreate', array( - 'ajax_url' => admin_url( 'admin-ajax.php' ), + 'ajax_url' => admin_url( 'admin-ajax.php' ), 'quiz_create_url' => ENP_QUIZ_CREATE_URL, 'quiz_image_url' => ENP_QUIZ_IMAGE_URL, - )); + )); - } + } public function set_quiz_action_url($quiz_id) { if(is_numeric($quiz_id) || is_int($quiz_id)) { diff --git a/public/quiz-create/includes/class-enp_quiz-quiz_preview.php b/public/quiz-create/includes/class-enp_quiz-quiz_preview.php index 655c1353..9e1fbe79 100644 --- a/public/quiz-create/includes/class-enp_quiz-quiz_preview.php +++ b/public/quiz-create/includes/class-enp_quiz-quiz_preview.php @@ -31,69 +31,72 @@ public function __construct() { $this->validate_quiz_redirect($this->quiz); // we're including this as a fallback for the other pages. // Other page classes will not need to do this - add_filter( 'the_content', array($this, 'load_content' )); + add_filter('the_content', array($this, 'load_content')); // load take quiz styles - add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); - // load take quiz scripts - add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); + add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); + // load take quiz scripts + add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); } - public function load_content($content) { + public function load_content($content) + { ob_start(); $quiz = $this->quiz; $enp_quiz_nonce = parent::$nonce; $enp_current_page = 'preview'; // set the button name - if($quiz->get_quiz_status() === 'published') { + if ($quiz->get_quiz_status() === 'published') { $enp_next_button_name = 'Embed'; } else { $enp_next_button_name = 'Publish'; } - include_once( ENP_QUIZ_CREATE_TEMPLATES_PATH.'/quiz-preview.php' ); + include_once(ENP_QUIZ_CREATE_TEMPLATES_PATH . '/quiz-preview.php'); $content = ob_get_contents(); ob_end_clean(); return $content; } - public function enqueue_styles() { - - } + public function enqueue_styles() + { + } - /** - * Register and enqueue the JavaScript for quiz create. - * - * @since 0.0.1 - */ - public function enqueue_scripts() { + /** + * Register and enqueue the JavaScript for quiz create. + * + * @since 0.0.1 + */ + public function enqueue_scripts() + { /*wp_register_script( $this->plugin_name.'-sticky-header', plugin_dir_url( __FILE__ ) . '../js/utilities/sticky-header.js', array( 'jquery', 'underscore' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-sticky-header' );*/ + wp_enqueue_script( $this->plugin_name.'-sticky-header' );*/ $this->enqueue_color_picker(); - wp_register_script( $this->plugin_name.'-accordion', plugin_dir_url( __FILE__ ) . '../js/utilities/accordion.js', array( 'underscore' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-accordion' ); - - wp_register_script( $this->plugin_name.'-quiz-preview', plugin_dir_url( __FILE__ ) . '../js/quiz-preview.js', array( 'jquery', $this->plugin_name.'-iris', $this->plugin_name.'-accordion', $this->plugin_name.'-limited-chars' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-quiz-preview' ); + wp_register_script($this->plugin_name . '-accordion', plugin_dir_url(__FILE__) . '../js/utilities/accordion.js', array('underscore'), ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-accordion'); - wp_register_script( $this->plugin_name.'-limited-chars', plugin_dir_url( __FILE__ ) . '../js/utilities/limited-chars.js', ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-limited-chars' ); + wp_register_script($this->plugin_name . '-quiz-preview', plugin_dir_url(__FILE__) . '../js/quiz-preview.js', array('jquery', $this->plugin_name . '-iris', $this->plugin_name . '-accordion', $this->plugin_name . '-limited-chars'), ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-quiz-preview'); - } + wp_register_script($this->plugin_name . '-limited-chars', plugin_dir_url(__FILE__) . '../js/utilities/limited-chars.js', ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-limited-chars'); + } /* * Color picker is only enqueud via admin functions usually. Takes a * surprising amount of work to get it working on the front-end * http://wordpress.stackexchange.com/questions/82718/how-do-i-implement-the-wordpress-iris-picker-into-my-plugin-on-the-front-end + * TODO: add updated color picker: https://code.tutsplus.com/articles/how-to-use-wordpress-color-picker-api--wp-33067 */ - public function enqueue_color_picker() { + public function enqueue_color_picker() + { - wp_register_script( $this->plugin_name.'-iris', plugin_dir_url( __FILE__ ) . '../js/dist/iris.min.js', array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-iris' ); + wp_register_script($this->plugin_name . '-iris', plugin_dir_url(__FILE__) . '../js/dist/iris.min.js', array('jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch'), ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-iris'); } - + } diff --git a/public/quiz-create/includes/class-enp_quiz-quiz_results.php b/public/quiz-create/includes/class-enp_quiz-quiz_results.php index f9336c8a..9abbe543 100644 --- a/public/quiz-create/includes/class-enp_quiz-quiz_results.php +++ b/public/quiz-create/includes/class-enp_quiz-quiz_results.php @@ -20,101 +20,105 @@ * @subpackage Enp_quiz/public/Quiz_results * @author Engaging News Project */ -class Enp_quiz_Quiz_results extends Enp_quiz_Create { - public $quiz; - public function __construct() { - // load the quiz - $this->quiz = $this->load_quiz(); - $this->quiz->quiz_score_chart_data = $this->quiz->get_quiz_score_chart_data(); - // we're including this as a fallback for the other pages. - // Other page classes will not need to do this - add_filter( 'the_content', array($this, 'load_template' )); - // load take quiz styles +class Enp_quiz_Quiz_results extends Enp_quiz_Create +{ + public $quiz; + public function __construct() + { + // load the quiz + $this->quiz = $this->load_quiz(); + $this->quiz->quiz_score_chart_data = $this->quiz->get_quiz_score_chart_data(); + // we're including this as a fallback for the other pages. + // Other page classes will not need to do this + add_filter('the_content', array($this, 'load_template')); + // load take quiz styles add_action('wp_enqueue_scripts', array($this, 'enqueue_styles')); // load take quiz scripts add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts')); - // add in json data for scores - add_action('wp_footer', array($this, 'quiz_results_json')); - // add an empty slider data object - add_action('wp_head', array($this, 'setup_slider_results_json')); - } - - public function load_template() { - ob_start(); - //Start the class - $quiz = $this->quiz; - include_once( ENP_QUIZ_CREATE_TEMPLATES_PATH.'quiz-results.php' ); - $content = ob_get_contents(); - if (ob_get_length()) ob_end_clean(); - - return $content; - } - - public function enqueue_styles() { - wp_register_style( $this->plugin_name.'-chartist', plugin_dir_url( __FILE__ ) . '../css/chartist.min.css', array(), ENP_QUIZ_VERSION ); - wp_enqueue_style( $this->plugin_name.'-chartist' ); + // add in json data for scores + add_action('wp_footer', array($this, 'quiz_results_json')); + // add an empty slider data object + add_action('wp_head', array($this, 'setup_slider_results_json')); } - public function quiz_results_json() { + public function load_template() + { + ob_start(); + //Start the class + $quiz = $this->quiz; + include_once(ENP_QUIZ_CREATE_TEMPLATES_PATH . 'quiz-results.php'); + $content = ob_get_contents(); + if (ob_get_length()) ob_end_clean(); - $quiz_results = $this->quiz->quiz_score_chart_data; + return $content; + } - echo ''; + public function enqueue_styles() + { + wp_register_style($this->plugin_name . '-chartist', plugin_dir_url(__FILE__) . '../css/chartist.min.css', array(), ENP_QUIZ_VERSION); + wp_enqueue_style($this->plugin_name . '-chartist'); + } + + public function quiz_results_json() + { - } + $quiz_results = $this->quiz->quiz_score_chart_data; - public function setup_slider_results_json() { - echo ''; - } + } - public function slider_results_json($slider) { + public function setup_slider_results_json() + { + echo ''; + } - $slider_responses_chart_data = $slider->get_slider_responses_chart_data(); + public function slider_results_json($slider) + { - echo ''; + $slider_responses_chart_data = $slider->get_slider_responses_chart_data(); - } + echo ''; + } /** * Register and enqueue the JavaScript for quiz create. * * @since 0.0.1 */ - public function enqueue_scripts() { - // charts - wp_register_script( $this->plugin_name.'-charts', plugin_dir_url( __FILE__ ) . '../js/utilities/chartist.min.js', ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-charts' ); - // accordion - wp_register_script( $this->plugin_name.'-accordion', plugin_dir_url( __FILE__ ) . '../js/utilities/accordion.js', array( 'jquery' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-accordion' ); - - // general scripts - wp_register_script( $this->plugin_name.'-quiz-results', plugin_dir_url( __FILE__ ) . '../js/dist/quiz-results.js', array( 'jquery', 'underscore', $this->plugin_name.'-accordion', $this->plugin_name.'-charts' ), ENP_QUIZ_VERSION, true ); - wp_enqueue_script( $this->plugin_name.'-quiz-results' ); - + public function enqueue_scripts() + { + // charts + wp_register_script($this->plugin_name . '-charts', plugin_dir_url(__FILE__) . '../js/utilities/chartist.min.js', ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-charts'); + // accordion + wp_register_script($this->plugin_name . '-accordion', plugin_dir_url(__FILE__) . '../js/utilities/accordion.js', array('jquery'), ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-accordion'); + + // general scripts + wp_register_script($this->plugin_name . '-quiz-results', plugin_dir_url(__FILE__) . '../js/dist/quiz-results.js', array('jquery', 'underscore', $this->plugin_name . '-accordion', $this->plugin_name . '-charts'), ENP_QUIZ_VERSION, true); + wp_enqueue_script($this->plugin_name . '-quiz-results'); } - public function option_correct_icon($correct) { - if($correct === '1') { - $svg = ' - - '; - } else { - $svg = ' - - '; - } - - return $svg; - } - - + public function option_correct_icon($correct) + { + if ($correct === '1') { + $svg = ' + + '; + } else { + $svg = ' + + '; + } + + return $svg; + } } diff --git a/public/quiz-create/js/dashboard.js b/public/quiz-create/js/dashboard.js index d136f2b7..9e98515f 100644 --- a/public/quiz-create/js/dashboard.js +++ b/public/quiz-create/js/dashboard.js @@ -47,7 +47,7 @@ $(document).on('click', '.enp-view-toggle', function() { $('.enp-dash-item__nav').each(function() { $(this).addClass('enp-dash-item__nav--collapsible') .attr('aria-hidden', true) - .before(''); + .before(''); }); /** diff --git a/public/quiz-create/js/dist/dashboard.js b/public/quiz-create/js/dist/dashboard.js index 950fbcc6..690305f6 100644 --- a/public/quiz-create/js/dist/dashboard.js +++ b/public/quiz-create/js/dist/dashboard.js @@ -47,7 +47,7 @@ $(document).on('click', '.enp-view-toggle', function() { $('.enp-dash-item__nav').each(function() { $(this).addClass('enp-dash-item__nav--collapsible') .attr('aria-hidden', true) - .before(''); + .before(''); }); /** diff --git a/public/quiz-create/js/dist/dashboard.min.js b/public/quiz-create/js/dist/dashboard.min.js index 451d42c2..a842f641 100644 --- a/public/quiz-create/js/dist/dashboard.min.js +++ b/public/quiz-create/js/dist/dashboard.min.js @@ -1 +1 @@ -jQuery(document).ready(function(m){function n(e){e.removeClass("enp-dash-item--menu-active"),m(".enp-dash-item__menu-action",e).attr("aria-expanded",!1),m(".enp-dash-item__nav",e).attr("aria-hidden",!0)}function i(e,a,t){if(void 0===t.responseJSON)return o(),u("Something went wrong. Please reload the page and try again.","error"),!1;!function(e){void 0!==e.success&&0

'+e+"

"),m(".enp-message-"+t).delay(3500).fadeOut(function(){m(".enp-message-"+t).fadeOut()})}m(".enp-search-quizzes__button").addClass("enp-screen-reader-text"),m(document).on("change",".enp-search-quizzes__select",function(){m("#enp-search-quizzes").submit()}),m(".enp-dash-item__nav").each(function(){m(this).addClass("enp-dash-item__nav--collapsible").attr("aria-hidden",!0).before('')}),m(document).on("click",".enp-dash-item__menu-action",function(){var e,a=m(this).closest(".enp-dash-item");if(a.hasClass("enp-dash-item--menu-active"))n(a);else{var t=m(".enp-dash-item--menu-active");0
');var s=function(e,a){var t;"delete-quiz"===a?(r=m(".enp-dash-item__quiz-id",e).val(),c=document.getElementById("enp-delete-quiz-"+r),(l=new FormData(c)).append("enp-quiz-submit","delete-quiz"),l.append("action","save_quiz"),t=l):"delete-ab-test"===a&&(s=m(".enp-dash-item__ab-test-id",n=e).val(),i=m(".enp-dash-item__quiz-id-a",n).val(),d=m(".enp-dash-item__quiz-id-b",n).val(),o=document.getElementById("enp-delete-ab-test-"+s+"a"+i+"b"+d),(u=new FormData(o)).append("enp-ab-test-submit","delete-ab-test"),u.append("action","save_ab_test"),t=u);var n,s,i,d,o,u;var r,c,l;return t}(t,n);m.ajax({type:"POST",url:quizDashboard.ajax_url,data:s,processData:!1,contentType:!1}).done(i).fail(function(e,a,t){console.log("AJAX failed",e.getAllResponseHeaders(),a,t)}).then(function(e,a,t){}).always(function(){o()})}),m("#enp-quiz").append('
')}); \ No newline at end of file +jQuery(document).ready(function(p){function n(e){e.removeClass("enp-dash-item--menu-active"),p(".enp-dash-item__menu-action",e).attr("aria-expanded",!1),p(".enp-dash-item__nav",e).attr("aria-hidden",!0)}function i(e,a,t){if(void 0===t.responseJSON)return o(),u("Something went wrong. Please reload the page and try again.","error"),!1;!function(e){void 0!==e.success&&0

'+e+"

"),p(".enp-message-"+t).delay(3500).fadeOut(function(){p(".enp-message-"+t).fadeOut()})}p(".enp-search-quizzes__button").addClass("enp-screen-reader-text"),p(document).on("change",".enp-search-quizzes__select",function(){p("#enp-search-quizzes").submit()}),p(".enp-dash-item__nav").each(function(){p(this).addClass("enp-dash-item__nav--collapsible").attr("aria-hidden",!0).before('')}),p(document).on("click",".enp-dash-item__menu-action",function(){var e,a=p(this).closest(".enp-dash-item");if(a.hasClass("enp-dash-item--menu-active"))n(a);else{var t=p(".enp-dash-item--menu-active");0
');var s=function(e,a){var t;"delete-quiz"===a?(r=p(".enp-dash-item__quiz-id",e).val(),c=document.getElementById("enp-delete-quiz-"+r),(l=new FormData(c)).append("enp-quiz-submit","delete-quiz"),l.append("action","save_quiz"),t=l):"delete-ab-test"===a&&(s=p(".enp-dash-item__ab-test-id",n=e).val(),i=p(".enp-dash-item__quiz-id-a",n).val(),d=p(".enp-dash-item__quiz-id-b",n).val(),o=document.getElementById("enp-delete-ab-test-"+s+"a"+i+"b"+d),(u=new FormData(o)).append("enp-ab-test-submit","delete-ab-test"),u.append("action","save_ab_test"),t=u);var n,s,i,d,o,u;var r,c,l;return t}(t,n);p.ajax({type:"POST",url:quizDashboard.ajax_url,data:s,processData:!1,contentType:!1}).done(i).fail(function(e,a,t){console.log("AJAX failed",e.getAllResponseHeaders(),a,t)}).then(function(e,a,t){}).always(function(){o()})}),p("#enp-quiz").append('
')}); \ No newline at end of file diff --git a/public/quiz-create/js/dist/quiz-create.js b/public/quiz-create/js/dist/quiz-create.js index 09fa8dc5..f6c1a82d 100644 --- a/public/quiz-create/js/dist/quiz-create.js +++ b/public/quiz-create/js/dist/quiz-create.js @@ -202,7 +202,6 @@ function replaceAttributes(el, pattern, replace) { att = atts[i]; newAttrVal = att.nodeValue.replace(pattern, replace); - // if the new val and the old val match, then nothing was replaced, // so we can skip it if(newAttrVal !== att.nodeValue) { @@ -222,6 +221,79 @@ _.middleNumber = function(a, b) { return (a + b)/2; }; +// // // // // // // // // +// Tinymce init for "add question" button +// // // // // // // // // +var currentSelector; +function addTinymce( obj ) { + var currentSelector = $('#enp-question-explanation__'+obj+''); + + tinymce.init({ + selector: '#enp-question-explanation__'+obj+'', // change this value according to your HTML + menubar: false, + statusbar: false, + toolbar: false, + inliine: true, + plugins: 'quickbars link autosave', + toolbar: 'bold italic link blockquote', + quickbars_selection_toolbar: 'bold italic link blockquote', + quickbars_insert_toolbar: false, + quickbars_image_toolbar: false, + link_assume_external_targets: 'http', + placeholder: 'Your cerebellum can predict your own actions, so you\'re unable to \'surprise\' yourself with a tickle.', + setup: function (editor) { + editor.on('click', function () { + tinymce.activeEditor.execCommand('mceFocus'); + }); + editor.on('blur', function () { + var tinyEditorContent = tinymce.activeEditor.getContent({format: 'raw'}); + var tContent = currentSelector.innerHTML = tinyEditorContent; + }); + } + }); +} + +// TODO: attempt to inject tinymce html +function setTinymceContent( element, editorContent ) { + var html = editorContent; + tinymce.activeEditor.setContent(html, {format: 'raw'}); + var data = $('#enp-quiz-create-form').serializeArray(); +} + +$('.enp-quiz-submit').click(function(e){ +tinymce.triggerSave(); + $theQuestions = $('.enp-accordion-container'); + $.each($theQuestions, function(i) { + obj = getQuestionID(this); + $(this).find('#enp-question-explanation__'+obj+''); + var editorContent = tinymce.activeEditor.getContent({format: 'raw'}); + var element = $(this); + setTinymceContent( element, editorContent ) + }); +}); + +function injectTinymce( obj ) { +$('.enp-question-content').each(function() { + var accordion = $(this).find('.enp-answer-explanation__textarea').val(); + }); +} + +function addAnswerExplanationEditor( response ) { + var $question, + $question_id, + + // get the questions + $question = response.question; + + // loop through all questions + $( $question ).each(function( $question_id ) { + // get the question_id of each + $question_id = this.question_id; + // click on any of the triggers go ahead and add the tinymce + addTinymce( $question_id ); + }); +} + /* * Set-up Underscore Templates */ @@ -293,6 +365,24 @@ if($('.enp-message__item--error').length !== 0) { } +// tinymce: Prevent jQuery UI dialog from blocking focusin +$(document).on('focusin', function(e) { + if ($(e.target).closest(".tox-tinymce, .tox-tinymce-aux, .moxman-window, .tam-assetmanager-root").length) { + e.stopImmediatePropagation(); + } +}); + +// get each question container +$theQuestions = $('.enp-accordion-container'); + +// for each question. . . +$.each($theQuestions, function(i) { + // get question id's + obj = getQuestionID(this); + // init tinymce for each question + addTinymce( obj ); +}); + /* * General UX interactions to make a better user experience */ @@ -1120,9 +1210,12 @@ function setUpSliderTemplate(sliderOptionsContainer) { enp_accordion__setup(accordion); } + // ajax submission $(document).on('click', '.enp-quiz-submit', function(e) { + // tinymce.triggerSave(); + if(!$(this).hasClass('enp-btn--next-step')) { e.preventDefault(); // if new quiz flag is 1, then check for a title before continue @@ -1168,16 +1261,18 @@ function saveQuiz(userAction) { // get form var quizForm = document.getElementById("enp-quiz-create-form"); + // create formData object var fd = new FormData(quizForm); // set our submit button value fd.append('enp-quiz-submit', userAction); // append our action for wordpress AJAX call fd.append('action', 'save_quiz'); - + // this sets up the immediate actions so it feels faster to the user // Optimistic Ajax setTemp(userAction); + tinyMCE.triggerSave(); // desroy successs messages so they don't stack destroySuccessMessages(); @@ -1190,6 +1285,7 @@ function saveQuiz(userAction) { } ) // success .done( quizSaveSuccess ) + .fail( function( jqXHR, textStatus, errorThrown ) { console.log( 'AJAX failed', jqXHR.getAllResponseHeaders(), textStatus, errorThrown ); } ) @@ -1203,7 +1299,7 @@ function saveQuiz(userAction) { } function quizSaveSuccess( response, textStatus, jqXHR ) { - //console.log(jqXHR.responseJSON); + // console.log(jqXHR.responseJSON); if(jqXHR.responseJSON === undefined) { // error :( unsetWait(); @@ -1232,6 +1328,7 @@ function quizSaveSuccess( response, textStatus, jqXHR ) { new_mcOption = getNewMCOption(new_questionID, response.question); new_sliderID = newQuestionResponse.slider.slider_id; addQuestion(new_questionID, new_mcOption.mc_option_id, new_sliderID); + addAnswerExplanationEditor( response ); } else { unset_tempAddQuestion(); } @@ -1315,6 +1412,7 @@ function setNewQuiz(response) { var pageTitle = $('.enp-quiz-title__textarea').val(); pageTitle = 'Quiz: '+pageTitle; var urlPath = quizCreate.quiz_create_url + response.quiz_id; + addAnswerExplanationEditor( response ); window.history.pushState({"html":html,"pageTitle":pageTitle},"", urlPath); } @@ -1324,6 +1422,7 @@ function setTemp(userAction) { if(userAction.indexOf('add-question') > -1) { // match the number for the ID temp_addQuestion(); + // addAnswerExplanationEditor( response ); } else if(userAction.indexOf('add-mc-option__question') > -1) { pattern = /add-mc-option__question-/g; diff --git a/public/quiz-create/js/dist/quiz-create.min.js b/public/quiz-create/js/dist/quiz-create.min.js index aa90a41a..d8b6bdc6 100644 --- a/public/quiz-create/js/dist/quiz-create.min.js +++ b/public/quiz-create/js/dist/quiz-create.min.js @@ -1 +1 @@ -jQuery(document).ready(function(c){function m(e){return c("#enp-question--"+e+"__accordion-container")}function d(n){return c(".enp-question-content").each(function(e){if(parseInt(c(".enp-question-id",this).val())===parseInt(n))return questionIndex=e,!1}),questionIndex}function n(e){return parseInt(c(".enp-question-id",e).val())}function q(e,n){for(var i in n)if(parseInt(n[i].question_id)===parseInt(e))for(var t in n[i].mc_option)if("insert"===n[i].mc_option[t].action)return n[i].mc_option[t];return!1}function g(e,n){for(var i in n)if(parseInt(n[i].question_id)===parseInt(e))return n[i];return!1}function h(e){return'
'}function i(e){var n;n={title:t(c(".enp-question-title__textarea",e).val()),content:e,baseID:e.attr("id"),container:!0},n=enp_accordion__create_headers(n),enp_accordion__setup(n)}function t(e){return void 0===e||""===e?e="Question":200

'+e+"

"),c(".enp-message-"+i).delay(3500).fadeOut(function(){c(".enp-message-"+i).fadeOut()})}function b(){c(".enp-question-content").each(function(e){!function(e,n){var i=c("#enp-question--"+e),t=c(".enp-question-order",i),o=t.val();if(parseInt(o)!==n){console.log("updating "+e+" from "+o+" to "+n);var s=new RegExp("enp_question\\["+o+"\\]");r(document.getElementById("enp-question--"+e),s,"enp_question["+n+"]"),t.val(n)}}(n(c(this)),e)})}function C(e){c(".enp-mc-option--inputs",e).each(function(e){!function(e,n){var i=c(".enp-mc-option-order",e),t=i.val();if(parseInt(t)!==n){var o=new RegExp("\\]\\[mc_option\\]\\["+t+"\\]\\[");r(document.getElementById(e.attr("id")),o,"][mc_option]["+n+"]["),i.val(n)}}(c(this),e)})}function x(){var e;templateParams={question_id:"newQuestionTemplateID",question_position:"newQuestionPosition"},c(".enp-quiz-create__questions").append(o(templateParams)),newQuestion=c("#enp-question--newQuestionTemplateID"),questionImageUpload=I(templateParams),c(".enp-question-image__input",newQuestion).after(questionImageUpload),c(".enp-image-upload__label, .enp-button__question-image-upload, .enp-question-image-upload__input",newQuestion).hide(),c(".enp-question-image__input",newQuestion).after(f()),R("newQuestionTemplateID"),e="newQuestionTemplateID",temp_slider=l({question_id:e,question_position:"newQuestionPosition",slider_id:"newSliderID",slider_range_low:"0",slider_range_high:"10",slider_correct_low:"5",slider_correct_high:"5",slider_increment:"1",slider_prefix:"",slider_suffix:""}),c(temp_slider).appendTo("#enp-question--"+e+" .enp-question"),i(c("#enp-question--newQuestionTemplateID")),c("#enp-question--newQuestionTemplateID__accordion-header").focus()}function z(e,n,i){var t,o;r(document.getElementById("enp-question--newQuestionTemplateID__accordion-container"),/newQuestionTemplateID/,e),r(document.getElementById("enp-question--"+e),/newQuestionPosition/,d(e)),O(n,e),t=i,o=e,new_slider_el=document.querySelector("#enp-question--"+o+" .enp-slider-options"),r(new_slider_el,/newQuestionPosition/,d(o)),r(new_slider_el,/newSliderID/,t),V("#enp-question--"+o+" .enp-slider-options")}function A(e){var n;n=c("#enp-mc-option--"+e).closest(".enp-question-content"),c("#enp-mc-option--"+e).remove(),C(n)}function R(e){temp_mc_option=s({question_id:e,question_position:"newQuestionPosition",mc_option_id:"newMCOptionID",mc_option_position:"newMCOptionPosition"}),c("#enp-question--"+e+" .enp-mc-option--add").before(temp_mc_option),c("#enp-question--"+e+" .enp-mc-option--inputs:last .enp-mc-option__input").focus()}function O(e,n){new_mcOption_el=document.querySelector("#enp-question--"+n+" #enp-mc-option--newMCOptionID"),r(new_mcOption_el,/newQuestionPosition/,d(n)),new_mc_option_index=c("#enp-question--"+n+" .enp-mc-option--inputs").length-1,r(new_mcOption_el,/newMCOptionPosition/,new_mc_option_index),r(new_mcOption_el,/newMCOptionID/,e)}function P(e,n){low=e.slider("option","min"),high=e.slider("option","max"),interval=e.slider("option","step"),sliderValue=y(low,high,interval),e.slider("value",sliderValue),n.val(sliderValue)}function y(e,n,i){return e=parseFloat(e),n=parseFloat(n),i=parseFloat(i),totalIntervals=(n-e)/i,middleInterval=totalIntervals/2*i+e,remainder=middleInterval%i,middleInterval-=remainder,middleInterval}function F(e,n){return e.closest(".enp-slider-options").find(n)}function Q(e){var n,i;n=S(e),i=c(".enp-slider-correct-low__input",n),T(e),c(".enp-slider-correct-answer-range",n).removeClass("enp-slider-correct-answer-range--remove-range").addClass("enp-slider-correct-answer-range--add-range").html('Add Answer Range'),lowCorrectVal=i.val(),c(".enp-slider-correct-high__input",n).val(lowCorrectVal),i.data("correctRangeInUse",!1)}function T(e){var n;n=S(e),c(".enp-slider-correct__helper",n).addClass("enp-slider-correct__helper--hidden").text(""),c(".enp-slider-correct-high__input-container",n).addClass("enp-slider-correct-high__input-container--hidden"),c(".enp-slider-correct-low__label",n).text("Slider Answer")}function k(e){var n,i,t;n=S(e),i=c(".enp-slider-correct-low__input",n),t=c(".enp-slider-correct-high__input",n),c(".enp-slider-correct-low__label",n).text("Slider Answer Low"),c(".enp-slider-correct__helper",n).removeClass("enp-slider-correct__helper--hidden").text("to"),c(".enp-slider-correct-high__input-container",n).removeClass("enp-slider-correct-high__input-container--hidden"),c(".enp-slider-correct-answer-range",n).removeClass("enp-slider-correct-answer-range--add-range").addClass("enp-slider-correct-answer-range--remove-range").html('Remove Answer Range'),highCorrectVal=parseFloat(t.val()),lowCorrectVal=parseFloat(i.val()),increment=parseFloat(c(".enp-slider-increment__input",n).val()),highCorrectVal<=lowCorrectVal&&t.val(lowCorrectVal+increment),t.focus(),i.data("correctRangeInUse",!0)}function S(e){var n;return c(".enp-slider-options").each(function(){if(c(this).data("sliderID")===e)return n=c(this),!1}),n}function V(e){var n,i,t,o,s,r;sliderID=c(".enp-slider-id",e).val(),c(e).data("sliderID",sliderID),t=c(".enp-slider-id",n=e).val(),o=parseFloat(c(".enp-slider-range-low__input",n).val()),s=parseFloat(c(".enp-slider-range-high__input",n).val()),r=parseFloat(c(".enp-slider-increment__input",n).val()),i={slider_id:t,slider_range_low:o,slider_range_high:s,slider_start:y(o,s,r),slider_increment:r,slider_prefix:c(".enp-slider-prefix__input",n).val(),slider_suffix:c(".enp-slider-suffix__input",n).val(),slider_input_size:c(".enp-slider-range-high__input",n).val().length},slider=u(i),sliderExample=c('
').html(slider),c(sliderExample).prependTo(n),c(".enp-slider__label",n).after(''),c(".enp-slider__label",n).remove(),M(c(".enp-slider-input__input",n),i),lowCorrectInput=c(".enp-slider-correct-low__input",e),highCorrectInput=c(".enp-slider-correct-high__input",e),lowCorrectInput.data("highCorrectInput",highCorrectInput),highCorrectInput.data("lowCorrectInput",lowCorrectInput),correctLow=parseFloat(lowCorrectInput.val()),correctHigh=parseFloat(highCorrectInput.val()),lowCorrectInput.is("[readonly]")?correctLow===correctHigh&&T(sliderID):(c(".enp-slider-correct-high__container",e).append(''),correctLow===correctHigh?Q(sliderID):k(sliderID)),c("input, button",e).each(function(){c(this).data("sliderID",sliderID)}),accordion={title:"Advanced Slider Options",content:c(".enp-slider-advanced-options__content",e),baseID:sliderID},accordion=enp_accordion__create_headers(accordion),enp_accordion__setup(accordion)}function E(e,n,i){if(void 0===i.responseJSON)return H(),D("Something went wrong. Please reload the page and try again.","error"),!1;if(e=c.parseJSON(i.responseJSON),userActionAction=e.user_action.action,userActionElement=e.user_action.element,"success"===e.status&&"insert"===e.action&&(!function(e){c("#enp-quiz-id").val(e.quiz_id);var n=c("body").innerHTML,i=c(".enp-quiz-title__textarea").val();i="Quiz: "+i;var t=quizCreate.quiz_create_url+e.quiz_id;window.history.pushState({html:n,pageTitle:i},"",t)}(e),c(".enp-quiz-form__save").show().addClass("enp-quiz-form__save--reveal"),c(".enp-btn--next-step").show().addClass("enp-btn--next-step--reveal"),c(".enp-quiz-breadcrumbs__link--preview").removeClass("enp-quiz-breadcrumbs__link--disabled")),"add"==userActionAction&&"question"==userActionElement){var t=function(e){for(var n in e)if("insert"===e[n].action)return e[n];return!1}(e.question);!1!==t&&void 0!==t.question_id&&0')):temp_unsetAddQuestionImage(questionID)):"delete"==userActionAction&&"question_image"==userActionElement&&(questionID=e.user_action.details.question_id,questionResponse=g(questionID,e.question),!1!==questionResponse&&"update"===questionResponse.action&&"success"===questionResponse.status?(a=questionResponse,questionID=a.question_id,a=c("#enp-question--"+questionID),c(".enp-question-image__container",a).remove(),c(".enp-question-image__input",a).val(""),templateParams={question_id:questionID,question_position:d(questionID)},c(".enp-question-image__input",a).after(I(templateParams)),c(".enp-image-upload__label, .enp-button__question-image-upload, .enp-question-image-upload__input",a).hide(),c(".enp-question-image__input",a).after(f()),c(".enp-question-image-upload",a).focus()):(r=questionID,c("#enp-question--"+r+" .enp-question-image__container").removeClass("enp-question__image--remove"),oldImageFilename=c("#enp-question-image-"+r).data("image_filename"),c("#enp-question-image-"+r).val(oldImageFilename),D("Image could not be deleted. Please reload the page and try again.","error")));var r,a,l,u,p;!function(e){void 0!==e.success&&0